From ed9cb87ac31dc25a65a148860fc18bdd508dd3ea Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 25 Nov 2007 18:07:19 +0000 Subject: [PATCH 01/82] Full merge from trunk at revision 41356 of entire boost-root tree. [SVN r41369] --- doc/Jamfile | 25 - doc/acknowledgements.qbk | 23 - doc/adapted.qbk | 168 -- doc/algorithm.qbk | 2523 ----------------- doc/changelog.qbk | 16 - doc/container.qbk | 1655 ----------- doc/extension.qbk | 598 ---- doc/functional.qbk | 1702 ----------- doc/fusion.qbk | 321 --- doc/html/fusion/acknowledgements.html | 57 - doc/html/fusion/adapted.html | 77 - doc/html/fusion/adapted/boost__array.html | 85 - doc/html/fusion/adapted/boost__tuple.html | 81 - doc/html/fusion/adapted/boost__variant.html | 84 - doc/html/fusion/adapted/mpl_sequence.html | 101 - doc/html/fusion/adapted/std__pair.html | 84 - doc/html/fusion/algorithm.html | 114 - doc/html/fusion/algorithm/iteration.html | 59 - .../fusion/algorithm/iteration/functions.html | 48 - .../iteration/functions/accumulate.html | 203 -- .../algorithm/iteration/functions/fold.html | 203 -- .../iteration/functions/for_each.html | 179 -- .../algorithm/iteration/metafunctions.html | 48 - .../iteration/metafunctions/accumulate.html | 181 -- .../iteration/metafunctions/fold.html | 181 -- .../iteration/metafunctions/for_each.html | 163 -- doc/html/fusion/algorithm/query.html | 58 - .../fusion/algorithm/query/functions.html | 52 - .../fusion/algorithm/query/functions/all.html | 182 -- .../fusion/algorithm/query/functions/any.html | 182 -- .../algorithm/query/functions/count.html | 169 -- .../algorithm/query/functions/count_if.html | 168 -- .../algorithm/query/functions/find.html | 174 -- .../algorithm/query/functions/find_if.html | 173 -- .../algorithm/query/functions/none.html | 182 -- .../fusion/algorithm/query/metafunctions.html | 52 - .../algorithm/query/metafunctions/all.html | 166 -- .../algorithm/query/metafunctions/any.html | 166 -- .../algorithm/query/metafunctions/count.html | 161 -- .../query/metafunctions/count_if.html | 161 -- .../algorithm/query/metafunctions/find.html | 163 -- .../query/metafunctions/find_if.html | 164 -- .../algorithm/query/metafunctions/none.html | 166 -- doc/html/fusion/algorithm/transformation.html | 71 - .../algorithm/transformation/functions.html | 64 - .../transformation/functions/clear.html | 145 - .../transformation/functions/erase.html | 213 -- .../transformation/functions/erase_key.html | 172 -- .../transformation/functions/filter.html | 169 -- .../transformation/functions/filter_if.html | 172 -- .../transformation/functions/insert.html | 190 -- .../functions/insert_range.html | 193 -- .../transformation/functions/join.html | 171 -- .../transformation/functions/pop_back.html | 147 - .../transformation/functions/pop_front.html | 147 - .../transformation/functions/push_back.html | 168 -- .../transformation/functions/push_front.html | 169 -- .../transformation/functions/remove.html | 169 -- .../transformation/functions/remove_if.html | 171 -- .../transformation/functions/replace.html | 190 -- .../transformation/functions/replace_if.html | 199 -- .../transformation/functions/reverse.html | 146 - .../transformation/functions/transform.html | 297 -- .../transformation/functions/zip.html | 158 -- .../transformation/metafunctions.html | 64 - .../transformation/metafunctions/clear.html | 139 - .../transformation/metafunctions/erase.html | 196 -- .../metafunctions/erase_key.html | 163 -- .../transformation/metafunctions/filter.html | 165 -- .../metafunctions/filter_if.html | 166 -- .../transformation/metafunctions/insert.html | 184 -- .../metafunctions/insert_range.html | 186 -- .../transformation/metafunctions/join.html | 98 - .../metafunctions/pop_back.html | 143 - .../metafunctions/pop_front.html | 138 - .../metafunctions/push_back.html | 159 -- .../metafunctions/push_front.html | 159 -- .../transformation/metafunctions/remove.html | 165 -- .../metafunctions/remove_if.html | 166 -- .../transformation/metafunctions/replace.html | 162 -- .../metafunctions/replace_if.html | 183 -- .../transformation/metafunctions/reverse.html | 142 - .../metafunctions/transform.html | 297 -- .../transformation/metafunctions/zip.html | 105 - doc/html/fusion/change_log.html | 59 - doc/html/fusion/container.html | 74 - doc/html/fusion/container/cons.html | 324 --- doc/html/fusion/container/conversion.html | 58 - .../container/conversion/functions.html | 49 - .../conversion/functions/as_list.html | 138 - .../conversion/functions/as_map.html | 145 - .../conversion/functions/as_set.html | 142 - .../conversion/functions/as_vector.html | 138 - .../container/conversion/metafunctions.html | 49 - .../conversion/metafunctions/as_list.html | 134 - .../conversion/metafunctions/as_map.html | 141 - .../conversion/metafunctions/as_set.html | 138 - .../conversion/metafunctions/as_vector.html | 134 - doc/html/fusion/container/generation.html | 58 - .../container/generation/functions.html | 54 - .../generation/functions/list_tie.html | 149 - .../generation/functions/make_cons.html | 168 -- .../generation/functions/make_list.html | 155 - .../generation/functions/make_map.html | 196 -- .../generation/functions/make_set.html | 167 -- .../generation/functions/make_vector.html | 155 - .../generation/functions/map_tie.html | 175 -- .../container/generation/functions/tiers.html | 105 - .../generation/functions/vector_tie.html | 149 - .../container/generation/metafunctions.html | 53 - .../generation/metafunctions/list_tie.html | 146 - .../generation/metafunctions/make_cons.html | 155 - .../generation/metafunctions/make_list.html | 147 - .../generation/metafunctions/make_map.html | 190 -- .../generation/metafunctions/make_set.html | 159 -- .../generation/metafunctions/make_vector.html | 147 - .../generation/metafunctions/map_tie.html | 171 -- .../generation/metafunctions/vector_tie.html | 146 - doc/html/fusion/container/list.html | 291 -- doc/html/fusion/container/map.html | 280 -- doc/html/fusion/container/set.html | 273 -- doc/html/fusion/container/vector.html | 307 -- doc/html/fusion/extension.html | 53 - doc/html/fusion/extension/ext_full.html | 545 ---- .../fusion/extension/iterator_facade.html | 398 --- doc/html/fusion/extension/macros.html | 47 - .../fusion/extension/macros/adapt_assoc.html | 127 - .../fusion/extension/macros/adapt_struct.html | 113 - .../fusion/extension/sequence_facade.html | 276 -- doc/html/fusion/functional.html | 165 -- doc/html/fusion/functional/adapters.html | 56 - .../fusion/functional/adapters/fused.html | 249 -- .../adapters/fused_function_object.html | 272 -- .../functional/adapters/fused_procedure.html | 269 -- .../functional/adapters/unfused_generic.html | 298 -- .../adapters/unfused_lvalue_args.html | 266 -- .../adapters/unfused_rvalue_args.html | 266 -- .../functional/adapters/unfused_typed.html | 347 --- doc/html/fusion/functional/concepts.html | 52 - .../fusion/functional/concepts/callable.html | 84 - .../functional/concepts/def_callable.html | 166 -- doc/html/fusion/functional/concepts/poly.html | 178 -- .../functional/concepts/reg_callable.html | 159 -- doc/html/fusion/functional/generation.html | 47 - .../functional/generation/functions.html | 58 - .../generation/functions/mk_fused.html | 163 -- .../generation/functions/mk_fused_fobj.html | 179 -- .../generation/functions/mk_fused_proc.html | 159 -- .../functions/mk_unfused_genrc.html | 186 -- .../functions/mk_unfused_lvargs.html | 177 -- .../functions/mk_unfused_rvargs.html | 175 -- .../functional/generation/metafunctions.html | 59 - .../generation/metafunctions/mk_fused.html | 84 - .../metafunctions/mk_fused_fobj.html | 85 - .../metafunctions/mk_fused_proc.html | 85 - .../metafunctions/mk_unfused_genrc.html | 85 - .../metafunctions/mk_unfused_lvargs.html | 85 - .../metafunctions/mk_unfused_rvargs.html | 84 - doc/html/fusion/functional/invocation.html | 48 - .../functional/invocation/functions.html | 50 - .../invocation/functions/invoke.html | 192 -- .../invocation/functions/invoke_fobj.html | 209 -- .../invocation/functions/invoke_proc.html | 201 -- .../functional/invocation/metafunctions.html | 51 - .../invocation/metafunctions/invoke.html | 77 - .../invocation/metafunctions/invoke_fobj.html | 82 - .../invocation/metafunctions/invoke_proc.html | 82 - doc/html/fusion/introduction.html | 145 - doc/html/fusion/iterator.html | 94 - doc/html/fusion/iterator/concepts.html | 65 - .../concepts/bidirectional_iterator.html | 323 --- .../iterator/concepts/forward_iterator.html | 580 ---- .../concepts/random_access_iterator.html | 301 -- doc/html/fusion/iterator/functions.html | 57 - .../fusion/iterator/functions/advance.html | 161 -- .../fusion/iterator/functions/advance_c.html | 160 -- doc/html/fusion/iterator/functions/deref.html | 137 - .../fusion/iterator/functions/distance.html | 135 - doc/html/fusion/iterator/functions/next.html | 137 - doc/html/fusion/iterator/functions/prior.html | 136 - doc/html/fusion/iterator/metafunctions.html | 54 - .../iterator/metafunctions/advance.html | 165 -- .../iterator/metafunctions/advance_c.html | 164 -- .../fusion/iterator/metafunctions/deref.html | 143 - .../iterator/metafunctions/distance.html | 143 - .../iterator/metafunctions/equal_to.html | 141 - .../fusion/iterator/metafunctions/next.html | 138 - .../fusion/iterator/metafunctions/prior.html | 141 - .../iterator/metafunctions/value_of.html | 141 - doc/html/fusion/iterator/operator.html | 56 - .../iterator/operator/operator_equality.html | 129 - .../operator/operator_inequality.html | 125 - .../operator/operator_unary_star.html | 141 - doc/html/fusion/notes.html | 262 -- doc/html/fusion/organization.html | 230 -- doc/html/fusion/preface.html | 230 -- doc/html/fusion/quick_start.html | 267 -- doc/html/fusion/references.html | 72 - doc/html/fusion/sequence.html | 84 - doc/html/fusion/sequence/concepts.html | 85 - .../concepts/associative_sequence.html | 332 --- .../concepts/bidirectional_sequence.html | 348 --- .../sequence/concepts/forward_sequence.html | 475 ---- .../concepts/random_access_sequence.html | 377 --- doc/html/fusion/sequence/intrinsic.html | 73 - .../fusion/sequence/intrinsic/functions.html | 56 - .../sequence/intrinsic/functions/at.html | 174 -- .../sequence/intrinsic/functions/at_c.html | 174 -- .../sequence/intrinsic/functions/at_key.html | 169 -- .../sequence/intrinsic/functions/back.html | 150 - .../sequence/intrinsic/functions/begin.html | 156 - .../sequence/intrinsic/functions/empty.html | 139 - .../sequence/intrinsic/functions/end.html | 156 - .../sequence/intrinsic/functions/front.html | 150 - .../sequence/intrinsic/functions/has_key.html | 159 -- .../sequence/intrinsic/functions/size.html | 138 - .../sequence/intrinsic/functions/swap.html | 135 - .../sequence/intrinsic/metafunctions.html | 59 - .../sequence/intrinsic/metafunctions/at.html | 166 -- .../intrinsic/metafunctions/at_c.html | 165 -- .../intrinsic/metafunctions/at_key.html | 167 -- .../intrinsic/metafunctions/back.html | 133 - .../intrinsic/metafunctions/begin.html | 135 - .../intrinsic/metafunctions/empty.html | 138 - .../sequence/intrinsic/metafunctions/end.html | 135 - .../intrinsic/metafunctions/front.html | 134 - .../intrinsic/metafunctions/has_key.html | 158 -- .../intrinsic/metafunctions/size.html | 135 - .../intrinsic/metafunctions/swap.html | 124 - .../intrinsic/metafunctions/value_at.html | 155 - .../intrinsic/metafunctions/value_at_c.html | 154 - .../intrinsic/metafunctions/value_at_key.html | 155 - doc/html/fusion/sequence/operator.html | 52 - .../fusion/sequence/operator/comparison.html | 73 - .../sequence/operator/comparison/equal.html | 159 -- .../operator/comparison/greater_than.html | 153 - .../comparison/greater_than_equal.html | 152 - .../operator/comparison/less_than.html | 155 - .../operator/comparison/less_than_equal.html | 153 - .../operator/comparison/not_equal.html | 155 - doc/html/fusion/sequence/operator/i_o.html | 141 - doc/html/fusion/sequence/operator/i_o/in.html | 156 - .../fusion/sequence/operator/i_o/out.html | 155 - doc/html/fusion/support.html | 55 - doc/html/fusion/support/category_of.html | 197 -- doc/html/fusion/support/deduce.html | 104 - doc/html/fusion/support/deduce_sequence.html | 106 - doc/html/fusion/support/is_sequence.html | 151 - doc/html/fusion/support/is_view.html | 155 - doc/html/fusion/support/pair.html | 342 --- doc/html/fusion/support/tag_of.html | 151 - doc/html/fusion/tuple.html | 69 - .../fusion/tuple/class_template_tuple.html | 80 - .../class_template_tuple/construction.html | 134 - .../class_template_tuple/element_access.html | 99 - .../relational_operators.html | 211 -- .../tuple_creation_functions.html | 84 - .../tuple_helper_classes.html | 91 - doc/html/fusion/tuple/pairs.html | 112 - doc/html/fusion/view.html | 69 - doc/html/fusion/view/filter_view.html | 246 -- doc/html/fusion/view/iterator_range.html | 261 -- doc/html/fusion/view/joint_view.html | 247 -- doc/html/fusion/view/reverse_view.html | 219 -- doc/html/fusion/view/single_view.html | 211 -- doc/html/fusion/view/transform_view.html | 382 --- doc/html/fusion/view/zip_view.html | 233 -- doc/html/images/alert.png | Bin 603 -> 0 bytes doc/html/images/caution.png | Bin 1250 -> 0 bytes doc/html/images/fusion_org.png | Bin 1849 -> 0 bytes doc/html/images/home.png | Bin 358 -> 0 bytes doc/html/images/important.png | Bin 722 -> 0 bytes doc/html/images/next.png | Bin 336 -> 0 bytes doc/html/images/note.png | Bin 658 -> 0 bytes doc/html/images/prev.png | Bin 334 -> 0 bytes doc/html/images/smiley.png | Bin 867 -> 0 bytes doc/html/images/tip.png | Bin 640 -> 0 bytes doc/html/images/up.png | Bin 370 -> 0 bytes doc/html/images/warning.png | Bin 1241 -> 0 bytes doc/html/index.html | 253 -- doc/introduction.qbk | 88 - doc/iterator.qbk | 846 ------ doc/notes.qbk | 153 - doc/organization.qbk | 87 - doc/preface.qbk | 75 - doc/quick_start.qbk | 168 -- doc/references.qbk | 26 - doc/sequence.qbk | 1825 ------------ doc/support.qbk | 441 --- doc/tuple.qbk | 271 -- doc/view.qbk | 476 ---- example/cookbook/do_the_bind.cpp | 237 -- example/cookbook/fill_em_up.cpp | 105 - example/extension/Jamfile | 20 - example/extension/detail/advance_impl.hpp | 47 - example/extension/detail/at_impl.hpp | 67 - example/extension/detail/at_key_impl.hpp | 72 - example/extension/detail/begin_impl.hpp | 43 - example/extension/detail/category_of_impl.hpp | 34 - example/extension/detail/deref_impl.hpp | 67 - example/extension/detail/distance_impl.hpp | 44 - example/extension/detail/end_impl.hpp | 43 - example/extension/detail/equal_to_impl.hpp | 38 - example/extension/detail/has_key_impl.hpp | 45 - example/extension/detail/is_sequence_impl.hpp | 34 - example/extension/detail/is_view_impl.hpp | 32 - example/extension/detail/next_impl.hpp | 46 - example/extension/detail/prior_impl.hpp | 46 - example/extension/detail/size_impl.hpp | 36 - example/extension/detail/value_at_impl.hpp | 44 - .../extension/detail/value_at_key_impl.hpp | 50 - example/extension/detail/value_of_impl.hpp | 49 - example/extension/example_struct.hpp | 25 - example/extension/example_struct_iterator.hpp | 64 - example/extension/example_struct_type.hpp | 27 - example/extension/tag_of.hpp | 30 - example/extension/test_example.cpp | 62 - example/extension/triple.cpp | 319 --- example/performance/Jamfile | 20 - example/performance/accumulate.cpp | 357 --- example/performance/functional.cpp | 305 -- example/performance/inner_product.cpp | 184 -- example/performance/inner_product2.cpp | 206 -- example/performance/measure.hpp | 85 - example/performance/sequence_efficiency.cpp | 248 -- example/performance/timings.txt | 57 - example/performance/zip_efficiency.cpp | 155 - index.html | 15 - test/Jamfile | 147 - test/algorithm/all.cpp | 58 - test/algorithm/any.cpp | 57 - test/algorithm/clear.cpp | 45 - test/algorithm/count.cpp | 41 - test/algorithm/count_if.cpp | 38 - test/algorithm/erase.cpp | 63 - test/algorithm/erase_key.cpp | 74 - test/algorithm/ext_/find_if_s.cpp | 109 - test/algorithm/ext_/for_each_s.cpp | 82 - test/algorithm/filter.cpp | 43 - test/algorithm/filter_if.cpp | 77 - test/algorithm/find.cpp | 79 - test/algorithm/find_if.cpp | 69 - test/algorithm/fold.cpp | 222 -- test/algorithm/for_each.cpp | 61 - test/algorithm/insert.cpp | 67 - test/algorithm/insert_range.cpp | 71 - test/algorithm/join.cpp | 28 - test/algorithm/none.cpp | 58 - test/algorithm/pop_back.cpp | 46 - test/algorithm/pop_front.cpp | 46 - test/algorithm/push_back.cpp | 72 - test/algorithm/push_front.cpp | 55 - test/algorithm/remove.cpp | 80 - test/algorithm/remove_if.cpp | 78 - test/algorithm/replace.cpp | 49 - test/algorithm/replace_if.cpp | 52 - test/algorithm/reverse.cpp | 49 - test/algorithm/transform.cpp | 157 - test/algorithm/zip.cpp | 30 - test/algorithm/zip2.cpp | 30 - test/algorithm/zip_ignore.cpp | 28 - test/functional/fused.cpp | 97 - test/functional/fused_function_object.cpp | 83 - test/functional/fused_procedure.cpp | 82 - test/functional/invoke.cpp | 394 --- test/functional/invoke_function_object.cpp | 234 -- test/functional/invoke_procedure.cpp | 284 -- test/functional/make_fused.cpp | 85 - .../functional/make_fused_function_object.cpp | 95 - test/functional/make_fused_procedure.cpp | 91 - test/functional/make_unfused_generic.cpp | 124 - test/functional/make_unfused_lvalue_args.cpp | 126 - test/functional/make_unfused_rvalue_args.cpp | 110 - test/functional/unfused_generic.cpp | 126 - test/functional/unfused_lvalue_args.cpp | 119 - test/functional/unfused_rvalue_args.cpp | 102 - test/functional/unfused_typed.cpp | 166 -- test/sequence/adapt_assoc_struct.cpp | 131 - test/sequence/adapt_struct.cpp | 106 - test/sequence/array.cpp | 41 - test/sequence/as_list.cpp | 53 - test/sequence/as_map.cpp | 61 - test/sequence/as_set.cpp | 64 - test/sequence/as_vector.cpp | 54 - test/sequence/back_extended_deque.cpp | 75 - test/sequence/boost_tuple.cpp | 90 - test/sequence/comparison.hpp | 57 - test/sequence/cons.cpp | 87 - test/sequence/construction.hpp | 117 - test/sequence/copy.hpp | 98 - test/sequence/deduce_sequence.cpp | 80 - test/sequence/deque_comparison.cpp | 20 - test/sequence/deque_construction.cpp | 19 - test/sequence/deque_copy.cpp | 22 - test/sequence/deque_iterator.cpp | 19 - test/sequence/deque_make.cpp | 20 - test/sequence/deque_misc.cpp | 22 - test/sequence/deque_mutate.cpp | 20 - test/sequence/deque_tie.cpp | 23 - test/sequence/deque_value_at.cpp | 20 - test/sequence/ext_/iterator_range_s.cpp | 146 - test/sequence/filter_view.cpp | 120 - test/sequence/front_extended_deque.cpp | 75 - test/sequence/io.cpp | 116 - test/sequence/iterator.hpp | 197 -- test/sequence/iterator_range.cpp | 81 - test/sequence/joint_view.cpp | 144 - test/sequence/list_comparison.cpp | 19 - test/sequence/list_construction.cpp | 18 - test/sequence/list_copy.cpp | 21 - test/sequence/list_iterator.cpp | 22 - test/sequence/list_make.cpp | 20 - test/sequence/list_misc.cpp | 21 - test/sequence/list_mutate.cpp | 19 - test/sequence/list_tie.cpp | 22 - test/sequence/list_value_at.cpp | 19 - test/sequence/make.hpp | 88 - test/sequence/make_list.cpp | 20 - test/sequence/make_vector.cpp | 20 - test/sequence/map.cpp | 72 - test/sequence/map_tie.cpp | 35 - test/sequence/misc.hpp | 189 -- test/sequence/mutate.hpp | 52 - test/sequence/repetitive_view.cpp | 53 - test/sequence/reverse_view.cpp | 64 - test/sequence/set.cpp | 67 - test/sequence/single_view.cpp | 57 - test/sequence/std_pair.cpp | 91 - test/sequence/swap.cpp | 35 - test/sequence/tie.hpp | 85 - test/sequence/transform_view.cpp | 115 - test/sequence/tuple_comparison.cpp | 20 - test/sequence/tuple_construction.cpp | 20 - test/sequence/tuple_copy.cpp | 22 - test/sequence/tuple_element.cpp | 21 - test/sequence/tuple_make.cpp | 21 - test/sequence/tuple_misc.cpp | 23 - test/sequence/tuple_mutate.cpp | 20 - test/sequence/tuple_tie.cpp | 22 - test/sequence/value_at.hpp | 87 - test/sequence/variant.cpp | 56 - test/sequence/vector_comparison.cpp | 19 - test/sequence/vector_construction.cpp | 18 - test/sequence/vector_copy.cpp | 21 - test/sequence/vector_iterator.cpp | 22 - test/sequence/vector_make.cpp | 20 - test/sequence/vector_misc.cpp | 21 - test/sequence/vector_mutate.cpp | 19 - test/sequence/vector_n.cpp | 232 -- test/sequence/vector_tie.cpp | 22 - test/sequence/vector_value_at.cpp | 19 - test/sequence/zip_view.cpp | 87 - test/sequence/zip_view2.cpp | 64 - test/sequence/zip_view_ignore.cpp | 58 - todo.txt | 173 -- 455 files changed, 64511 deletions(-) delete mode 100644 doc/Jamfile delete mode 100644 doc/acknowledgements.qbk delete mode 100644 doc/adapted.qbk delete mode 100644 doc/algorithm.qbk delete mode 100644 doc/changelog.qbk delete mode 100644 doc/container.qbk delete mode 100644 doc/extension.qbk delete mode 100644 doc/functional.qbk delete mode 100644 doc/fusion.qbk delete mode 100644 doc/html/fusion/acknowledgements.html delete mode 100644 doc/html/fusion/adapted.html delete mode 100644 doc/html/fusion/adapted/boost__array.html delete mode 100644 doc/html/fusion/adapted/boost__tuple.html delete mode 100644 doc/html/fusion/adapted/boost__variant.html delete mode 100644 doc/html/fusion/adapted/mpl_sequence.html delete mode 100644 doc/html/fusion/adapted/std__pair.html delete mode 100644 doc/html/fusion/algorithm.html delete mode 100644 doc/html/fusion/algorithm/iteration.html delete mode 100644 doc/html/fusion/algorithm/iteration/functions.html delete mode 100644 doc/html/fusion/algorithm/iteration/functions/accumulate.html delete mode 100644 doc/html/fusion/algorithm/iteration/functions/fold.html delete mode 100644 doc/html/fusion/algorithm/iteration/functions/for_each.html delete mode 100644 doc/html/fusion/algorithm/iteration/metafunctions.html delete mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html delete mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/fold.html delete mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/for_each.html delete mode 100644 doc/html/fusion/algorithm/query.html delete mode 100644 doc/html/fusion/algorithm/query/functions.html delete mode 100644 doc/html/fusion/algorithm/query/functions/all.html delete mode 100644 doc/html/fusion/algorithm/query/functions/any.html delete mode 100644 doc/html/fusion/algorithm/query/functions/count.html delete mode 100644 doc/html/fusion/algorithm/query/functions/count_if.html delete mode 100644 doc/html/fusion/algorithm/query/functions/find.html delete mode 100644 doc/html/fusion/algorithm/query/functions/find_if.html delete mode 100644 doc/html/fusion/algorithm/query/functions/none.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions/all.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions/any.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions/count.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions/count_if.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions/find.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions/find_if.html delete mode 100644 doc/html/fusion/algorithm/query/metafunctions/none.html delete mode 100644 doc/html/fusion/algorithm/transformation.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/clear.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/erase.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/erase_key.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/filter.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/filter_if.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/insert.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/insert_range.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/join.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/pop_back.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/pop_front.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/push_back.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/push_front.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/remove.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/remove_if.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/replace.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/replace_if.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/reverse.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/transform.html delete mode 100644 doc/html/fusion/algorithm/transformation/functions/zip.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/clear.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/erase.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/filter.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/insert.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/join.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/push_back.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/push_front.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/remove.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/replace.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/reverse.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/transform.html delete mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/zip.html delete mode 100644 doc/html/fusion/change_log.html delete mode 100644 doc/html/fusion/container.html delete mode 100644 doc/html/fusion/container/cons.html delete mode 100644 doc/html/fusion/container/conversion.html delete mode 100644 doc/html/fusion/container/conversion/functions.html delete mode 100644 doc/html/fusion/container/conversion/functions/as_list.html delete mode 100644 doc/html/fusion/container/conversion/functions/as_map.html delete mode 100644 doc/html/fusion/container/conversion/functions/as_set.html delete mode 100644 doc/html/fusion/container/conversion/functions/as_vector.html delete mode 100644 doc/html/fusion/container/conversion/metafunctions.html delete mode 100644 doc/html/fusion/container/conversion/metafunctions/as_list.html delete mode 100644 doc/html/fusion/container/conversion/metafunctions/as_map.html delete mode 100644 doc/html/fusion/container/conversion/metafunctions/as_set.html delete mode 100644 doc/html/fusion/container/conversion/metafunctions/as_vector.html delete mode 100644 doc/html/fusion/container/generation.html delete mode 100644 doc/html/fusion/container/generation/functions.html delete mode 100644 doc/html/fusion/container/generation/functions/list_tie.html delete mode 100644 doc/html/fusion/container/generation/functions/make_cons.html delete mode 100644 doc/html/fusion/container/generation/functions/make_list.html delete mode 100644 doc/html/fusion/container/generation/functions/make_map.html delete mode 100644 doc/html/fusion/container/generation/functions/make_set.html delete mode 100644 doc/html/fusion/container/generation/functions/make_vector.html delete mode 100644 doc/html/fusion/container/generation/functions/map_tie.html delete mode 100644 doc/html/fusion/container/generation/functions/tiers.html delete mode 100644 doc/html/fusion/container/generation/functions/vector_tie.html delete mode 100644 doc/html/fusion/container/generation/metafunctions.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/list_tie.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/make_cons.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/make_list.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/make_map.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/make_set.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/make_vector.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/map_tie.html delete mode 100644 doc/html/fusion/container/generation/metafunctions/vector_tie.html delete mode 100644 doc/html/fusion/container/list.html delete mode 100644 doc/html/fusion/container/map.html delete mode 100644 doc/html/fusion/container/set.html delete mode 100644 doc/html/fusion/container/vector.html delete mode 100644 doc/html/fusion/extension.html delete mode 100644 doc/html/fusion/extension/ext_full.html delete mode 100644 doc/html/fusion/extension/iterator_facade.html delete mode 100644 doc/html/fusion/extension/macros.html delete mode 100644 doc/html/fusion/extension/macros/adapt_assoc.html delete mode 100644 doc/html/fusion/extension/macros/adapt_struct.html delete mode 100644 doc/html/fusion/extension/sequence_facade.html delete mode 100644 doc/html/fusion/functional.html delete mode 100644 doc/html/fusion/functional/adapters.html delete mode 100644 doc/html/fusion/functional/adapters/fused.html delete mode 100644 doc/html/fusion/functional/adapters/fused_function_object.html delete mode 100644 doc/html/fusion/functional/adapters/fused_procedure.html delete mode 100644 doc/html/fusion/functional/adapters/unfused_generic.html delete mode 100644 doc/html/fusion/functional/adapters/unfused_lvalue_args.html delete mode 100644 doc/html/fusion/functional/adapters/unfused_rvalue_args.html delete mode 100644 doc/html/fusion/functional/adapters/unfused_typed.html delete mode 100644 doc/html/fusion/functional/concepts.html delete mode 100644 doc/html/fusion/functional/concepts/callable.html delete mode 100644 doc/html/fusion/functional/concepts/def_callable.html delete mode 100644 doc/html/fusion/functional/concepts/poly.html delete mode 100644 doc/html/fusion/functional/concepts/reg_callable.html delete mode 100644 doc/html/fusion/functional/generation.html delete mode 100644 doc/html/fusion/functional/generation/functions.html delete mode 100644 doc/html/fusion/functional/generation/functions/mk_fused.html delete mode 100644 doc/html/fusion/functional/generation/functions/mk_fused_fobj.html delete mode 100644 doc/html/fusion/functional/generation/functions/mk_fused_proc.html delete mode 100644 doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html delete mode 100644 doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html delete mode 100644 doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_fused.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html delete mode 100644 doc/html/fusion/functional/invocation.html delete mode 100644 doc/html/fusion/functional/invocation/functions.html delete mode 100644 doc/html/fusion/functional/invocation/functions/invoke.html delete mode 100644 doc/html/fusion/functional/invocation/functions/invoke_fobj.html delete mode 100644 doc/html/fusion/functional/invocation/functions/invoke_proc.html delete mode 100644 doc/html/fusion/functional/invocation/metafunctions.html delete mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke.html delete mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html delete mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html delete mode 100644 doc/html/fusion/introduction.html delete mode 100644 doc/html/fusion/iterator.html delete mode 100644 doc/html/fusion/iterator/concepts.html delete mode 100644 doc/html/fusion/iterator/concepts/bidirectional_iterator.html delete mode 100644 doc/html/fusion/iterator/concepts/forward_iterator.html delete mode 100644 doc/html/fusion/iterator/concepts/random_access_iterator.html delete mode 100644 doc/html/fusion/iterator/functions.html delete mode 100644 doc/html/fusion/iterator/functions/advance.html delete mode 100644 doc/html/fusion/iterator/functions/advance_c.html delete mode 100644 doc/html/fusion/iterator/functions/deref.html delete mode 100644 doc/html/fusion/iterator/functions/distance.html delete mode 100644 doc/html/fusion/iterator/functions/next.html delete mode 100644 doc/html/fusion/iterator/functions/prior.html delete mode 100644 doc/html/fusion/iterator/metafunctions.html delete mode 100644 doc/html/fusion/iterator/metafunctions/advance.html delete mode 100644 doc/html/fusion/iterator/metafunctions/advance_c.html delete mode 100644 doc/html/fusion/iterator/metafunctions/deref.html delete mode 100644 doc/html/fusion/iterator/metafunctions/distance.html delete mode 100644 doc/html/fusion/iterator/metafunctions/equal_to.html delete mode 100644 doc/html/fusion/iterator/metafunctions/next.html delete mode 100644 doc/html/fusion/iterator/metafunctions/prior.html delete mode 100644 doc/html/fusion/iterator/metafunctions/value_of.html delete mode 100644 doc/html/fusion/iterator/operator.html delete mode 100644 doc/html/fusion/iterator/operator/operator_equality.html delete mode 100644 doc/html/fusion/iterator/operator/operator_inequality.html delete mode 100644 doc/html/fusion/iterator/operator/operator_unary_star.html delete mode 100644 doc/html/fusion/notes.html delete mode 100644 doc/html/fusion/organization.html delete mode 100644 doc/html/fusion/preface.html delete mode 100644 doc/html/fusion/quick_start.html delete mode 100644 doc/html/fusion/references.html delete mode 100644 doc/html/fusion/sequence.html delete mode 100644 doc/html/fusion/sequence/concepts.html delete mode 100644 doc/html/fusion/sequence/concepts/associative_sequence.html delete mode 100644 doc/html/fusion/sequence/concepts/bidirectional_sequence.html delete mode 100644 doc/html/fusion/sequence/concepts/forward_sequence.html delete mode 100644 doc/html/fusion/sequence/concepts/random_access_sequence.html delete mode 100644 doc/html/fusion/sequence/intrinsic.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/at.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/at_c.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/at_key.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/back.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/begin.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/empty.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/end.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/front.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/has_key.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/size.html delete mode 100644 doc/html/fusion/sequence/intrinsic/functions/swap.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/at.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/back.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/begin.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/empty.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/end.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/front.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/size.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/swap.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html delete mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html delete mode 100644 doc/html/fusion/sequence/operator.html delete mode 100644 doc/html/fusion/sequence/operator/comparison.html delete mode 100644 doc/html/fusion/sequence/operator/comparison/equal.html delete mode 100644 doc/html/fusion/sequence/operator/comparison/greater_than.html delete mode 100644 doc/html/fusion/sequence/operator/comparison/greater_than_equal.html delete mode 100644 doc/html/fusion/sequence/operator/comparison/less_than.html delete mode 100644 doc/html/fusion/sequence/operator/comparison/less_than_equal.html delete mode 100644 doc/html/fusion/sequence/operator/comparison/not_equal.html delete mode 100644 doc/html/fusion/sequence/operator/i_o.html delete mode 100644 doc/html/fusion/sequence/operator/i_o/in.html delete mode 100644 doc/html/fusion/sequence/operator/i_o/out.html delete mode 100644 doc/html/fusion/support.html delete mode 100644 doc/html/fusion/support/category_of.html delete mode 100644 doc/html/fusion/support/deduce.html delete mode 100644 doc/html/fusion/support/deduce_sequence.html delete mode 100644 doc/html/fusion/support/is_sequence.html delete mode 100644 doc/html/fusion/support/is_view.html delete mode 100644 doc/html/fusion/support/pair.html delete mode 100644 doc/html/fusion/support/tag_of.html delete mode 100644 doc/html/fusion/tuple.html delete mode 100644 doc/html/fusion/tuple/class_template_tuple.html delete mode 100644 doc/html/fusion/tuple/class_template_tuple/construction.html delete mode 100644 doc/html/fusion/tuple/class_template_tuple/element_access.html delete mode 100644 doc/html/fusion/tuple/class_template_tuple/relational_operators.html delete mode 100644 doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html delete mode 100644 doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html delete mode 100644 doc/html/fusion/tuple/pairs.html delete mode 100644 doc/html/fusion/view.html delete mode 100644 doc/html/fusion/view/filter_view.html delete mode 100644 doc/html/fusion/view/iterator_range.html delete mode 100644 doc/html/fusion/view/joint_view.html delete mode 100644 doc/html/fusion/view/reverse_view.html delete mode 100644 doc/html/fusion/view/single_view.html delete mode 100644 doc/html/fusion/view/transform_view.html delete mode 100644 doc/html/fusion/view/zip_view.html delete mode 100755 doc/html/images/alert.png delete mode 100644 doc/html/images/caution.png delete mode 100644 doc/html/images/fusion_org.png delete mode 100755 doc/html/images/home.png delete mode 100644 doc/html/images/important.png delete mode 100755 doc/html/images/next.png delete mode 100755 doc/html/images/note.png delete mode 100755 doc/html/images/prev.png delete mode 100755 doc/html/images/smiley.png delete mode 100755 doc/html/images/tip.png delete mode 100755 doc/html/images/up.png delete mode 100644 doc/html/images/warning.png delete mode 100644 doc/html/index.html delete mode 100644 doc/introduction.qbk delete mode 100644 doc/iterator.qbk delete mode 100644 doc/notes.qbk delete mode 100644 doc/organization.qbk delete mode 100644 doc/preface.qbk delete mode 100644 doc/quick_start.qbk delete mode 100644 doc/references.qbk delete mode 100644 doc/sequence.qbk delete mode 100644 doc/support.qbk delete mode 100644 doc/tuple.qbk delete mode 100644 doc/view.qbk delete mode 100644 example/cookbook/do_the_bind.cpp delete mode 100644 example/cookbook/fill_em_up.cpp delete mode 100644 example/extension/Jamfile delete mode 100644 example/extension/detail/advance_impl.hpp delete mode 100644 example/extension/detail/at_impl.hpp delete mode 100644 example/extension/detail/at_key_impl.hpp delete mode 100644 example/extension/detail/begin_impl.hpp delete mode 100644 example/extension/detail/category_of_impl.hpp delete mode 100644 example/extension/detail/deref_impl.hpp delete mode 100644 example/extension/detail/distance_impl.hpp delete mode 100644 example/extension/detail/end_impl.hpp delete mode 100644 example/extension/detail/equal_to_impl.hpp delete mode 100644 example/extension/detail/has_key_impl.hpp delete mode 100644 example/extension/detail/is_sequence_impl.hpp delete mode 100644 example/extension/detail/is_view_impl.hpp delete mode 100644 example/extension/detail/next_impl.hpp delete mode 100644 example/extension/detail/prior_impl.hpp delete mode 100644 example/extension/detail/size_impl.hpp delete mode 100644 example/extension/detail/value_at_impl.hpp delete mode 100644 example/extension/detail/value_at_key_impl.hpp delete mode 100644 example/extension/detail/value_of_impl.hpp delete mode 100644 example/extension/example_struct.hpp delete mode 100644 example/extension/example_struct_iterator.hpp delete mode 100644 example/extension/example_struct_type.hpp delete mode 100644 example/extension/tag_of.hpp delete mode 100644 example/extension/test_example.cpp delete mode 100644 example/extension/triple.cpp delete mode 100644 example/performance/Jamfile delete mode 100644 example/performance/accumulate.cpp delete mode 100644 example/performance/functional.cpp delete mode 100644 example/performance/inner_product.cpp delete mode 100644 example/performance/inner_product2.cpp delete mode 100644 example/performance/measure.hpp delete mode 100644 example/performance/sequence_efficiency.cpp delete mode 100644 example/performance/timings.txt delete mode 100644 example/performance/zip_efficiency.cpp delete mode 100644 index.html delete mode 100644 test/Jamfile delete mode 100644 test/algorithm/all.cpp delete mode 100644 test/algorithm/any.cpp delete mode 100644 test/algorithm/clear.cpp delete mode 100644 test/algorithm/count.cpp delete mode 100644 test/algorithm/count_if.cpp delete mode 100644 test/algorithm/erase.cpp delete mode 100644 test/algorithm/erase_key.cpp delete mode 100755 test/algorithm/ext_/find_if_s.cpp delete mode 100755 test/algorithm/ext_/for_each_s.cpp delete mode 100644 test/algorithm/filter.cpp delete mode 100644 test/algorithm/filter_if.cpp delete mode 100644 test/algorithm/find.cpp delete mode 100644 test/algorithm/find_if.cpp delete mode 100644 test/algorithm/fold.cpp delete mode 100644 test/algorithm/for_each.cpp delete mode 100644 test/algorithm/insert.cpp delete mode 100644 test/algorithm/insert_range.cpp delete mode 100644 test/algorithm/join.cpp delete mode 100644 test/algorithm/none.cpp delete mode 100644 test/algorithm/pop_back.cpp delete mode 100644 test/algorithm/pop_front.cpp delete mode 100644 test/algorithm/push_back.cpp delete mode 100644 test/algorithm/push_front.cpp delete mode 100644 test/algorithm/remove.cpp delete mode 100644 test/algorithm/remove_if.cpp delete mode 100644 test/algorithm/replace.cpp delete mode 100644 test/algorithm/replace_if.cpp delete mode 100644 test/algorithm/reverse.cpp delete mode 100644 test/algorithm/transform.cpp delete mode 100644 test/algorithm/zip.cpp delete mode 100644 test/algorithm/zip2.cpp delete mode 100644 test/algorithm/zip_ignore.cpp delete mode 100644 test/functional/fused.cpp delete mode 100644 test/functional/fused_function_object.cpp delete mode 100644 test/functional/fused_procedure.cpp delete mode 100644 test/functional/invoke.cpp delete mode 100644 test/functional/invoke_function_object.cpp delete mode 100644 test/functional/invoke_procedure.cpp delete mode 100644 test/functional/make_fused.cpp delete mode 100644 test/functional/make_fused_function_object.cpp delete mode 100644 test/functional/make_fused_procedure.cpp delete mode 100644 test/functional/make_unfused_generic.cpp delete mode 100644 test/functional/make_unfused_lvalue_args.cpp delete mode 100644 test/functional/make_unfused_rvalue_args.cpp delete mode 100644 test/functional/unfused_generic.cpp delete mode 100644 test/functional/unfused_lvalue_args.cpp delete mode 100644 test/functional/unfused_rvalue_args.cpp delete mode 100644 test/functional/unfused_typed.cpp delete mode 100644 test/sequence/adapt_assoc_struct.cpp delete mode 100644 test/sequence/adapt_struct.cpp delete mode 100644 test/sequence/array.cpp delete mode 100644 test/sequence/as_list.cpp delete mode 100644 test/sequence/as_map.cpp delete mode 100644 test/sequence/as_set.cpp delete mode 100644 test/sequence/as_vector.cpp delete mode 100644 test/sequence/back_extended_deque.cpp delete mode 100644 test/sequence/boost_tuple.cpp delete mode 100644 test/sequence/comparison.hpp delete mode 100644 test/sequence/cons.cpp delete mode 100644 test/sequence/construction.hpp delete mode 100644 test/sequence/copy.hpp delete mode 100644 test/sequence/deduce_sequence.cpp delete mode 100644 test/sequence/deque_comparison.cpp delete mode 100644 test/sequence/deque_construction.cpp delete mode 100644 test/sequence/deque_copy.cpp delete mode 100644 test/sequence/deque_iterator.cpp delete mode 100644 test/sequence/deque_make.cpp delete mode 100644 test/sequence/deque_misc.cpp delete mode 100644 test/sequence/deque_mutate.cpp delete mode 100644 test/sequence/deque_tie.cpp delete mode 100644 test/sequence/deque_value_at.cpp delete mode 100755 test/sequence/ext_/iterator_range_s.cpp delete mode 100644 test/sequence/filter_view.cpp delete mode 100644 test/sequence/front_extended_deque.cpp delete mode 100644 test/sequence/io.cpp delete mode 100644 test/sequence/iterator.hpp delete mode 100644 test/sequence/iterator_range.cpp delete mode 100644 test/sequence/joint_view.cpp delete mode 100644 test/sequence/list_comparison.cpp delete mode 100644 test/sequence/list_construction.cpp delete mode 100644 test/sequence/list_copy.cpp delete mode 100644 test/sequence/list_iterator.cpp delete mode 100644 test/sequence/list_make.cpp delete mode 100644 test/sequence/list_misc.cpp delete mode 100644 test/sequence/list_mutate.cpp delete mode 100644 test/sequence/list_tie.cpp delete mode 100644 test/sequence/list_value_at.cpp delete mode 100644 test/sequence/make.hpp delete mode 100644 test/sequence/make_list.cpp delete mode 100644 test/sequence/make_vector.cpp delete mode 100644 test/sequence/map.cpp delete mode 100644 test/sequence/map_tie.cpp delete mode 100644 test/sequence/misc.hpp delete mode 100644 test/sequence/mutate.hpp delete mode 100644 test/sequence/repetitive_view.cpp delete mode 100644 test/sequence/reverse_view.cpp delete mode 100644 test/sequence/set.cpp delete mode 100644 test/sequence/single_view.cpp delete mode 100644 test/sequence/std_pair.cpp delete mode 100644 test/sequence/swap.cpp delete mode 100644 test/sequence/tie.hpp delete mode 100644 test/sequence/transform_view.cpp delete mode 100644 test/sequence/tuple_comparison.cpp delete mode 100644 test/sequence/tuple_construction.cpp delete mode 100644 test/sequence/tuple_copy.cpp delete mode 100644 test/sequence/tuple_element.cpp delete mode 100644 test/sequence/tuple_make.cpp delete mode 100644 test/sequence/tuple_misc.cpp delete mode 100644 test/sequence/tuple_mutate.cpp delete mode 100644 test/sequence/tuple_tie.cpp delete mode 100644 test/sequence/value_at.hpp delete mode 100644 test/sequence/variant.cpp delete mode 100644 test/sequence/vector_comparison.cpp delete mode 100644 test/sequence/vector_construction.cpp delete mode 100644 test/sequence/vector_copy.cpp delete mode 100644 test/sequence/vector_iterator.cpp delete mode 100644 test/sequence/vector_make.cpp delete mode 100644 test/sequence/vector_misc.cpp delete mode 100644 test/sequence/vector_mutate.cpp delete mode 100644 test/sequence/vector_n.cpp delete mode 100644 test/sequence/vector_tie.cpp delete mode 100644 test/sequence/vector_value_at.cpp delete mode 100644 test/sequence/zip_view.cpp delete mode 100644 test/sequence/zip_view2.cpp delete mode 100644 test/sequence/zip_view_ignore.cpp delete mode 100644 todo.txt diff --git a/doc/Jamfile b/doc/Jamfile deleted file mode 100644 index dc8fefe7..00000000 --- a/doc/Jamfile +++ /dev/null @@ -1,25 +0,0 @@ -#============================================================================== -# Copyright (c) 2003-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) -#============================================================================== -project boost/libs/fusion/doc ; -import boostbook : boostbook ; -using quickbook ; - -boostbook quickbook - : - fusion.qbk - : - boost.root=../../../.. - boost.libraries=../../../libraries.htm - html.stylesheet=../../../../doc/html/boostbook.css - chunk.section.depth=4 - chunk.first.sections=1 - toc.section.depth=3 - toc.max.depth=3 - generate.section.toc.level=4 - ; - diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk deleted file mode 100644 index fd66c3c5..00000000 --- a/doc/acknowledgements.qbk +++ /dev/null @@ -1,23 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Acknowledgements] - -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/adapted.qbk b/doc/adapted.qbk deleted file mode 100644 index 3645fcc9..00000000 --- a/doc/adapted.qbk +++ /dev/null @@ -1,168 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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 - #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 - #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 - #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 - #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] - -[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 - #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 - #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] diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk deleted file mode 100644 index cfaf92b7..00000000 --- a/doc/algorithm.qbk +++ /dev/null @@ -1,2523 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Algorithm] - -[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 - #include - -[section Iteration] - -The iteration algorithms provide the fundamental algorithms for traversing -a sequence repeatedly applying an operation to its elements. - -[heading Header] - - #include - #include - -[section Functions] - -[section fold] - -[heading Description] -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< - 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,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`][`__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] - 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 - #include - -[heading Example] - struct make_string - { - typedef std::string result_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] -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< - 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`][`__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] - 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 - #include - -[heading Example] - struct make_string - { - typedef std::string result_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 __reg_callable_obj__][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 - #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`] [`__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] - __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 function object or function pointer of type `F`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `F`. - -[heading Header] - - #include - #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`] [`__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] - __result_of_accumulate__::type - -[*Return type]: Any type - -[*Semantics]: Returns the result of applying `accumulate` to a sequence of type `Sequence`, with an initial state of -type `State` and binary function object or function pointer of type `F`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `F`. - -[heading Header] - - #include - #include - -[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 - #include - -[endsect] - -[endsect] - -[endsect] - -[section Query] -The query algorithms provide support for searching and analyzing sequences. - -[heading Header] - - #include - #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 - #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 - #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 - #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 T, - typename Sequence - > - __unspecified__ find(Sequence const& seq); - - template< - typename T, - typename Sequence - > - __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 - #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 F, - typename Sequence - > - __unspecified__ find_if(Sequence const& seq); - - template< - typename F, - typename Sequence - > - __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. - - -/algorithm/query/find_if.hpp> - -[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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 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< - 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`][`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] - __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 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 - #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] - -[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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #include - -[endsect] - -[section transform] - -[heading Description] -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< - 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`][`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] - __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 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 - #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] - -[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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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. - -/algorithm/transformation/pop_front.hpp> - -[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. - -/algorithm/transformation/push_back.hpp> - -[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. - -/algorithm/transformation/push_front.hpp> - -[endsect] - -[endsect] - -[endsect] - -[endsect] diff --git a/doc/changelog.qbk b/doc/changelog.qbk deleted file mode 100644 index c7da9f07..00000000 --- a/doc/changelog.qbk +++ /dev/null @@ -1,16 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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. -* Feb 15, 2007: Added functional module. - -[endsect] diff --git a/doc/container.qbk b/doc/container.qbk deleted file mode 100644 index 62baca68..00000000 --- a/doc/container.qbk +++ /dev/null @@ -1,1655 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Container] - -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 - #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 - #include - #include - - // numbered forms - #include - #include - #include - #include - #include - #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 - #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 __mpl_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_c__<0>(l) << std::endl; - std::cout << __at_c__<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 - #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 __mpl_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_c__<0>(l) << std::endl; - std::cout << __at_c__<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 - #include - #include - #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 - #include - #include - #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_key__(m) << std::endl; - std::cout << __at_key__(m) << std::endl; - -[endsect] - -[section Generation] - -These are the functions that you can use to generate various forms of -__containers__ from elemental values. - -[heading Header] - - #include - #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 - #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 - #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 - #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 - #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 - #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__ -* __map_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 - #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 - #include - -[heading Example] - - int i = 123; - double d = 123.456; - vector_tie(i, d) - -[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 - #include - -[heading Example] - - struct int_key; - struct double_key; - ... - int i = 123; - double d = 123.456; - map_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 - #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 - #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 - #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 - #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 - #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 - #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 - #include - -[heading Example] - - result_of::vector_tie::type - -[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 - #include - -[heading Example] - - struct int_key; - struct double_key; - ... - result_of::map_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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #include - -[heading Example] - - result_of::as_map<__vector__< - __fusion_pair__ - , __fusion_pair__ > >::type - -[endsect] - -[endsect] - -[endsect] - -[endsect] diff --git a/doc/extension.qbk b/doc/extension.qbk deleted file mode 100644 index c10dc273..00000000 --- a/doc/extension.qbk +++ /dev/null @@ -1,598 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Extension] - -[section:ext_full The Full Extension Mechanism] - -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 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 -`traits::tag_of` for our sequence type. - - #include - #include - - namespace boost { namespace fusion { namespace traits { - template<> - struct tag_of - { - 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 groups of related types. This feature is not necessary -for our sequence, but for an example see the code in: - - #include - #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 - : boost::fusion::iterator_base > - { - BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); - typedef Struct struct_type; - typedef boost::mpl::int_ index; - typedef boost::fusion::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`. - -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__ - : 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 -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::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::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__ - : extension::deref_impl::type>:: - template apply - {}; - } - - template - typename result_of::deref::type - __deref__(Iterator const& i) - { - typedef result_of::deref 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__. - -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::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::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] - -[section Sequence Facade] - -[heading Description] -The __sequence_facade__ template provides an intrusive mechanism for -producing a conforming Fusion iterator. - -[heading Synopsis] - template - struct sequence_facade; - -[heading Usage] -The user of __sequence_facade__ derives his sequence type from a specialization of __sequence_facade__ and passes the derived sequence type as the first template parameter. The second template parameter should be the traversal category of the sequence being implemented. The 3rd parameter should be set to `mpl::true_` if the sequence is a view. - -The user must the implement the key expressions required by their sequence type. - -[table Parameters -[[Name][Description]] -[[`sequence`, `Seq`][A type derived from __sequence_facade__]] -[[`N`][An __mpl_integral_constant__]] -] - -[table Key Expressions -[[Expression][Result]] -[[`sequence::template begin::type`][The type of an iterator to the beginning of a sequence of type `Seq`]] -[[`sequence::template begin::call(seq)`][An iterator to the beginning of sequence `seq`]] -[[`sequence::template end::type`][The type of an iterator to the end of a sequence of type `Seq`]] -[[`sequence::template end::call(seq)`][An iterator to the end of sequence `seq`]] -[[`sequence::template size::type`][The size of a sequence of type `Seq` as an __mpl_integral_constant__]] -[[`sequence::template size::call(seq)`][The size of sequence `seq`]] -[[`sequence::template at::type`][The type of element `N` in a sequence of type `Seq`]] -[[`sequence::template at::call(seq)`][Element `N` in sequence `seq`]] -[[`sequence::template value_at::type`][The type of the `N`th element in a sequence of type `Seq`]] -] - -[heading Include] - - #include - #include - -[heading Example] -A full worked example using __sequence_facade__ is provided in triple.cpp in the extension examples. - -[endsect] - -[section Iterator Facade] - -[heading Description] -The __iterator_facade__ template provides an intrusive mechanism for -producing a conforming Fusion iterator. - -[heading Synopsis] - - template - struct iterator_facade; - -[heading Usage] -The user of iterator_facade derives his iterator type from a specialization of iterator_facade and passes the derived iterator type as the first template parameter. The second template parameter should be the traversal category of the iterator being implemented. - -The user must the implement the key expressions required by their iterator type. - -[table Parameters -[[Name][Description]] -[[`iterator`, `It`, `It1`, `It2`][A type derived from __iterator_facade__]] -[[`N`][An __mpl_integral_constant__]] -] - -[table Key Expressions -[[Expression][Result][Default]] -[[`iterator::template value_of::type`][The element stored at iterator position `It`][None]] -[[`iterator::template deref::type`][The type returned when dereferencing an iterator of type `It`][None]] -[[`iterator::template deref::call(it)`][Dereferences iterator `it`][None]] -[[`iterator::template next::type`][The type of the next element from `It`][None]] -[[`iterator::template next::call(it)`][The next iterator after `it`][None]] -[[`iterator::template prior::type`][The type of the next element from `It`][None]] -[[`iterator::template prior::call(it)`][The next iterator after `it`][None]] -[[`iterator::template advance::type`][The type of an iterator advanced `N` elements from `It`][Implemented in terms of `next` and `prior`]] -[[`iterator::template advance::call(it)`][An iterator advanced `N` elements from `it`][Implemented in terms of `next` and `prior`]] -[[`iterator::template distance::type`][The distance between iterators of type `It1` and `It2` as an __mpl_integral_constant__][None]] -[[`iterator::template distance::call(it1, it2)`][The distance between iterator `it1` and `it2`][None]] -[[`iterator::template equal_to::type`][The distance between iterators of type `It1` and `It2`][`boost::same_type::type`]] -[[`iterator::template equal_to::call(it1, it2)`][The distance between iterators `it1` and `it2`][`boost::same_type::type()`]] -] - -[heading Header] - - #include - #include - -[heading Example] -A full worked example using __iterator_facade__ is provided in triple.cpp in the extension examples. - -[endsect] - -[section Macros] - -[section:adapt_struct BOOST_FUSION_ADAPT_STRUCT] - -[heading Description] -BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the -necessary boilerplate to make an arbitrary struct into a __random_access_sequence__. - -[heading Synopsis] - BOOST_FUSION_ADAPT_STRUCT( - struct_name - (member_type0, member_name0) - (member_type1, member_name1) - ... - ) - -[heading Semantics] - BOOST_FUSION_ADAPT_STRUCT( - struct_name, - (member_type0, member_name0) - (member_type1, member_name1) - ... - ) - -The above macro generates the necessary code to adapt `struct_name` -as a model of __random_access_sequence__. The sequence of `(member_typeN, member_nameN)` -pairs declare the type and names of each of the struct members that will be -part of the sequence. - -The macro should be used at global scope, and `struct_name` should be the fully -namespace qualified name of the struct to be converted. - -/adapted/struct/adapt_struct.hpp> - -[heading Example] - namespace demo - { - struct employee - { - std::string name; - int age; - }; - } - - // demo::employee is now a Fusion sequence - BOOST_FUSION_ADAPT_STRUCT( - demo::employee - (std::string, name) - (int, age)) - -[endsect] - -[section:adapt_assoc BOOST_FUSION_ADAPT_ASSOC_STRUCT] - -[heading Description] -BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all the -necessary boilerplate to make an arbitrary struct into a model of __random_access_sequence__ -and __associative_sequence__. - -[heading Synopsis] - BOOST_FUSION_ADAPT_ASSOC_STRUCT( - struct_name - (member_type0, member_name0, key_type0) - (member_type1, member_name1, key_type1) - ... - ) - -[heading Semantics] - BOOST_FUSION_ADAPT_ASSOC_STRUCT( - struct_name - (member_type0, member_name0, key_type0) - (member_type1, member_name1, key_type1) - ... - ) - -The above macro generates the necessary code to adapt `struct_name` -as a model of __random_access_sequence__ and __associative_sequence__. -The sequence of `(member_typeN, member_nameN, key_typeN)` -triples declare the type, name and key type of each of the struct members -that will be part of the sequence. - -The macro should be used at global scope, and `struct_name` should be the fully -namespace qualified name of the struct to be converted. - -/adapted/struct/adapt_assoc_struct.hpp> - -[heading Example] - namespace demo - { - struct employee - { - std::string name; - int age; - }; - } - - namespace keys - { - struct name; - struct age; - } - - // demo::employee is now a Fusion sequence - // It is also an associative sequence with - // keys keys::name and keys::age present. - BOOST_FUSION_ADAPT_ASSOC_STRUCT( - demo::employee - (std::string, name, keys::name) - (int, age, keys::age)) - - -[endsect] - -[endsect] - -[endsect] - diff --git a/doc/functional.qbk b/doc/functional.qbk deleted file mode 100644 index 6b83c554..00000000 --- a/doc/functional.qbk +++ /dev/null @@ -1,1702 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Functional] - -Components to call functions and function objects and to make Fusion code -callable through a function object interface. - -/functional.hpp> - -[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 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`. -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, approximate 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] - -[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. - -[heading Models] -* function pointer types -* 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] - - -[section:reg_callable Regular Callable Object] - -[heading Description] - -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 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(a1, ...aN)`][Unspecified][Unspecified]] -] - -[heading Models] -* 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] - - -[section:def_callable Deferred Callable Object] - -[heading Description] - -__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 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`][Result of a call with `A1 ...AN`-typed arguments]] -] - -[heading Models] -* __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] - - -[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__ - -[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] - - -[endsect] - -[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] - -[section Invocation] - -[section Functions] - -[section invoke] - -[heading Description] - -Calls a __def_callable_obj__ with the arguments from a __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. - -/functional/invocation/invoke.hpp> - -[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_proc invoke_procedure] - -[heading Description] - -Calls a __callable_obj__ with the arguments from a __sequence__. The result -of the call is ignored. - -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. - -/functional/invocation/invoke_procedure.hpp> - -[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_fobj invoke_function_object] - -[heading Description] - -Calls a __poly_func_obj__ with the arguments from a __sequence__. - -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_function_object(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. - -/functional/invocation/invoke_function_object.hpp> - -[heading Example] - struct sub - { - template - struct result; - - template - struct result< Self(T,T) > - { typedef typename remove_reference::type 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__. - -[heading Synopsis] - namespace result_of - { - template< - typename Function, - class Sequence - > - struct invoke - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __invoke__ -* __fused__ - -[endsect] - -[section:invoke_proc invoke_procedure] - -[heading Description] -Returns the result type of __invoke_procedure__. - -[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_fobj invoke_function_object] - -[heading Description] -Returns the result type of __invoke_function_object__. - -[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 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 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). - -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__). - -/functional/adapter/fused.hpp> - -[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 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 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). - -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 this case -is not implemented). - -/functional/adapter/fused_procedure.hpp> - -[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 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). - -/functional/adapter/fused_function_object.hpp> - -[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; - - template - struct result< Self(T,T) > - { typedef typename remove_reference::type 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. - -[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__.] - -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). - -/functional/adapter/unfused_generic.hpp> - -[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; - - template - struct result< Self(Seq) > - : result_of::invoke< Function, typename result_of::push_front< - typename remove_reference::type, T>::type > - { }; - - template - typename result< void(Seq) >::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(), 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 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). - -/functional/adapter/unfused_lvalue_args.hpp> - -[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 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). - -/functional/adapter/unfused_rvalue_args.hpp> - -[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 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. 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). - -[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.] - -/functional/adapter/unfused_typed.hpp> - -[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) - { } - - typedef void result_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; - - template - struct result< Self(Seq) > - { - typedef typename remove_reference::type seq; - - typedef unfused_typed< fused_parallel_adder, - typename mpl::transform >::type > type; - }; - - template - typename result< void(Seq) >::type operator()(Seq const & tie) - { - return typename result< void(Seq) >::type( - fused_parallel_adder(tie) ); - } - }; - unfused_lvalue_args parallel_add; - - void try_it() - { - 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'); - } - -[heading See also] -* __unfused_generic__ -* __unfused_lvalue_args__ -* __unfused_rvalue_args__ -* __deduce__ -* __deduce_sequence__ - -[endsect] - -[endsect] [/ Adapters] - -[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] - -[section Generation] - -[section Functions] - -[section:mk_fused 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 - #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:mk_fused_proc 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 - #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:mk_fused_fobj 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 - #include - -[heading Example] - struct sub - { - template - struct result; - - template - struct result< Self(T,T) > - { typedef typename remove_reference::type 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:mk_unfused_genrc 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 - #include - -[heading Example] - struct bottles_song - { - typedef void result_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:mk_unfused_lvargs 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 - #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:mk_unfused_rvargs 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 - #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:mk_fused make_fused] - -[heading Description] -Returns the result type of __make_fused__. - -[heading Header] - - #include - #include - -[heading Synopsis] - namespace result_of - { - template - struct make_fused - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __make_fused__ - -[endsect] - -[section:mk_fused_proc make_fused_procedure] - -[heading Description] -Returns the result type of __make_fused_procedure__. - -[heading Header] - - #include - #include - -[heading Synopsis] - namespace result_of - { - template - struct make_fused_procedure - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __make_fused_procedure__ - -[endsect] - -[section:mk_fused_fobj make_fused_function_object] - -[heading Description] -Returns the result type of __make_fused_function_object__. - -[heading Header] - - #include - #include - -[heading Synopsis] - namespace result_of - { - template - struct make_fused_function_object - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __make_fused_function_object__ - -[endsect] - -[section:mk_unfused_genrc make_unfused_generic] - -[heading Description] -Returns the result type of __make_unfused_generic__. - -[heading Header] - - #include - #include - -[heading Synopsis] - namespace result_of - { - template - struct make_unfused_generic - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __make_unfused_generic__ - -[endsect] - -[section:mk_unfused_lvargs make_unfused_lvalue_args] - -[heading Description] -Returns the result type of __make_unfused_lvalue_args__. - -[heading Header] - - #include - #include - -[heading Synopsis] - namespace result_of - { - template - struct make_unfused_lvalue_args - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __make_unfused_lvalue_args__ - -[endsect] - -[section:mk_unfused_rvargs make_unfused_rvalue_args] - -[heading Description] -Returns the result type of __make_unfused_rvalue_args__. - -[heading Header] - - #include - #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 deleted file mode 100644 index 69dd235e..00000000 --- a/doc/fusion.qbk +++ /dev/null @@ -1,321 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[library Fusion - [quickbook 1.3] - [version 2.0] - [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 - Distributed under the 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 __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]] -[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 __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/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`]] - -[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 __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 __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`]] - -[def __iterator__ [link fusion.iterator Iterator]] -[def __iterator_concepts__ [link fusion.iterator.concepts Iterator Concepts]] -[def __forward_iterator__ [link fusion.iterator.concepts.forward_iterator Forward Iterator]] -[def __bidirectional_iterator__ [link fusion.iterator.concepts.bidirectional_iterator Bidirectional Iterator]] -[def __random_access_iterator__ [link fusion.iterator.concepts.random_access_iterator Random Access Iterator]] - -[def __next__ [link fusion.iterator.functions.next `next`]] -[def __prior__ [link fusion.iterator.functions.prior `prior`]] -[def __advance__ [link fusion.iterator.functions.advance `advance`]] -[def __advance_c__ [link fusion.iterator.functions.advance_c `advance_c`]] -[def __distance__ [link fusion.iterator.functions.distance `distance`]] -[def __deref__ [link fusion.iterator.functions.deref `deref`]] - -[def __result_of_next__ [link fusion.iterator.metafunctions.next `result_of::next`]] -[def __result_of_prior__ [link fusion.iterator.metafunctions.prior `result_of::prior`]] -[def __result_of_equal_to__ [link fusion.iterator.metafunctions.equal_to `result_of::equal_to`]] -[def __result_of_advance__ [link fusion.iterator.metafunctions.advance `result_of::advance`]] -[def __result_of_advance_c__ [link fusion.iterator.metafunctions.advance_c `result_of::advance_c`]] -[def __result_of_distance__ [link fusion.iterator.metafunctions.distance `result_of::distance`]] -[def __result_of_deref__ [link fusion.iterator.metafunctions.deref `result_of::deref`]] -[def __result_of_value_of__ [link fusion.iterator.metafunctions.value_of `result_of::value_of`]] -[def __value_of__ [link fusion.iterator.metafunctions.value_of `value_of`]] - -[def __sequence__ [link fusion.sequence Sequence]] -[def __sequence_concepts__ [link fusion.sequence.concepts Sequence Concepts]] -[def __traversal_concept__ [link fusion.sequence.concepts.traversal Sequence Traversal Concept]] -[def __associativity_concept__ [link fusion.sequence.concepts.associativity Sequence Associativity Concept]] -[def __forward_sequence__ [link fusion.sequence.concepts.forward_sequence Forward Sequence]] -[def __bidirectional_sequence__ [link fusion.sequence.concepts.bidirectional_sequence Bidirectional Sequence]] -[def __random_access_sequence__ [link fusion.sequence.concepts.random_access_sequence Random Access Sequence]] -[def __associative_sequence__ [link fusion.sequence.concepts.associative_sequence Associative Sequence]] - -[def __containers__ [link fusion.container Container]] -[def __vector__ [link fusion.container.vector `vector`]] -[def __cons__ [link fusion.container.cons `cons`]] -[def __list__ [link fusion.container.list `list`]] -[def __set__ [link fusion.container.set `set`]] -[def __map__ [link fusion.container.map `map`]] - -[def __view__ [link fusion.view View]] -[def __views__ [link fusion.view Views]] -[def __single_view__ [link fusion.view.single_view `single_view`]] -[def __filter_view__ [link fusion.view.filter_view `filter_view`]] -[def __iterator_range__ [link fusion.view.iterator_range `iterator_range`]] -[def __joint_view__ [link fusion.view.joint_view `joint_view`]] -[def __transform_view__ [link fusion.view.transform_view `transform_view`]] -[def __reverse_view__ [link fusion.view.reverse_view `reverse_view`]] -[def __zip_view__ [link fusion.view.zip_view `zip_view`]] - -[def __std_pair__ [link fusion.adapted.std__pair `std::pair`]] -[def __boost_array__ [link fusion.adapted.boost__array `boost::array`]] -[def __mpl_sequence__ [link fusion.adapted.mpl_sequence mpl sequence]] - -[def __intrinsic__ [link fusion.sequence.intrinsic Intrinsic]] -[def __intrinsics__ [link fusion.sequence.intrinsic Intrinsics]] -[def __begin__ [link fusion.sequence.intrinsic.functions.begin `begin`]] -[def __result_of_begin__ [link fusion.sequence.intrinsic.metafunctions.begin `result_of::begin`]] -[def __end__ [link fusion.sequence.intrinsic.functions.end `end`]] -[def __result_of_end__ [link fusion.sequence.intrinsic.metafunctions.end `result_of::end`]] -[def __size__ [link fusion.sequence.intrinsic.functions.size `size`]] -[def __result_of_size__ [link fusion.sequence.intrinsic.metafunctions.size `result_of::size`]] -[def __empty__ [link fusion.sequence.intrinsic.functions.empty `empty`]] -[def __result_of_empty__ [link fusion.sequence.intrinsic.metafunctions.empty `result_of::empty`]] -[def __front__ [link fusion.sequence.intrinsic.functions.front `front`]] -[def __result_of_front__ [link fusion.sequence.intrinsic.metafunctions.front `result_of::front`]] -[def __back__ [link fusion.sequence.intrinsic.functions.back `back`]] -[def __result_of_back__ [link fusion.sequence.intrinsic.metafunctions.back `result_of::back`]] -[def __at__ [link fusion.sequence.intrinsic.functions.at `at`]] -[def __result_of_at__ [link fusion.sequence.intrinsic.metafunctions.at `result_of::at`]] -[def __at_c__ [link fusion.sequence.intrinsic.functions.at_c `at_c`]] -[def __result_of_at_c__ [link fusion.sequence.intrinsic.metafunctions.at_c `result_of::at_c`]] -[def __at_key__ [link fusion.sequence.intrinsic.functions.at_key `at_key`]] -[def __result_of_at_key__ [link fusion.sequence.intrinsic.metafunctions.at_key `result_of::at_key`]] -[def __has_key__ [link fusion.sequence.intrinsic.functions.has_key `has_key`]] -[def __result_of_has_key__ [link fusion.sequence.intrinsic.metafunctions.has_key `result_of::has_key`]] -[def __value_at_key__ [link fusion.sequence.intrinsic.metafunctions.value_at_key `value_at_key`]] -[def __result_of_value_at__ [link fusion.sequence.intrinsic.metafunctions.value_at `result_of::value_at`]] -[def __result_of_value_at_c__ [link fusion.sequence.intrinsic.metafunctions.value_at_c `result_of::value_at_c`]] -[def __result_of_value_at_key__ [link fusion.sequence.intrinsic.metafunctions.value_at_key `result_of::value_at_key`]] - -[def __conversion__ [link fusion.container.conversion.functions Conversion]] -[def __result_of_conversion__ [link fusion.container.conversion.metafunctions Conversion Metafunctions]] -[def __as_vector__ [link fusion.container.conversion.functions.as_vector `as_vector`]] -[def __result_of_as_vector__ [link fusion.container.conversion.metafunctions.as_vector `result_of::as_vector`]] -[def __as_list__ [link fusion.container.conversion.functions.as_list `as_list`]] -[def __result_of_as_list__ [link fusion.container.conversion.metafunctions.as_list `result_of::as_list`]] -[def __as_set__ [link fusion.container.conversion.functions.as_set `as_set`]] -[def __result_of_as_set__ [link fusion.container.conversion.metafunctions.as_set `result_of::as_set`]] -[def __as_map__ [link fusion.container.conversion.functions.as_map `as_map`]] -[def __result_of_as_map__ [link fusion.container.conversion.metafunctions.as_map `result_of::as_map`]] - -[def __generation__ [link fusion.container.generation.functions Generation]] -[def __result_of_generation__ [link fusion.container.generation.metafunctions Generation Metafunctions]] -[def __make_vector__ [link fusion.container.generation.functions.make_vector `make_vector`]] -[def __result_of_make_vector__ [link fusion.container.generation.metafunctions.make_vector `result_of::make_vector`]] -[def __vector_tie__ [link fusion.container.generation.functions.vector_tie `vector_tie`]] -[def __map_tie__ [link fusion.container.generation.functions.vector_tie `map_tie`]] -[def __result_of_vector_tie__ [link fusion.container.generation.metafunctions.vector_tie `result_of::vector_tie`]] -[def __make_vector__ [link fusion.container.generation.functions.make_vector `make_vector`]] -[def __result_of_make_vector__ [link fusion.container.generation.metafunctions.make_vector `result_of::make_vector`]] -[def __make_cons__ [link fusion.container.generation.functions.make_cons `make_cons`]] -[def __result_of_make_cons__ [link fusion.container.generation.metafunctions.make_cons `result_of::make_cons`]] -[def __make_list__ [link fusion.container.generation.functions.make_list `make_list`]] -[def __result_of_make_list__ [link fusion.container.generation.metafunctions.make_list `result_of::make_list`]] -[def __make_set__ [link fusion.container.generation.functions.make_set `make_set`]] -[def __result_of_make_set__ [link fusion.container.generation.metafunctions.make_set `result_of::make_set`]] -[def __make_map__ [link fusion.container.generation.functions.make_map `make_map`]] -[def __result_of_make_map__ [link fusion.container.generation.metafunctions.make_map `result_of::make_map`]] -[def __list_tie__ [link fusion.container.generation.functions.list_tie `list_tie`]] -[def __result_of_list_tie__ [link fusion.container.generation.metafunctions.list_tie `result_of::list_tie`]] - -[def __out__ [link fusion.sequence.operator.i_o.out out]] -[def __in__ [link fusion.sequence.operator.i_o.in in]] -[def __eq__ [link fusion.sequence.operator.comparison.equal equal]] -[def __neq__ [link fusion.sequence.operator.comparison.not_equal not equal]] -[def __lt__ [link fusion.sequence.operator.comparison.less_than less than]] -[def __lte__ [link fusion.sequence.operator.comparison.less_than_equal less than equal]] -[def __gt__ [link fusion.sequence.operator.comparison.greater_than greater than]] -[def __gte__ [link fusion.sequence.operator.comparison.greater_than_equal greater than equal]] - -[def __algorithm__ [link fusion.algorithm Algorithm]] -[def __algorithms__ [link fusion.algorithm Algorithms]] -[def __fold__ [link fusion.algorithm.iteration.functions.fold `fold`]] -[def __result_of_fold__ [link fusion.algorithm.iteration.metafunctions.fold `result_of::fold`]] -[def __accumulate__ [link fusion.algorithm.iteration.functions.accumulate `accumulate`]] -[def __result_of_accumulate__ [link fusion.algorithm.iteration.metafunctions.accumulate `result_of::accumulate`]] -[def __for_each__ [link fusion.algorithm.iteration.functions.for_each `for_each`]] -[def __result_of_for_each__ [link fusion.algorithm.iteration.metafunctions.for_each `result_of::for_each`]] -[def __any__ [link fusion.algorithm.query.functions.any `any`]] -[def __result_of_any__ [link fusion.algorithm.query.metafunctions.any `result_of::any`]] -[def __all__ [link fusion.algorithm.query.functions.all `all`]] -[def __result_of_all__ [link fusion.algorithm.query.metafunctions.all `result_of::all`]] -[def __none__ [link fusion.algorithm.query.functions.none `none`]] -[def __result_of_none__ [link fusion.algorithm.query.metafunctions.none `result_of::none`]] -[def __find__ [link fusion.algorithm.query.functions.find `find`]] -[def __result_of_find__ [link fusion.algorithm.query.metafunctions.find `result_of::find`]] -[def __find_if__ [link fusion.algorithm.query.functions.find_if `find_if`]] -[def __result_of_find_if__ [link fusion.algorithm.query.metafunctions.find_if `result_of::find_if`]] -[def __count__ [link fusion.algorithm.query.functions.count `count`]] -[def __result_of_count__ [link fusion.algorithm.query.metafunctions.count `result_of::count`]] -[def __count_if__ [link fusion.algorithm.query.functions.count_if `count_if`]] -[def __result_of_count_if__ [link fusion.algorithm.query.metafunctions.count_if `result_of::count_if`]] -[def __filter__ [link fusion.algorithm.transformation.functions.filter `filter`]] -[def __result_of_filter__ [link fusion.algorithm.transformation.metafunctions.filter `result_of::filter`]] -[def __filter_if__ [link fusion.algorithm.transformation.functions.filter_if `filter_if`]] -[def __result_of_filter_if__ [link fusion.algorithm.transformation.metafunctions.filter_if `result_of::filter_if`]] -[def __transform__ [link fusion.algorithm.transformation.functions.transform `transform`]] -[def __result_of_transform__ [link fusion.algorithm.transformation.metafunctions.transform `result_of::transform`]] -[def __replace__ [link fusion.algorithm.transformation.functions.replace `replace`]] -[def __result_of_replace__ [link fusion.algorithm.transformation.metafunctions.replace `result_of::replace`]] -[def __replace_if__ [link fusion.algorithm.transformation.functions.replace_if `replace_if`]] -[def __result_of_replace_if__ [link fusion.algorithm.transformation.metafunctions.replace_if `result_of::replace_if`]] -[def __remove__ [link fusion.algorithm.transformation.functions.remove `remove`]] -[def __result_of_remove__ [link fusion.algorithm.transformation.metafunctions.remove `result_of::remove`]] -[def __remove_if__ [link fusion.algorithm.transformation.functions.remove_if `remove_if`]] -[def __result_of_remove_if__ [link fusion.algorithm.transformation.metafunctions.remove_if `result_of::remove_if`]] -[def __reverse__ [link fusion.algorithm.transformation.functions.reverse `reverse`]] -[def __result_of_reverse__ [link fusion.algorithm.transformation.metafunctions.reverse `result_of::reverse`]] -[def __clear__ [link fusion.algorithm.transformation.functions.clear `clear`]] -[def __result_of_clear__ [link fusion.algorithm.transformation.metafunctions.clear `result_of::clear`]] -[def __erase__ [link fusion.algorithm.transformation.functions.erase `erase`]] -[def __result_of_erase__ [link fusion.algorithm.transformation.metafunctions.erase `result_of::erase`]] -[def __erase_key__ [link fusion.algorithm.transformation.functions.erase_key `erase_key`]] -[def __result_of_erase_key__ [link fusion.algorithm.transformation.metafunctions.erase_key `result_of::erase_key`]] -[def __insert__ [link fusion.algorithm.transformation.functions.insert `insert`]] -[def __result_of_insert__ [link fusion.algorithm.transformation.metafunctions.insert `result_of::insert`]] -[def __insert_range__ [link fusion.algorithm.transformation.functions.insert_range `insert_range`]] -[def __result_of_insert_range__ [link fusion.algorithm.transformation.metafunctions.insert_range `result_of::insert_range`]] -[def __join__ [link fusion.algorithm.transformation.functions.join `join`]] -[def __result_of_join__ [link fusion.algorithm.transformation.metafunctions.join `result_of::join`]] -[def __zip__ [link fusion.algorithm.transformation.functions.zip `zip`]] -[def __result_of_zip__ [link fusion.algorithm.transformation.metafunctions.zip `result_of::zip`]] -[def __pop_back__ [link fusion.algorithm.transformation.functions.pop_back `pop_back`]] -[def __result_of_pop_back__ [link fusion.algorithm.transformation.metafunctions.pop_back `result_of::pop_back`]] -[def __pop_front__ [link fusion.algorithm.transformation.functions.pop_front `pop_front`]] -[def __result_of_pop_front__ [link fusion.algorithm.transformation.metafunctions.pop_front `result_of::pop_front`]] -[def __push_back__ [link fusion.algorithm.transformation.functions.push_back `push_back`]] -[def __result_of_push_back__ [link fusion.algorithm.transformation.metafunctions.push_back `result_of::push_back`]] -[def __push_front__ [link fusion.algorithm.transformation.functions.push_front `push_front`]] -[def __result_of_push_front__ [link fusion.algorithm.transformation.metafunctions.push_front `result_of::push_front`]] - -[def __tr1_tuple_pair__ [link fusion.tuple.pairs `TR1 and std::pair`]] -[def __tuple_get__ [link fusion.tuple.class_template_tuple.element_access `get`]] - -[def __callable_obj__ [link fusion.functional.concepts.callable Callable 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`]] -[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_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_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]] -[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]] -[def __sequence_facade__ [link fusion.extension.sequence_facade `sequence_facade`]] -[def __iterator_facade__ [link fusion.extension.iterator_facade `iterator_facade`]] - -[include preface.qbk] -[include introduction.qbk] -[include quick_start.qbk] -[include organization.qbk] -[include support.qbk] -[include iterator.qbk] -[include sequence.qbk] -[include container.qbk] -[include view.qbk] -[include adapted.qbk] -[include algorithm.qbk] -[include tuple.qbk] -[include extension.qbk] -[include functional.qbk] -[include notes.qbk] -[include changelog.qbk] -[include acknowledgements.qbk] -[include references.qbk] - diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html deleted file mode 100644 index d10ff6f0..00000000 --- a/doc/html/fusion/acknowledgements.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -Acknowledgements - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- 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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html deleted file mode 100644 index 0a9121e6..00000000 --- a/doc/html/fusion/adapted.html +++ /dev/null @@ -1,77 +0,0 @@ - - - -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 - [13] - . -

-

- - Header -

-
-#include <boost/fusion/adapted.hpp>
-#include <boost/fusion/include/adapted.hpp>
-
-
-

-

[13] - 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 -

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html deleted file mode 100644 index b36302b5..00000000 --- a/doc/html/fusion/adapted/boost__array.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -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/adapted/array.hpp>
-#include <boost/fusion/include/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 -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html deleted file mode 100644 index 43d5f773..00000000 --- a/doc/html/fusion/adapted/boost__tuple.html +++ /dev/null @@ -1,81 +0,0 @@ - - - -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/adapted/boost_tuple.hpp>
-#include <boost/fusion/include/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 -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/adapted/boost__variant.html b/doc/html/fusion/adapted/boost__variant.html deleted file mode 100644 index 55dff32e..00000000 --- a/doc/html/fusion/adapted/boost__variant.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -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/adapted/variant.hpp>
-#include <boost/fusion/include/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 -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html deleted file mode 100644 index 5ba8af24..00000000 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ /dev/null @@ -1,101 +0,0 @@ - - - -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/adapted/mpl.hpp>
-#include <boost/fusion/include/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 -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html deleted file mode 100644 index 50693588..00000000 --- a/doc/html/fusion/adapted/std__pair.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -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/adapted/std_pair.hpp>
-#include <boost/fusion/include/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 -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html deleted file mode 100644 index 25330b6a..00000000 --- a/doc/html/fusion/algorithm.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -Algorithm - - - - - - - - - - - - - - - -
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>
-#include <boost/fusion/include/algorithm.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html deleted file mode 100644 index 4782c651..00000000 --- a/doc/html/fusion/algorithm/iteration.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -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>
-#include <boost/fusion/include/iteration.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html deleted file mode 100644 index 155c47c9..00000000 --- a/doc/html/fusion/algorithm/iteration/functions.html +++ /dev/null @@ -1,48 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html deleted file mode 100644 index 8a0c5a80..00000000 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ /dev/null @@ -1,203 +0,0 @@ - - - -accumulate - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

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

Table 1.34. 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 -

-
-

- 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 -

-
-

- 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>
-#include <boost/fusion/include/accumulate.hpp>
-
-
- - Example -
-
-struct make_string
-{
-    typedef std::string result_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");
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html deleted file mode 100644 index 00cfa7ae..00000000 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ /dev/null @@ -1,203 +0,0 @@ - - - -fold - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

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

Table 1.33. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- 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 -

-
-

- 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 -

-
-

- 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>
-#include <boost/fusion/include/fold.hpp>
-
-
- - Example -
-
-struct make_string
-{
-    typedef std::string result_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");
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html deleted file mode 100644 index 2bf3b1ea..00000000 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ /dev/null @@ -1,179 +0,0 @@ - - - -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);
-
-
-

Table 1.35. 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 Regular - Callable Object -

-
-

- Operation'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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html deleted file mode 100644 index 198e3a48..00000000 --- a/doc/html/fusion/algorithm/iteration/metafunctions.html +++ /dev/null @@ -1,48 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html deleted file mode 100644 index 059cb10d..00000000 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ /dev/null @@ -1,181 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.37. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- The sequence to iterate -

-
-

- State -

-
-

- Any type -

-
-

- The initial state for the first application of F -

-
-

- F -

-
-

- boost::result_of<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 -

-
-

- 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 function object or function pointer of type F. -

-
- - Complexity -
-

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

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/accumulate.hpp>
-#include <boost/fusion/include/accumulate.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html deleted file mode 100644 index 997dc099..00000000 --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html +++ /dev/null @@ -1,181 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.36. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- The sequence to iterate -

-
-

- State -

-
-

- Any type -

-
-

- The initial state for the first application of F -

-
-

- F -

-
-

- boost::result_of<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 -

-
-

- 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 function object or function pointer of type F. -

-
- - Complexity -
-

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

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/fold.hpp>
-#include <boost/fusion/include/fold.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html deleted file mode 100644 index 1629f640..00000000 --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html +++ /dev/null @@ -1,163 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.38. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- F -

-
-

- Any type -

-
-

- Operation'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>
-#include <boost/fusion/include/for_each.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html deleted file mode 100644 index dd910180..00000000 --- a/doc/html/fusion/algorithm/query.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -Query - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

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

-

- - Header -

-
-#include <boost/fusion/algorithm/query.hpp>
-#include <boost/fusion/include/query.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html deleted file mode 100644 index a77963a7..00000000 --- a/doc/html/fusion/algorithm/query/functions.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html deleted file mode 100644 index e1017b27..00000000 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ /dev/null @@ -1,182 +0,0 @@ - - - -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);
-
-
-

Table 1.40. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/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()));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html deleted file mode 100644 index 698ad724..00000000 --- a/doc/html/fusion/algorithm/query/functions/any.html +++ /dev/null @@ -1,182 +0,0 @@ - - - -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);
-
-
-

Table 1.39. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/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()));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html deleted file mode 100644 index de84d0dd..00000000 --- a/doc/html/fusion/algorithm/query/functions/count.html +++ /dev/null @@ -1,169 +0,0 @@ - - - -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);
-
-
-

Table 1.44. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/count.hpp>
-
-
- - Example -
-
-const vector<double,int,int> vec(1.0,2,3);
-assert(count(vec,2) == 1);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html deleted file mode 100644 index c87d265c..00000000 --- a/doc/html/fusion/algorithm/query/functions/count_if.html +++ /dev/null @@ -1,168 +0,0 @@ - - - -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);
-
-
-

Table 1.45. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/count_if.hpp>
-
-
- - Example -
-
-const vector<int,int,int> vec(1,2,3);
-assert(count_if(vec,odd()) == 2);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html deleted file mode 100644 index a9c4cb50..00000000 --- a/doc/html/fusion/algorithm/query/functions/find.html +++ /dev/null @@ -1,174 +0,0 @@ - - - -find - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

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

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

Table 1.42. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- The sequence to search -

-
-

- T -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/find.hpp>
-
-
- - Example -
-
-const vector<char,int> vec('a','0');
-assert(*find<int>(vec) == '0');
-assert(find<double>(vec) == end(vec));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html deleted file mode 100644 index 13a68b8f..00000000 --- a/doc/html/fusion/algorithm/query/functions/find_if.html +++ /dev/null @@ -1,173 +0,0 @@ - - - -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 F,
-    typename Sequence
-    >
-unspecified find_if(Sequence const& seq);
-
-template<
-    typename F,
-    typename Sequence
-    >
-unspecified find_if(Sequence& seq);
-
-
-

Table 1.43. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- The sequence to search -

-
-

- F -

-
-

- A unary MPL - Lambda Expression -

-
-

- The 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. -

-

- /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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html deleted file mode 100644 index 2502ca6f..00000000 --- a/doc/html/fusion/algorithm/query/functions/none.html +++ /dev/null @@ -1,182 +0,0 @@ - - - -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);
-
-
-

Table 1.41. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/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()));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html deleted file mode 100644 index 68581c9e..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html deleted file mode 100644 index 3065c286..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.47. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- F -

-
-

- A 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>
-#include <boost/fusion/include/all.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html deleted file mode 100644 index 3d3cfb21..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions/any.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.46. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- F -

-
-

- A 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>
-#include <boost/fusion/include/any.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html deleted file mode 100644 index 7eaee591..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions/count.html +++ /dev/null @@ -1,161 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.51. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- heading Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- Operation'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>
-#include <boost/fusion/include/count.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html deleted file mode 100644 index 00398d26..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html +++ /dev/null @@ -1,161 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.52. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- Pred -

-
-

- A unary function object -

-
-

- Operation'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>
-#include <boost/fusion/include/count_if.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html deleted file mode 100644 index 4d219b73..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions/find.html +++ /dev/null @@ -1,163 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.49. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- Model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- Operation'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>
-#include <boost/fusion/include/find.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html deleted file mode 100644 index ac850be5..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html +++ /dev/null @@ -1,164 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.50. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- Pred -

-
-

- A model of MPL - Lambda Expression -

-
-

- Operation'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>
-#include <boost/fusion/include/find_if.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html deleted file mode 100644 index 0da5e523..00000000 --- a/doc/html/fusion/algorithm/query/metafunctions/none.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.48. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- F -

-
-

- A 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>
-#include <boost/fusion/include/none.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html deleted file mode 100644 index f7a3481f..00000000 --- a/doc/html/fusion/algorithm/transformation.html +++ /dev/null @@ -1,71 +0,0 @@ - - - -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>
-#include <boost/fusion/include/transformation.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html deleted file mode 100644 index 10863dc6..00000000 --- a/doc/html/fusion/algorithm/transformation/functions.html +++ /dev/null @@ -1,64 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html deleted file mode 100644 index 173037b8..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ /dev/null @@ -1,145 +0,0 @@ - - - -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);
-
-
-

Table 1.62. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A 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>
-#include <boost/fusion/include/clear.hpp>
-
-
- - Example -
-
-assert(clear(make_vector(1,2,3)) == make_vector());
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html deleted file mode 100644 index 6f7c111e..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/erase.html +++ /dev/null @@ -1,213 +0,0 @@ - - - -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);
-
-
-

Table 1.63. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html deleted file mode 100644 index 6ba6a695..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html +++ /dev/null @@ -1,172 +0,0 @@ - - - -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);
-
-
-

Table 1.64. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Associative - Sequence -

-
-

- Operation's argument -

-
-

- Key -

-
-

- Any type -

-
-

- Key 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>
-#include <boost/fusion/include/erase_key.hpp>
-
-
- - Example -
-
-assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html deleted file mode 100644 index a332c3d3..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/filter.html +++ /dev/null @@ -1,169 +0,0 @@ - - - -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);
-
-
-

Table 1.53. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/filter.hpp>
-
-
- - Example -
-
-const vector<int,int,long,long> vec(1,2,3,4);
-assert(filter<int>(vec) == make_vector(1,2));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html deleted file mode 100644 index 69d113cc..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html +++ /dev/null @@ -1,172 +0,0 @@ - - - -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);
-
-
-

Table 1.54. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- Pred -

-
-

- A unary MPL - Lambda Expression -

-
-

- The 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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html deleted file mode 100644 index 9f96a928..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/insert.html +++ /dev/null @@ -1,190 +0,0 @@ - - - -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);
-
-
-

Table 1.65. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/insert.hpp>
-
-
- - Example -
-
-const vector<int,int> vec(1,2);
-assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html deleted file mode 100644 index a722101d..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html +++ /dev/null @@ -1,193 +0,0 @@ - - - -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);
-
-
-

Table 1.66. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html deleted file mode 100644 index 97e6b27b..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/join.html +++ /dev/null @@ -1,171 +0,0 @@ - - - -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);
-
-
-

Table 1.67. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- lhs -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- rhs -

-
-

- A 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>
-#include <boost/fusion/include/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'));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html deleted file mode 100644 index 469ccdb1..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html +++ /dev/null @@ -1,147 +0,0 @@ - - - -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);
-
-
-

Table 1.69. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A 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>
-#include <boost/fusion/include/pop_back.hpp>
-
-
- - Example -
-
-assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html deleted file mode 100644 index e35b7b96..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html +++ /dev/null @@ -1,147 +0,0 @@ - - - -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);
-
-
-

Table 1.70. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A 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>
-#include <boost/fusion/include/pop_front.hpp>
-
-
- - Example -
-
-assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html deleted file mode 100644 index 45e5c236..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html +++ /dev/null @@ -1,168 +0,0 @@ - - - -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);
-
-
-

Table 1.71. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- t -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/push_back.hpp>
-
-
- - Example -
-
-assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html deleted file mode 100644 index 968235c8..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html +++ /dev/null @@ -1,169 +0,0 @@ - - - -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);
-
-
-

Table 1.72. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- t -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/push_front.hpp>
-
-
- - Example -
-
-assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html deleted file mode 100644 index 73274cbb..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/remove.html +++ /dev/null @@ -1,169 +0,0 @@ - - - -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);
-
-
-

Table 1.59. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- Type 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>
-#include <boost/fusion/include/remove.hpp>
-
-
- - Example -
-
-const vector<int,double> vec(1,2.0);
-assert(remove<double>(vec) == make_vector(1));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html deleted file mode 100644 index fbefda13..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html +++ /dev/null @@ -1,171 +0,0 @@ - - - -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);
-
-
-

Table 1.60. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- Pred -

-
-

- A model of unary MPL - Lambda Expression -

-
-

- Removal 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>
-#include <boost/fusion/include/remove_if.hpp>
-
-
- - Example -
-
-const vector<int,double> vec(1,2.0);
-assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html deleted file mode 100644 index f3b6ee15..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/replace.html +++ /dev/null @@ -1,190 +0,0 @@ - - - -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);
-
-
-

Table 1.57. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/replace.hpp>
-
-
- - Example -
-
-assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html deleted file mode 100644 index 3e3fe678..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html +++ /dev/null @@ -1,199 +0,0 @@ - - - -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);
-
-
-

Table 1.58. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html deleted file mode 100644 index e9b86fd2..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -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);
-
-
-

Table 1.61. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A 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>
-#include <boost/fusion/include/reverse.hpp>
-
-
- - Example -
-
-assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html deleted file mode 100644 index 24029b65..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/transform.html +++ /dev/null @@ -1,297 +0,0 @@ - - - -transform - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- 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 -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::transform<Sequence const, F>::type transform(
-    Sequence const& seq, F f);
-
-
-

Table 1.55. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- 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<F(E)>::type is the return type of f when called with a value of - each element type E. -

-
-

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

Table 1.56. 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 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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html deleted file mode 100644 index ac8f1653..00000000 --- a/doc/html/fusion/algorithm/transformation/functions/zip.html +++ /dev/null @@ -1,158 +0,0 @@ - - - -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);
-
-
-

Table 1.68. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- 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>
-#include <boost/fusion/include/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'));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html deleted file mode 100644 index f6bad707..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions.html +++ /dev/null @@ -1,64 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html deleted file mode 100644 index 1b0a6c9a..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ /dev/null @@ -1,139 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.82. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- Any type -

-
-

- Operation'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>
-#include <boost/fusion/include/clear.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html deleted file mode 100644 index 1a729e51..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html +++ /dev/null @@ -1,196 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.83. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/erase.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html deleted file mode 100644 index 7daef275..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html +++ /dev/null @@ -1,163 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.84. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Associative - Sequence -

-
-

- Operation's argument -

-
-

- Key -

-
-

- Any type -

-
-

- Key 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>
-#include <boost/fusion/include/erase_key.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html deleted file mode 100644 index 840630cc..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html +++ /dev/null @@ -1,165 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.73. Parameter

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- Type 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>
-#include <boost/fusion/include/filter.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html deleted file mode 100644 index 223bdff6..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.74. Parameter

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- Pred -

-
-

- A unary MPL - Lambda Expression -

-
-

- Type 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>
-#include <boost/fusion/include/filter_if.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html deleted file mode 100644 index 2325c2b6..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html +++ /dev/null @@ -1,184 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.85. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/insert.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html deleted file mode 100644 index 3ed32a9d..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html +++ /dev/null @@ -1,186 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.86. 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 -

-
-
-
- - 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>
-#include <boost/fusion/include/insert_range.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html deleted file mode 100644 index d5161a7f..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html +++ /dev/null @@ -1,98 +0,0 @@ - - - -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>
-#include <boost/fusion/include/join.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html deleted file mode 100644 index d721679b..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html +++ /dev/null @@ -1,143 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.87. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A 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>
-#include <boost/fusion/include/pop_back.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html deleted file mode 100644 index cf63ad2e..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.88. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A 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. -

-

- /algorithm/transformation/pop_front.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html deleted file mode 100644 index 89823b4e..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.89. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- Operation'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. -

-

- /algorithm/transformation/push_back.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html deleted file mode 100644 index 1b200171..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.90. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- Operation'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. -

-

- /algorithm/transformation/push_front.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html deleted file mode 100644 index 703673e0..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ /dev/null @@ -1,165 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.79. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- Remove 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>
-#include <boost/fusion/include/remove.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html deleted file mode 100644 index 1ea7739c..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.80. 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_ -

-
-
-
- - 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>
-#include <boost/fusion/include/remove_if.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html deleted file mode 100644 index d6d9c35d..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html +++ /dev/null @@ -1,162 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.77. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- T -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/replace.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html deleted file mode 100644 index dcded614..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html +++ /dev/null @@ -1,183 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.78. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- Operation's argument -

-
-

- F -

-
-

- A model of unary Polymorphic - Function Object -

-
-

- Replacement predicate -

-
-

- T -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/replace_if.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html deleted file mode 100644 index 17bc9674..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html +++ /dev/null @@ -1,142 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.81. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A 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>
-#include <boost/fusion/include/reverse.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html deleted file mode 100644 index 2e12466d..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html +++ /dev/null @@ -1,297 +0,0 @@ - - - -transform - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- 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 -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::transform<Sequence const, F>::type transform(
-    Sequence const& seq, F f);
-
-
-

Table 1.75. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- 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<F(E)>::type is the return type of f when called with a value of - each element type E. -

-
-

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

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 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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html deleted file mode 100644 index e97c4f37..00000000 --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html +++ /dev/null @@ -1,105 +0,0 @@ - - - -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>
-#include <boost/fusion/include/zip.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html deleted file mode 100644 index dda2f704..00000000 --- a/doc/html/fusion/change_log.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Change log - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- 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. -
  • -
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html deleted file mode 100644 index cbf78d3b..00000000 --- a/doc/html/fusion/container.html +++ /dev/null @@ -1,74 +0,0 @@ - - - -Container - - - - - - - - - - - - - - - -
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/container.hpp>
-#include <boost/fusion/include/container.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html deleted file mode 100644 index 9aae9e4a..00000000 --- a/doc/html/fusion/container/cons.html +++ /dev/null @@ -1,324 +0,0 @@ - - - -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/container/list/cons.hpp>
-#include <boost/fusion/include/cons.hpp>
-
-

- - Synopsis -

-
-template <typename Car, typename Cdr = nil>
-struct cons;
-
-

- - Template parameters -

-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Car -

-
-

- Head type -

-
-

-

-
-

- Cdr -

-
-

- Tail type -

-
-

- nil -

-
-

- - 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 MPL - Integral Constant -

-
-
-

- - Expression Semantics -

-

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

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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<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_c<0>(l) << std::endl;
-std::cout << at_c<1>(l) << std::endl;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html deleted file mode 100644 index 7dce3bc0..00000000 --- a/doc/html/fusion/container/conversion.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -Conversion - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

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

-

- - Header -

-
-#include <boost/fusion/include/convert.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html deleted file mode 100644 index 62891875..00000000 --- a/doc/html/fusion/container/conversion/functions.html +++ /dev/null @@ -1,49 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html deleted file mode 100644 index c1c01063..00000000 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- An instance of Sequence -

-
-

- The 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/container/list/convert.hpp>
-#include <boost/fusion/include/as_list.hpp>
-
-
- - Example -
-
-as_list(make_vector('x', 123, "hello"))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html deleted file mode 100644 index 96970ed9..00000000 --- a/doc/html/fusion/container/conversion/functions/as_map.html +++ /dev/null @@ -1,145 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- An instance of Sequence -

-
-

- The 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/container/map/convert.hpp>
-#include <boost/fusion/include/as_map.hpp>
-
-
- - Example -
-
-as_map(make_vector(
-    make_pair<int>('X')
-  , make_pair<double>("Men")))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html deleted file mode 100644 index 07f13e38..00000000 --- a/doc/html/fusion/container/conversion/functions/as_set.html +++ /dev/null @@ -1,142 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- An instance of Sequence -

-
-

- The 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/container/set/convert.hpp>
-#include <boost/fusion/include/as_set.hpp>
-
-
- - Example -
-
-as_set(make_vector('x', 123, "hello"))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html deleted file mode 100644 index cf2ffebf..00000000 --- a/doc/html/fusion/container/conversion/functions/as_vector.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- An instance of Sequence -

-
-

- The 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/container/vector/convert.hpp>
-#include <boost/fusion/include/as_vector.hpp>
-
-
- - Example -
-
-as_vector(make_list('x', 123, "hello"))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html deleted file mode 100644 index 9e033417..00000000 --- a/doc/html/fusion/container/conversion/metafunctions.html +++ /dev/null @@ -1,49 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html deleted file mode 100644 index b38529ce..00000000 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ /dev/null @@ -1,134 +0,0 @@ - - - -as_list - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_list. -

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

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A 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/container/list/convert.hpp>
-#include <boost/fusion/include/as_list.hpp>
-
-
- - Example -
-
-result_of::as_list<vector<char, int> >::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html deleted file mode 100644 index 1cf61ca1..00000000 --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -as_map - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_map. -

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

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A 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/container/map/convert.hpp>
-#include <boost/fusion/include/as_map.hpp>
-
-
- - Example -
-
-result_of::as_map<vector<
-    fusion::pair<int, char>
-  , fusion::pair<double, std::string> > >::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html deleted file mode 100644 index bbc19d38..00000000 --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -as_set - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_set. -

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

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A 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/container/set/convert.hpp>
-#include <boost/fusion/include/as_set.hpp>
-
-
- - Example -
-
-result_of::as_set<vector<char, int> >::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html deleted file mode 100644 index a2d812b3..00000000 --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html +++ /dev/null @@ -1,134 +0,0 @@ - - - -as_vector - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_vector. -

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

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A 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/container/vector/convert.hpp>
-#include <boost/fusion/include/as_vector.hpp>
-
-
- - Example -
-
-result_of::as_vector<list<char, int> >::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html deleted file mode 100644 index 6a4fbfde..00000000 --- a/doc/html/fusion/container/generation.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -Generation - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

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

-

- - Header -

-
-#include <boost/fusion/container/generation.hpp>
-#include <boost/fusion/include/generation.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html deleted file mode 100644 index 20861a17..00000000 --- a/doc/html/fusion/container/generation/functions.html +++ /dev/null @@ -1,54 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html deleted file mode 100644 index 9e5795df..00000000 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ /dev/null @@ -1,149 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- x0, - x1,... - xN -

-
-

- Instances 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/container/generation/list_tie.hpp>
-#include <boost/fusion/include/list_tie.hpp>
-
-
- - Example -
-
-int i = 123;
-double d = 123.456;
-list_tie(i, d)
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html deleted file mode 100644 index 7563364d..00000000 --- a/doc/html/fusion/container/generation/functions/make_cons.html +++ /dev/null @@ -1,168 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- car -

-
-

- Instance of Car -

-
-

- The list's head -

-
-

- cdr -

-
-

- Instance 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/container/generation/make_cons.hpp>
-#include <boost/fusion/include/make_cons.hpp>
-
-
- - Example -
-
-make_cons('x', make_cons(123))
-
-
- - See - also -
-

- boost::ref -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html deleted file mode 100644 index fc5d03fe..00000000 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- x0, - x1,... - xN -

-
-

- Instances 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/container/generation/make_list.hpp>
-#include <boost/fusion/include/make_list.hpp>
-
-
- - Example -
-
-make_list(123, "hello", 12.5)
-
-
- - See - also -
-

- boost::ref -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html deleted file mode 100644 index b7ef105f..00000000 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ /dev/null @@ -1,196 +0,0 @@ - - - -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 - [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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- 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 -

-
-
- - 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/container/generation/make_map.hpp>
-#include <boost/fusion/include/make_map.hpp>
-
-
- - Example -
-
-make_map(
-    make_pair<int>('X')
-  , make_pair<double>("Men"))
-
-
- - See - also -
-

- boost::ref, - fusion::pair -

-
-

-

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

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html deleted file mode 100644 index 1eb34948..00000000 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ /dev/null @@ -1,167 +0,0 @@ - - - -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 - [8] - 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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- x0, - x1,... - xN -

-
-

- Instances 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/container/generation/make_set.hpp>
-#include <boost/fusion/include/make_set.hpp>
-
-
- - Example -
-
-make_set(123, "hello", 12.5)
-
-
- - See - also -
-

- boost::ref -

-
-

-

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

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html deleted file mode 100644 index 436fa1d2..00000000 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- x0, - x1,... - xN -

-
-

- Instances 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/container/generation/make_vector.hpp>
-#include <boost/fusion/include/make_vector.hpp>
-
-
- - Example -
-
-make_vector(123, "hello", 12.5)
-
-
- - See - also -
-

- boost::ref -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html deleted file mode 100644 index 9e6807c9..00000000 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ /dev/null @@ -1,175 +0,0 @@ - - - -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/container/generation/map_tie.hpp>
-#include <boost/fusion/include/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)
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html deleted file mode 100644 index c38d969c..00000000 --- a/doc/html/fusion/container/generation/functions/tiers.html +++ /dev/null @@ -1,105 +0,0 @@ - - - -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)) - [10] - . -

-

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

-

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

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html deleted file mode 100644 index a03733df..00000000 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ /dev/null @@ -1,149 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- x0, - x1,... - xN -

-
-

- Instances 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/container/generation/vector_tie.hpp>
-#include <boost/fusion/include/vector_tie.hpp>
-
-
- - Example -
-
-int i = 123;
-double d = 123.456;
-vector_tie(i, d)
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html deleted file mode 100644 index e03be94d..00000000 --- a/doc/html/fusion/container/generation/metafunctions.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -MetaFunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html deleted file mode 100644 index fca47734..00000000 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T0, - T1,... - TN -

-
-

- Any type -

-
-

- The 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/container/generation/list_tie.hpp>
-#include <boost/fusion/include/list_tie.hpp>
-
-
- - Example -
-
-result_of::list_tie<int, double>::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html deleted file mode 100644 index efe89f27..00000000 --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Car -

-
-

- Any type -

-
-

- The list's head type -

-
-

- Cdr -

-
-

- A 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/container/generation/make_cons.hpp>
-#include <boost/fusion/include/make_cons.hpp>
-
-
- - Example -
-
-result_of::make_cons<char, result_of::make_cons<int>::type>::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html deleted file mode 100644 index 8491ec4a..00000000 --- a/doc/html/fusion/container/generation/metafunctions/make_list.html +++ /dev/null @@ -1,147 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T0, - T1,... - TN -

-
-

- Any type -

-
-

- Template 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/container/generation/make_list.hpp>
-#include <boost/fusion/include/make_list.hpp>
-
-
- - Example -
-
-result_of::make_list<int, const char(&)[7], double>::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html deleted file mode 100644 index 6b4c5e24..00000000 --- a/doc/html/fusion/container/generation/metafunctions/make_map.html +++ /dev/null @@ -1,190 +0,0 @@ - - - -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 - [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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- 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 -

-
-
- - 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/container/generation/make_map.hpp>
-#include <boost/fusion/include/make_map.hpp>
-
-
- - Example -
-
-result_of::make_map<int, double, char, double>::type
-
-
- - See - also -
-

- fusion::pair -

-
-

-

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

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html deleted file mode 100644 index f9d5e46b..00000000 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -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 - [11] - 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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T0, - T1,... - TN -

-
-

- Any type -

-
-

- The 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/container/generation/make_set.hpp>
-#include <boost/fusion/include/make_set.hpp>
-
-
- - Example -
-
-result_of::make_set<int, char, double>::type
-
-
-

-

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

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html deleted file mode 100644 index 621caedc..00000000 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ /dev/null @@ -1,147 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T0, - T1,... - TN -

-
-

- Any type -

-
-

- Template 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/container/generation/make_list.hpp>
-#include <boost/fusion/include/make_list.hpp>
-
-
- - Example -
-
-result_of::make_vector<int, const char(&)[7], double>::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html deleted file mode 100644 index d1c26928..00000000 --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html +++ /dev/null @@ -1,171 +0,0 @@ - - - -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/container/generation/map_tie.hpp>
-#include <boost/fusion/include/map_tie.hpp>
-
-
- - Example -
-
-struct int_key;
-struct double_key;
-...
-result_of::map_tie<int_key, double_key, int, double>::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html deleted file mode 100644 index 8885304f..00000000 --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T0, - T1,... - TN -

-
-

- Any type -

-
-

- The 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/container/generation/vector_tie.hpp>
-#include <boost/fusion/include/vector_tie.hpp>
-
-
- - Example -
-
-result_of::vector_tie<int, double>::type
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html deleted file mode 100644 index a9ef2e9d..00000000 --- a/doc/html/fusion/container/list.html +++ /dev/null @@ -1,291 +0,0 @@ - - - -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/container/list.hpp>
-#include <boost/fusion/include/list.hpp>
-#include <boost/fusion/container/list/list_fwd.hpp>
-#include <boost/fusion/include/list_fwd.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 -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- T0...TN -

-
-

- Element types -

-
-

- unspecified-type -

-
-

- - Model of -

- -
-

Notation

-
-
L
-

- A list type -

-
l
-

- An instance of list -

-
e0...en
-

- Heterogeneous values -

-
s
-

- A Forward Sequence -

-
N
-

- An MPL - Integral Constant -

-
-
-

- - Expression Semantics -

-

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

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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<N>(l) -

-
-

- 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;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html deleted file mode 100644 index 38216d2d..00000000 --- a/doc/html/fusion/container/map.html +++ /dev/null @@ -1,280 +0,0 @@ - - - -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/container/map.hpp>
-#include <boost/fusion/include/map.hpp>
-#include <boost/fusion/container/map_fwd.hpp>
-#include <boost/fusion/include/map_fwd.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 -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- T0...TN -

-
-

- Element types -

-
-

- unspecified-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. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - 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_key<int>(m) << std::endl;
-std::cout << at_key<double>(m) << std::endl;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html deleted file mode 100644 index f78005b6..00000000 --- a/doc/html/fusion/container/set.html +++ /dev/null @@ -1,273 +0,0 @@ - - - -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/container/set.hpp>
-#include <boost/fusion/include/set.hpp>
-#include <boost/fusion/container/set_fwd.hpp>
-#include <boost/fusion/include/set_fwd.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 -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- T0...TN -

-
-

- Element types -

-
-

- unspecified-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. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - 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;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html deleted file mode 100644 index 91947a94..00000000 --- a/doc/html/fusion/container/vector.html +++ /dev/null @@ -1,307 +0,0 @@ - - - -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/container/vector.hpp>
-#include <boost/fusion/include/vector.hpp>
-#include <boost/fusion/container/vector/vector_fwd.hpp>
-#include <boost/fusion/include/vector_fwd.hpp>
-
-// numbered forms
-#include <boost/fusion/container/vector/vector10.hpp>
-#include <boost/fusion/include/vector10.hpp>
-#include <boost/fusion/container/vector/vector20.hpp>
-#include <boost/fusion/include/vector20.hpp>
-#include <boost/fusion/container/vector/vector30.hpp>
-#include <boost/fusion/include/vector30.hpp>
-#include <boost/fusion/container/vector/vector40.hpp>
-#include <boost/fusion/include/vector40.hpp>
-#include <boost/fusion/container/vector/vector50.hpp>
-#include <boost/fusion/include/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 -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- T0...TN -

-
-

- Element types -

-
-

- unspecified -

-
-

- - 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. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - Example -

-
-vector<int, float> v(12, 5.5f);
-std::cout << at_c<0>(v) << std::endl;
-std::cout << at_c<1>(v) << std::endl;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html deleted file mode 100644 index ec3d1f4e..00000000 --- a/doc/html/fusion/extension.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Extension - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html deleted file mode 100644 index a47aabcf..00000000 --- a/doc/html/fusion/extension/ext_full.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - The Full Extension Mechanism - - - - - - - - - - - - - - - -
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 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 traits::tag_of - for our sequence type. -

-
-#include <boost/fusion/support/tag_of_fwd.hpp>
-#include <boost/fusion/include/tag_of_fwd.hpp>
-
-namespace boost { namespace fusion { namespace traits {
-    template<>
-    struct tag_of<example_struct>
-    {
-        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 groups of related types. This feature is not necessary - for our sequence, but for an example see the code in: -

-
-#include <boost/fusion/adapted/array/tag_of.hpp>
-#include <boost/fusion/include/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
-    : boost::fusion::iterator_base<example_struct_iterator<Struct, Pos> >
-{
-    BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
-    typedef Struct struct_type;
-    typedef boost::mpl::int_<Pos> index;
-    typedef boost::fusion::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. -

-

- 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::example_struct_iterator_tag>
-{
-    template<typename Iterator>
-    struct apply;
-
-    template<typename Struct>
-    struct apply<example::example_struct_iterator<Struct, 0> >
-    {
-        typedef std::string type;
-    };
-
-    template<typename Struct>
-    struct apply<example::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
-    : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
-        template apply<Iterator>
-{};
-
-

- 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::example_struct_iterator_tag>
-{
-    template<typename Iterator>
-    struct apply;
-
-    template<typename Struct>
-    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::example_struct_iterator<Struct, 0> const& it)
-        {
-            return it.struct_.name;
-        }
-    };
-
-    template<typename Struct>
-    struct apply<example::example_struct_iterator<Struct, 1> >
-    {
-        typedef typename mpl::if_<
-            is_const<Struct>, int const&, int&>::type type;
-
-        static type
-        call(example::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
-        : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
-            template apply<Iterator>
-    {};
-}
-
-template <typename Iterator>
-typename result_of::deref<Iterator>::type
-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. -

-

- 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::example_struct_iterator_tag>
-{
-    template<typename Iterator>
-    struct apply
-    {
-        typedef typename Iterator::struct_type struct_type;
-        typedef typename Iterator::index index;
-        typedef example::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::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::example_sequence_tag>
-{
-    template<typename Sequence>
-    struct apply
-    {
-        typedef example::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::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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html deleted file mode 100644 index 89e46421..00000000 --- a/doc/html/fusion/extension/iterator_facade.html +++ /dev/null @@ -1,398 +0,0 @@ - - - -Iterator Facade - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- The iterator_facade - template provides an intrusive mechanism for producing a conforming Fusion - iterator. -

-

- - Synopsis -

-
-template<typename Derived, typename TravesalTag>
-struct iterator_facade;
-
-

- - Usage -

-

- The user of iterator_facade derives his iterator type from a specialization - of iterator_facade and passes the derived iterator type as the first template - parameter. The second template parameter should be the traversal category - of the iterator being implemented. -

-

- The user must the implement the key expressions required by their iterator - type. -

-
-

Table 1.93. Parameters

- ---- - - - - - - - - - - - - - - -
-

- Name -

-
-

- Description -

-
-

- iterator, It, It1, - It2 -

-
-

- A type derived from iterator_facade -

-
-

- N -

-
-

- An MPL - Integral Constant -

-
-
-
-

Table 1.94. Key Expressions

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Result -

-
-

- Default -

-
-

- iterator::template value_of<It>::type -

-
-

- The element stored at iterator position It -

-
-

- None -

-
-

- iterator::template deref<It>::type -

-
-

- The type returned when dereferencing an iterator of type It -

-
-

- None -

-
-

- iterator::template deref<It>::call(it) -

-
-

- Dereferences iterator it -

-
-

- None -

-
-

- iterator::template next<It>::type -

-
-

- The type of the next element from It -

-
-

- None -

-
-

- iterator::template next<It>::call(it) -

-
-

- The next iterator after it -

-
-

- None -

-
-

- iterator::template prior<It>::type -

-
-

- The type of the next element from It -

-
-

- None -

-
-

- iterator::template prior<It>::call(it) -

-
-

- The next iterator after it -

-
-

- None -

-
-

- iterator::template advance<It, N>::type -

-
-

- The type of an iterator advanced N - elements from It -

-
-

- Implemented in terms of next - and prior -

-
-

- iterator::template advance<It, N>::call(it) -

-
-

- An iterator advanced N - elements from it -

-
-

- Implemented in terms of next - and prior -

-
-

- iterator::template distance<It1, It2>::type -

-
-

- The distance between iterators of type It1 - and It2 as an MPL - Integral Constant -

-
-

- None -

-
-

- iterator::template distance<It1, It2>::call(it1, it2) -

-
-

- The distance between iterator it1 - and it2 -

-
-

- None -

-
-

- iterator::template equal_to<It1, It2>::type -

-
-

- The distance between iterators of type It1 - and It2 -

-
-

- boost::same_type<It1, It2>::type -

-
-

- iterator::template equal_to<It1, It2>::call(it1, it2) -

-
-

- The distance between iterators it1 - and it2 -

-
-

- boost::same_type<It1, It2>::type() -

-
-
-

- - Header -

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

- - Example -

-

- A full worked example using iterator_facade is provided in triple.cpp - in the extension examples. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/macros.html b/doc/html/fusion/extension/macros.html deleted file mode 100644 index 3f34c28f..00000000 --- a/doc/html/fusion/extension/macros.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Macros - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/macros/adapt_assoc.html b/doc/html/fusion/extension/macros/adapt_assoc.html deleted file mode 100644 index 67ee2275..00000000 --- a/doc/html/fusion/extension/macros/adapt_assoc.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - BOOST_FUSION_ADAPT_ASSOC_STRUCT - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate - all the necessary boilerplate to make an arbitrary struct into a model - of Random - Access Sequence and Associative - Sequence. -

-
- - Synopsis -
-
-BOOST_FUSION_ADAPT_ASSOC_STRUCT(
-    struct_name
-    (member_type0, member_name0, key_type0)
-    (member_type1, member_name1, key_type1)
-    ...
-    )
-
-
- - Semantics -
-
-BOOST_FUSION_ADAPT_ASSOC_STRUCT(
-    struct_name
-    (member_type0, member_name0, key_type0)
-    (member_type1, member_name1, key_type1)
-    ...
-    )
-
-

- The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence and Associative - Sequence. The sequence of (member_typeN, - member_nameN, - key_typeN) - triples declare the type, name and key type of each of the struct members - that will be part of the sequence. -

-

- The macro should be used at global scope, and struct_name - should be the fully namespace qualified name of the struct to be converted. -

-

- /adapted/struct/adapt_assoc_struct.hpp> -

-
- - Example -
-
-namespace demo
-{
-    struct employee
-    {
-        std::string name;
-        int age;
-    };
-}
-
-namespace keys
-{
-    struct name;
-    struct age;
-}
-
-// demo::employee is now a Fusion sequence
-// It is also an associative sequence with
-// keys keys::name and keys::age present.
-BOOST_FUSION_ADAPT_ASSOC_STRUCT(
-    demo::employee
-    (std::string, name, keys::name)
-    (int, age, keys::age))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/macros/adapt_struct.html b/doc/html/fusion/extension/macros/adapt_struct.html deleted file mode 100644 index 7fe39093..00000000 --- a/doc/html/fusion/extension/macros/adapt_struct.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - BOOST_FUSION_ADAPT_STRUCT - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the - necessary boilerplate to make an arbitrary struct into a Random - Access Sequence. -

-
- - Synopsis -
-
-BOOST_FUSION_ADAPT_STRUCT(
-    struct_name
-    (member_type0, member_name0)
-    (member_type1, member_name1)
-    ...
-    )
-
-
- - Semantics -
-
-BOOST_FUSION_ADAPT_STRUCT(
-    struct_name,
-    (member_type0, member_name0)
-    (member_type1, member_name1)
-    ...
-    )
-
-

- The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence. The sequence of (member_typeN, - member_nameN) - pairs declare the type and names of each of the struct members that will - be part of the sequence. -

-

- The macro should be used at global scope, and struct_name - should be the fully namespace qualified name of the struct to be converted. -

-

- /adapted/struct/adapt_struct.hpp> -

-
- - Example -
-
-namespace demo
-{
-    struct employee
-    {
-        std::string name;
-        int age;
-    };
-}
-
-// demo::employee is now a Fusion sequence
-BOOST_FUSION_ADAPT_STRUCT(
-    demo::employee
-    (std::string, name)
-    (int, age))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html deleted file mode 100644 index 30bad880..00000000 --- a/doc/html/fusion/extension/sequence_facade.html +++ /dev/null @@ -1,276 +0,0 @@ - - - -Sequence Facade - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- The sequence_facade - template provides an intrusive mechanism for producing a conforming Fusion - iterator. -

-

- - Synopsis -

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

- - Usage -

-

- The user of sequence_facade derives his sequence - type from a specialization of sequence_facade and passes the derived - sequence type as the first template parameter. The second template parameter - should be the traversal category of the sequence being implemented. The 3rd - parameter should be set to mpl::true_ - if the sequence is a view. -

-

- The user must the implement the key expressions required by their sequence - type. -

-
-

Table 1.91. Parameters

- ---- - - - - - - - - - - - - - - -
-

- Name -

-
-

- Description -

-
-

- sequence, Seq -

-
-

- A type derived from sequence_facade -

-
-

- N -

-
-

- An MPL - Integral Constant -

-
-
-
-

Table 1.92. Key Expressions

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Result -

-
-

- sequence::template begin<Seq>::type -

-
-

- The type of an iterator to the beginning of a sequence of type Seq -

-
-

- sequence::template begin<Seq>::call(seq) -

-
-

- An iterator to the beginning of sequence seq -

-
-

- sequence::template end<Seq>::type -

-
-

- The type of an iterator to the end of a sequence of type Seq -

-
-

- sequence::template end<Seq>::call(seq) -

-
-

- An iterator to the end of sequence seq -

-
-

- sequence::template size<Seq>::type -

-
-

- The size of a sequence of type Seq - as an MPL - Integral Constant -

-
-

- sequence::template size<Seq>::call(seq) -

-
-

- The size of sequence seq -

-
-

- sequence::template at<Seq, N>::type -

-
-

- The type of element N - in a sequence of type Seq -

-
-

- sequence::template at<Seq, N>::call(seq) -

-
-

- Element N in sequence - seq -

-
-

- sequence::template value_at<Sequence, N>::type -

-
-

- The type of the Nth - element in a sequence of type Seq -

-
-
-

- - Include -

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

- - Example -

-

- A full worked example using sequence_facade is provided in triple.cpp - in the extension examples. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html deleted file mode 100644 index 910a7b49..00000000 --- a/doc/html/fusion/functional.html +++ /dev/null @@ -1,165 +0,0 @@ - - - -Functional - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Components to call functions and function objects and to make Fusion code callable - through a function object interface. -

-

- /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 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. - 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, - approximate solution to The - Forwarding Problem. Every generic variant has a corresponding generator - function template that returns an adapter instance for the given argument. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html deleted file mode 100644 index f5f0ecce..00000000 --- a/doc/html/fusion/functional/adapters.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - Adapters - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Function object templates to transform a particular target function. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html deleted file mode 100644 index d2a50fc1..00000000 --- a/doc/html/fusion/functional/adapters/fused.html +++ /dev/null @@ -1,249 +0,0 @@ - - - -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 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 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). -

-

- 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). -

-

- /functional/adapter/fused.hpp> -

-
- - Synopsis -
-
-template <typename Function>
-class fused;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Function -

-
-

- A 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 -
-
---- - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- 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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html deleted file mode 100644 index 5cf15d21..00000000 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ /dev/null @@ -1,272 +0,0 @@ - - - -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 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). -

-

- /functional/adapter/fused_function_object.hpp> -

-
- - Synopsis -
-
-template <class Function>
-class fused_function_object;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- 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 -
-
---- - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- 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 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
-    {
-        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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html deleted file mode 100644 index add84069..00000000 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ /dev/null @@ -1,269 +0,0 @@ - - - -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 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 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). -

-

- 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 this - case is not implemented). -

-

- /functional/adapter/fused_procedure.hpp> -

-
- - Synopsis -
-
-template <typename Function>
-class fused_procedure;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- 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 -
-
---- - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- 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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html deleted file mode 100644 index 77d2aedc..00000000 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ /dev/null @@ -1,298 +0,0 @@ - - - -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. -

- -

- 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). -

-

- /functional/adapter/unfused_generic.hpp> -

-
- - Synopsis -
-
-template <class Function>
-class unfused_generic;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Function -

-
-

- An 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 -
-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-
- - 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 <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< void(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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html deleted file mode 100644 index e948ebc5..00000000 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ /dev/null @@ -1,266 +0,0 @@ - - - -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 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). -

-

- /functional/adapter/unfused_lvalue_args.hpp> -

-
- - Synopsis -
-
-template <class Function>
-class unfused_lvalue_args;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Function -

-
-

- A 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 -
-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-
- - 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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html deleted file mode 100644 index 37e201ee..00000000 --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html +++ /dev/null @@ -1,266 +0,0 @@ - - - -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 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). -

-

- /functional/adapter/unfused_rvalue_args.hpp> -

-
- - Synopsis -
-
-template <class Function>
-class unfused_rvalue_args;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Function -

-
-

- A 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 -
-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-
- - 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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html deleted file mode 100644 index 48435701..00000000 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ /dev/null @@ -1,347 +0,0 @@ - - - -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 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. - 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). -

- - -

- /functional/adapter/unfused_typed.hpp> -

-
- - Synopsis -
-
-template <class Function, class Sequence>
-class unfused_typed;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Function -

-
-

- A unary Polymorphic - Function Object -

-
-

-

-
-

- Sequence -

-
-

- A 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 -
-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-
- - 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)
-    { }
-
-    typedef void result_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 <typename Sig>
-    struct result;
-
-    template <class Self, class Seq>
-    struct result< Self(Seq) >
-    {
-        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< void(Seq) >::type operator()(Seq const & tie)
-    {
-        return typename result< void(Seq) >::type(
-            fused_parallel_adder<Seq>(tie) );
-    }
-};
-unfused_lvalue_args<fused_parallel_adder_maker> parallel_add;
-
-void try_it()
-{
-    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');
-}
-
-
- - See also -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html deleted file mode 100644 index 272e5858..00000000 --- a/doc/html/fusion/functional/concepts.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Concepts - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html deleted file mode 100644 index 5e7d0890..00000000 --- a/doc/html/fusion/functional/concepts/callable.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - Callable Object - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-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 -
  • -
-
- - Examples -
-
-& a_free_function
-& a_class::a_static_member_function
-& a_class::a_nonstatic_data_member
-& a_class::a_nonstatic_member_function
-std::less<int>()
-// using namespace boost;
-bind(std::less<int>(), _1, 5)
-lambda::_1 += lambda::_2;
-fusion::make_fused_function_object(std::less<int>())
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html deleted file mode 100644 index ae24e85d..00000000 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - Deferred - Callable Object - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Callable Object - types that work with Boost.ResultOf - 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 -

-
-
-
- - Expression - requirements -
-
---- - - - - - - - - -
-

- Expression -

-
-

- Type -

-
-

- boost::result_of< F(T1 - ...TN) >::type -

-
-

- Result of a call with A1 - ...AN-typed - arguments -

-
-
- - Models -
-
-
- - Examples -
-
-& a_free_function
-& a_class::a_static_member_function
-& a_class::a_nonstatic_data_member
-& a_class::a_nonstatic_member_function
-std::less<int>()
-// using namespace boost;
-bind(std::less<int>(), _1, 5)
-// Note: Boost.Lambda expressions don't work with __boost_result_of__
-fusion::make_fused_function_object(std::less<int>())
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html deleted file mode 100644 index a567cd6b..00000000 --- a/doc/html/fusion/functional/concepts/poly.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - Polymorphic Function - Object - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A non-member-pointer Deferred - Callable Object type. -

-
- - Refinement - of -
- -
-

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 -

-
-
-
- - Expression - requirements -
-
----- - - - - - - - - - - -
-

- Expression -

-
-

- Return Type -

-
-

- Runtime Complexity -

-
-

- f(a1, - ...aN) -

-
-

- result_of< - F(T1, - ...TN) >::type -

-
-

- Unspecified -

-
-
- - Models -
-
    -
  • - function pointers -
  • -
  • - function objects of the Standard Library -
  • -
  • - all Fusion functional adapters -
  • -
-
- - Examples -
-
-& a_free_function
-& a_class::a_static_member_function
-std::less<int>()
-// using namespace boost;
-bind(std::less<int>(), _1, 5)
-// Note: Boost.Lambda expressions don't work with __boost_result_of__
-fusion::make_fused_function_object(std::less<int>())
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html deleted file mode 100644 index 9aa7b8da..00000000 --- a/doc/html/fusion/functional/concepts/reg_callable.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - 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 -
  • -
-
- - Examples -
-
-& a_free_function
-& a_class::a_static_member_function
-std::less<int>()
-// using namespace boost;
-bind(std::less<int>(), _1, 5)
-lambda::_1 += lambda::_2;
-fusion::make_fused_function_object(std::less<int>())
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html deleted file mode 100644 index 3cea4633..00000000 --- a/doc/html/fusion/functional/generation.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Generation - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html deleted file mode 100644 index 5deecb56..00000000 --- a/doc/html/fusion/functional/generation/functions.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html deleted file mode 100644 index 041d8044..00000000 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ /dev/null @@ -1,163 +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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model 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>
-#include <boost/fusion/include/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 -
- -
- - - -
-
-
-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 deleted file mode 100644 index 111c4a0a..00000000 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ /dev/null @@ -1,179 +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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model 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>
-#include <boost/fusion/include/make_fused_function_object.hpp>
-
-
- - Example -
-
-struct sub
-{
-    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
-    {
-        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 -
- -
- - - -
-
-
-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 deleted file mode 100644 index 8f539520..00000000 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ /dev/null @@ -1,159 +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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model 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>
-#include <boost/fusion/include/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 -
- -
- - - -
-
-
-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 deleted file mode 100644 index c55eb731..00000000 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html +++ /dev/null @@ -1,186 +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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model 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>
-#include <boost/fusion/include/make_unfused_generic.hpp>
-
-
- - Example -
-
-struct bottles_song
-{
-    typedef void result_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 -
- -
- - - -
-
-
-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 deleted file mode 100644 index 38b9343a..00000000 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html +++ /dev/null @@ -1,177 +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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model 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>
-#include <boost/fusion/include/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 -
- -
- - - -
-
-
-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 deleted file mode 100644 index aa090ee3..00000000 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html +++ /dev/null @@ -1,175 +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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model 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>
-#include <boost/fusion/include/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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html deleted file mode 100644 index 1dcc003f..00000000 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html deleted file mode 100644 index 9837ccfc..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ /dev/null @@ -1,84 +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>
-#include <boost/fusion/include/make_fused.hpp>
-
-
- - Synopsis -
-
-namespace result_of
-{
-    template<typename Function>
-    struct make_fused
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-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 deleted file mode 100644 index 639fc218..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ /dev/null @@ -1,85 +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>
-#include <boost/fusion/include/make_fused_function_object.hpp>
-
-
- - Synopsis -
-
-namespace result_of
-{
-    template<typename Function>
-    struct make_fused_function_object
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-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 deleted file mode 100644 index cdc1fc5d..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ /dev/null @@ -1,85 +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>
-#include <boost/fusion/include/make_fused_procedure.hpp>
-
-
- - Synopsis -
-
-namespace result_of
-{
-    template<typename Function>
-    struct make_fused_procedure
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-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 deleted file mode 100644 index 44465808..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html +++ /dev/null @@ -1,85 +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>
-#include <boost/fusion/include/make_unfused_generic.hpp>
-
-
- - Synopsis -
-
-namespace result_of
-{
-    template<typename Function>
-    struct make_unfused_generic
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-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 deleted file mode 100644 index 896cb942..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html +++ /dev/null @@ -1,85 +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>
-#include <boost/fusion/include/make_unfused_lvalue_args.hpp>
-
-
- - Synopsis -
-
-namespace result_of
-{
-    template<typename Function>
-    struct make_unfused_lvalue_args
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-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 deleted file mode 100644 index 62ede2eb..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html +++ /dev/null @@ -1,84 +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>
-#include <boost/fusion/include/make_unfused_rvalue_args.hpp>
-
-
- - Synopsis -
-
-namespace result_of
-{
-    template<typename Function>
-    struct make_unfused_rvalue_args
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html deleted file mode 100644 index 107b46e1..00000000 --- a/doc/html/fusion/functional/invocation.html +++ /dev/null @@ -1,48 +0,0 @@ - - - -Invocation - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html deleted file mode 100644 index f2820769..00000000 --- a/doc/html/fusion/functional/invocation/functions.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-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 a12fa9dc..00000000 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ /dev/null @@ -1,192 +0,0 @@ - - - -invoke - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Calls a Deferred - Callable Object with the arguments from a 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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- A Deferred - Callable Object -

-
-

- The function to call. -

-
-

- s -

-
-

- A 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. -

-

- /functional/invocation/invoke.hpp> -

-
- - Example -
-
-std::plus<int> add;
-assert(invoke(add,make_vector(1,1)) == 2);
-
-
- - See - also -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html deleted file mode 100644 index 44aabbcf..00000000 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - invoke_function_object - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Calls a Polymorphic Function - Object with the arguments from a Sequence. -

-

- 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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model of Polymorphic - Function Object -

-
-

- The function object to call. -

-
-

- s -

-
-

- Model of Forward - Sequence -

-
-

- The arguments. -

-
-
- - Expression - Semantics -
-
-invoke_function_object(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. -

-

- /functional/invocation/invoke_function_object.hpp> -

-
- - Example -
-
-struct sub
-{
-    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
-    {
-        return lhs - rhs;
-    }
-};
-
-void try_it()
-{
-    sub f;
-    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
-}
-
-
- - See - also -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/invocation/functions/invoke_proc.html b/doc/html/fusion/functional/invocation/functions/invoke_proc.html deleted file mode 100644 index f9a36bbb..00000000 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ /dev/null @@ -1,201 +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 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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- f -

-
-

- Model of Callable - Object -

-
-

- The function to call. -

-
-

- s -

-
-

- Model of Forward - Sequence -

-
-

- The arguments. -

-
-
- - Expression - Semantics -
-
-invoke_procedure(f,s);
-
-

- Return type: void -

-

- Semantics: Invokes f - with the elements in s - as arguments. -

-

- /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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html deleted file mode 100644 index 763b05f7..00000000 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ /dev/null @@ -1,51 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-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 7cfd60fc..00000000 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ /dev/null @@ -1,77 +0,0 @@ - - - -invoke - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of invoke. -

-
- - Synopsis -
-
-namespace result_of
-{
-    template<
-        typename Function,
-        class Sequence
-        >
-    struct invoke
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html deleted file mode 100644 index 3c31c487..00000000 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - invoke_function_object - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of invoke_function_object. -

-
- - Synopsis -
-
-namespace result_of
-{
-    template<
-        class Function,
-        class Sequence
-        >
-    struct invoke_function_object
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html deleted file mode 100644 index 3d4f6f60..00000000 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - invoke_procedure - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of invoke_procedure. -

-
- - Synopsis -
-
-namespace result_of
-{
-    template<
-        typename Function,
-        class Sequence
-        >
-    struct invoke_procedure
-    {
-        typedef unspecified type;
-    };
-}
-
-
- - See - also -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html deleted file mode 100644 index 5d454021..00000000 --- a/doc/html/fusion/introduction.html +++ /dev/null @@ -1,145 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html deleted file mode 100644 index 041d7801..00000000 --- a/doc/html/fusion/iterator.html +++ /dev/null @@ -1,94 +0,0 @@ - - - -Iterator - - - - - - - - - - - - - - - -
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. -

-

- /iterator.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html deleted file mode 100644 index 33096998..00000000 --- a/doc/html/fusion/iterator/concepts.html +++ /dev/null @@ -1,65 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html deleted file mode 100644 index 358b3268..00000000 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ /dev/null @@ -1,323 +0,0 @@ - - - -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: -

-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Return type -

-
-

- Runtime Complexity -

-
-

- next(i) -

-
-

- Bidirectional - Iterator -

-
-

- Constant -

-
-

- prior(i) -

-
-

- Bidirectional - Iterator -

-
-

- Constant -

-
-

- advance_c<N>(i) -

-
-

- Bidirectional - Iterator -

-
-

- Constant -

-
-

- advance<M>(i) -

-
-

- Bidirectional - Iterator -

-
-

- Constant -

-
-
- - Meta - Expressions -
-
---- - - - - - - - - -
-

- Expression -

-
-

- Compile Time Complexity -

-
-

- result_of::prior<I>::type -

-
-

- Amortized constant time -

-
-
- - Expression - Semantics -
-

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

-
---- - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- prior(i) -

-
-

- An iterator to the element preceding i -

-
-
- - Invariants -
-

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

-
-
- - Models -
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html deleted file mode 100644 index ac3d0f9d..00000000 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ /dev/null @@ -1,580 +0,0 @@ - - - -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: -

-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Return type -

-
-

- Runtime Complexity -

-
-

- next(i) -

-
-

- Forward - Iterator -

-
-

- Constant -

-
-

- i == - j -

-
-

- Convertible to bool -

-
-

- Constant -

-
-

- i != - j -

-
-

- Convertible to bool -

-
-

- Constant -

-
-

- advance_c<N>(i) -

-
-

- Forward - Iterator -

-
-

- Constant -

-
-

- advance<M>(i) -

-
-

- Forward - Iterator -

-
-

- Constant -

-
-

- distance(i, - j) -

-
-

- result_of::distance<I, - J>::type -

-
-

- Constant -

-
-

- deref(i) -

-
-

- result_of::deref<I>::type -

-
-

- Constant -

-
-

- *i -

-
-

- result_of::deref<I>::type -

-
-

- Constant -

-
-
- - Meta - Expressions -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Compile Time Complexity -

-
-

- result_of::next<I>::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<I ,M>::type -

-
-

- Linear -

-
-

- result_of::distance<I ,J>::type -

-
-

- Linear -

-
-

- result_of::deref<I>::type -

-
-

- Amortized constant time -

-
-

- result_of::value_of<I>::type -

-
-

- Amortized constant time -

-
-
- - Expression - Semantics -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- next(i) -

-
-

- An iterator to the element following i -

-
-

- i == - j -

-
-

- Iterator equality comparison -

-
-

- i != - j -

-
-

- Iterator 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 -

-
-

- *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
  • -
  • - 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 -
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html deleted file mode 100644 index 2d30031a..00000000 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ /dev/null @@ -1,301 +0,0 @@ - - - -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: -

-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Return type -

-
-

- Runtime Complexity -

-
-

- next(i) -

-
-

- Random - Access Iterator -

-
-

- Constant -

-
-

- prior(i) -

-
-

- Random - Access Iterator -

-
-

- Constant -

-
-

- advance_c<N>(i) -

-
-

- Random - Access Iterator -

-
-

- Constant -

-
-

- advance<M>(i) -

-
-

- Random - Access Iterator -

-
-

- Constant -

-
-
- - Meta - Expressions -
-
---- - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Compile Time Complexity -

-
-

- result_of::advance_c<I, - N>::type -

-
-

- Amortized constant time -

-
-

- result_of::advance<I, - M>::type -

-
-

- Amortized constant time -

-
-

- result_of::distance<I ,J>::type -

-
-

- Amortized constant time -

-
-
- - Models -
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html deleted file mode 100644 index 71e3ab8f..00000000 --- a/doc/html/fusion/iterator/functions.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

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

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html deleted file mode 100644 index d11323c8..00000000 --- a/doc/html/fusion/iterator/functions/advance.html +++ /dev/null @@ -1,161 +0,0 @@ - - - -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);
-
-
-

Table 1.6. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i -

-
-

- Model of Forward - Iterator -

-
-

- Iterator to move relative to -

-
-

- N -

-
-

- An MPL - Integral Constant -

-
-

- Number 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. -

-

- /iterator/advance.hpp> -

-
- - Example -
-
-typedef vector<int,int,int> vec;
-
-vec v(1,2,3);
-assert(deref(advance<mpl::int_<2> >(begin(v))) == 3);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html deleted file mode 100644 index 6a4f036c..00000000 --- a/doc/html/fusion/iterator/functions/advance_c.html +++ /dev/null @@ -1,160 +0,0 @@ - - - -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);
-
-
-

Table 1.7. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i -

-
-

- Model of Forward - Iterator -

-
-

- Iterator to move relative to -

-
-

- N -

-
-

- Integer constant -

-
-

- Number 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. -

-

- /iterator/advance.hpp> -

-
- - Example -
-
-typedef vector<int,int,int> vec;
-
-vec v(1,2,3);
-assert(deref(advance_c<2>(begin(v))) == 3);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html deleted file mode 100644 index 21a6c7ca..00000000 --- a/doc/html/fusion/iterator/functions/deref.html +++ /dev/null @@ -1,137 +0,0 @@ - - - -deref - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Deferences an iterator. -

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

Table 1.2. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i -

-
-

- Model of Forward - Iterator -

-
-

- Operation's argument -

-
-
-
- - Expression - Semantics -
-
-deref(i);
-
-

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

-

- Semantics: Dereferences the iterator - i. -

-

- /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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html deleted file mode 100644 index 6ed63921..00000000 --- a/doc/html/fusion/iterator/functions/distance.html +++ /dev/null @@ -1,135 +0,0 @@ - - - -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);
-
-
-

Table 1.5. 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 -

-
-
-
- - Expression - Semantics -
-
-distance(i,j);
-
-

- Return type: int -

-

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

-

- /iterator/distance.hpp> -

-
- - Example -
-
-typedef vector<int,int,int> vec;
-
-vec v(1,2,3);
-assert(distance(begin(v), next(next(begin(v)))) == 2);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html deleted file mode 100644 index a4c20f8f..00000000 --- a/doc/html/fusion/iterator/functions/next.html +++ /dev/null @@ -1,137 +0,0 @@ - - - -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);
-
-
-

Table 1.3. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i -

-
-

- Model 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. -

-

- /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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html deleted file mode 100644 index ea5e28c4..00000000 --- a/doc/html/fusion/iterator/functions/prior.html +++ /dev/null @@ -1,136 +0,0 @@ - - - -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);
-
-
-

Table 1.4. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i -

-
-

- Model 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. -

-

- /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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html deleted file mode 100644 index edae7021..00000000 --- a/doc/html/fusion/iterator/metafunctions.html +++ /dev/null @@ -1,54 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html deleted file mode 100644 index 47137648..00000000 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ /dev/null @@ -1,165 +0,0 @@ - - - -advance - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Moves an iterator a specified distance. -

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

Table 1.17. 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 -

-
-
-
- - 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html deleted file mode 100644 index e84cc23e..00000000 --- a/doc/html/fusion/iterator/metafunctions/advance_c.html +++ /dev/null @@ -1,164 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.18. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- I -

-
-

- Model of Forward - Iterator -

-
-

- Iterator to move relative to -

-
-

- N -

-
-

- Integer constant -

-
-

- Number 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html deleted file mode 100644 index dd662d57..00000000 --- a/doc/html/fusion/iterator/metafunctions/deref.html +++ /dev/null @@ -1,143 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.12. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- I -

-
-

- Model 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. -

-

- /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&>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html deleted file mode 100644 index ac79fa59..00000000 --- a/doc/html/fusion/iterator/metafunctions/distance.html +++ /dev/null @@ -1,143 +0,0 @@ - - - -distance - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the distance between two iterators. -

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

Table 1.16. 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 -

-
-
-
- - 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. -

-

- /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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html deleted file mode 100644 index eeadcd86..00000000 --- a/doc/html/fusion/iterator/metafunctions/equal_to.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.15. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- I, J -

-
-

- Any fusion iterators -

-
-

- Operation'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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html deleted file mode 100644 index ee700313..00000000 --- a/doc/html/fusion/iterator/metafunctions/next.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.13. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- I -

-
-

- Model 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html deleted file mode 100644 index aac06451..00000000 --- a/doc/html/fusion/iterator/metafunctions/prior.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.14. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- I -

-
-

- Model 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html deleted file mode 100644 index b54e9777..00000000 --- a/doc/html/fusion/iterator/metafunctions/value_of.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.11. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- I -

-
-

- Model 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. -

-

- /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&>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html deleted file mode 100644 index f2a8c05a..00000000 --- a/doc/html/fusion/iterator/operator.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Operator - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

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

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html deleted file mode 100644 index b36b5535..00000000 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - 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);
-
-
-

Table 1.9. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i, j -

-
-

- Any fusion iterators -

-
-

- Operation'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. -

-

- /iterator/equal_to.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html deleted file mode 100644 index 12836d8d..00000000 --- a/doc/html/fusion/iterator/operator/operator_inequality.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - 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);
-
-
-

Table 1.10. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i, j -

-
-

- Any fusion iterators -

-
-

- Operation'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. -

-

- /iterator/equal_to.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html deleted file mode 100644 index 416d0d35..00000000 --- a/doc/html/fusion/iterator/operator/operator_unary_star.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Operator - * - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Dereferences an iterator. -

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

Table 1.8. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- i -

-
-

- Model of Forward - Iterator -

-
-

- Operation's argument -

-
-
-
- - Expression - Semantics -
-
-*i
-
-

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

-

- Semantics: Equivalent to deref(i). -

-

- /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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html deleted file mode 100644 index 6066d71a..00000000 --- a/doc/html/fusion/notes.html +++ /dev/null @@ -1,262 +0,0 @@ - - - -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). -

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html deleted file mode 100644 index bd98ce83..00000000 --- a/doc/html/fusion/organization.html +++ /dev/null @@ -1,230 +0,0 @@ - - - -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. -

-

- There is also a "boost/fusion/include/" - directory that contains all the headers to all the components and modules. - If you are unsure where to find a specific component or module, or don't want - to fuss with hierarchy and nesting, use this. -

-

- The library is header-only. There is no need to build object files to link - against. -

-

- - Directory -

-
    -
  • - tuple -
  • -
  • - algorithm -
      -
    • - iteration -
    • -
    • - query -
    • -
    • - transformation -
    • -
    -
  • -
  • - adapted -
      -
    • - array -
    • -
    • - mpl -
    • -
    • - boost::tuple -
    • -
    • - std_pair -
    • -
    • - struct -
    • -
    • - variant -
    • -
    -
  • -
  • - view -
      -
    • - filter_view -
    • -
    • - iterator_range -
    • -
    • - joint_view -
    • -
    • - reverse_view -
    • -
    • - single_view -
    • -
    • - transform_view -
    • -
    • - zip_view -
    • -
    -
  • -
  • - container -
      -
    • - deque -
    • -
    • - list -
    • -
    • - map -
    • -
    • - set -
    • -
    • - vector -
    • -
    • - generation -
    • -
    -
  • -
  • - mpl -
  • -
  • - functional -
  • -
  • - sequence -
      -
    • - comparison -
    • -
    • - intrinsic -
    • -
    • - io -
    • -
    -
  • -
  • - 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/container.hpp>
-#include <boost/fusion/include/container.hpp>
-#include <boost/fusion/container/list.hpp>
-#include <boost/fusion/include/list.hpp>
-
-

- The first includes all containers The second 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. -

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html deleted file mode 100644 index cf6c413d..00000000 --- a/doc/html/fusion/preface.html +++ /dev/null @@ -1,230 +0,0 @@ - - - -Preface - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
-

-

-

- “Algorithms + Data Structures = Programs.” -

-

-

-
-
-

-

-

- --Niklaus Wirth -

-

-

-
-

- - Description -

-

- 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 - 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: -

-
-

Table 1.1. 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. -

-

- - 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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html deleted file mode 100644 index f6aa9396..00000000 --- a/doc/html/fusion/quick_start.html +++ /dev/null @@ -1,267 +0,0 @@ - - - -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>
-#include <boost/fusion/include/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>
-#include <boost/fusion/include/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. -

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html deleted file mode 100644 index 783cd2f8..00000000 --- a/doc/html/fusion/references.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -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. -
-
- - - -
-
-
-PrevUpHome -
- - diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html deleted file mode 100644 index 019ea590..00000000 --- a/doc/html/fusion/sequence.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Sequence - - - - - - - - - - - - - - - -
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. Container 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>
-#include <boost/fusion/include/sequence.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html deleted file mode 100644 index 0340f9a9..00000000 --- a/doc/html/fusion/sequence/concepts.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html deleted file mode 100644 index 6bc665f4..00000000 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ /dev/null @@ -1,332 +0,0 @@ - - - -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: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Return type -

-
-

- Type Requirements -

-
-

- Runtime Complexity -

-
-

- has_key<K>(s) -

-
-

- MPL - Boolean Constant. Convertible to bool. -

-
-

-

-
-

- 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 -

-
-
- - Result - Type Expressions -
-
---- - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Compile Time Complexity -

-
-

- result_of::has_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 -

-
- -
- - 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. -

-
-

- at_key<K>(s) -

-
-

- The element associated with the key K - in the sequence s; - see at. -

-
-
- - Models -
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html deleted file mode 100644 index cde3c9fd..00000000 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ /dev/null @@ -1,348 +0,0 @@ - - - -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: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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 -

-
-
- - Result - Type Expressions -
-
---- - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Compile Time Complexity -

-
-

- result_of::begin<S>::type -

-
-

- Amortized constant time -

-
-

- result_of::end<S>::type -

-
-

- Amortized constant time -

-
-

- result_of::back<S>::type -

-
-

- Amortized constant time -

-
-
- - Expression - Semantics -
-

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

-
---- - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- back(s) -

-
-

- The last element in the sequence; see back. -

-
-
- - Models -
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html deleted file mode 100644 index 8fd98917..00000000 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ /dev/null @@ -1,475 +0,0 @@ - - - -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: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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 -

-
-
- - Result - Type Expressions -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Compile Time Complexity -

-
-

- result_of::begin<S>::type -

-
-

- Amortized constant time -

-
-

- result_of::end<S>::type -

-
-

- Amortized constant time -

-
-

- result_of::size<S>::type -

-
-

- Unspecified -

-
-

- result_of::empty<S>::type -

-
-

- Constant time -

-
-

- result_of::front<S>::type -

-
-

- Amortized constant time -

-
-
- - Expression - Semantics -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-
- - 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 -
- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html deleted file mode 100644 index 8667db10..00000000 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ /dev/null @@ -1,377 +0,0 @@ - - - -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 MPL - 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: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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) - = 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 -
-
---- - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Compile Time Complexity -

-
-

- result_of::begin<S>::type -

-
-

- Amortized constant time -

-
-

- result_of::end<S>::type -

-
-

- Amortized constant time -

-
-

- result_of::at<S, - N>::type -

-
-

- Amortized constant time -

-
-

- result_of::value_at<S, - N>::type -

-
-

- Amortized constant time -

-
- -
- - Expression - Semantics -
-

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

-
---- - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- at<N>(s) -

-
-

- The Nth element from the beginning of the sequence; see at. -

-
-
- - Models -
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html deleted file mode 100644 index ef98da14..00000000 --- a/doc/html/fusion/sequence/intrinsic.html +++ /dev/null @@ -1,73 +0,0 @@ - - - -Intrinsic - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Intrinsic 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 - [4] - . -

-

- - Header -

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

-

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

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html deleted file mode 100644 index 850a95b6..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html deleted file mode 100644 index febaf74f..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ /dev/null @@ -1,174 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-
- - 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>
-#include <boost/fusion/include/at.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(at<mpl::int_<1> >(v) == 2);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html deleted file mode 100644 index 6ed7d633..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html +++ /dev/null @@ -1,174 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-
- - 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>
-#include <boost/fusion/include/at_c.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(at_c<1>(v) == 2);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html deleted file mode 100644 index 4fae466d..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html +++ /dev/null @@ -1,169 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model of Associative - Sequence -

-
-

- The sequence we wish to investigate. -

-
-

- Key -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/at_key.hpp>
-
-
- - Example -
-
-set<int, char, bool> s(1, 'x', true);
-assert(at_key<char>(s) == 'x');
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html deleted file mode 100644 index d08eedb6..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/back.html +++ /dev/null @@ -1,150 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model 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>
-#include <boost/fusion/include/back.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(back(v) == 3);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html deleted file mode 100644 index d678e0c8..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html +++ /dev/null @@ -1,156 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model 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>
-#include <boost/fusion/include/begin.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(deref(begin(v)) == 1);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html deleted file mode 100644 index 8665a591..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html +++ /dev/null @@ -1,139 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model 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>
-#include <boost/fusion/include/empty.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(empty(v) == false);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html deleted file mode 100644 index bdac3243..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/end.html +++ /dev/null @@ -1,156 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model 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>
-#include <boost/fusion/include/end.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(deref(prior(end(v))) == 3);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html deleted file mode 100644 index 730d2ae3..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/front.html +++ /dev/null @@ -1,150 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model 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>
-#include <boost/fusion/include/front.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(front(v) == 1);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html deleted file mode 100644 index 0dd8ac89..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model of Associative - Sequence -

-
-

- The sequence we wish to investigate. -

-
-

- Key -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/has_key.hpp>
-
-
- - Example -
-
-set<int, char, bool> s(1, 'x', true);
-assert(has_key<char>(s) == true);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html deleted file mode 100644 index b39c2b24..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/size.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- Model 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>
-#include <boost/fusion/include/size.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(size(v) == 3);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html deleted file mode 100644 index af676b30..00000000 --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html +++ /dev/null @@ -1,135 +0,0 @@ - - - -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. -

-

- /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"));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html deleted file mode 100644 index 39bfd37b..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html deleted file mode 100644 index a46164c5..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -at - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-at
-
- - Description -
-

- Returns the result type of at - [5] - . -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    typename N>
-struct at
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.25. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A model of Forward - Sequence -

-
-

- Argument sequence -

-
-

- N -

-
-

- An MPL - Integral Constant -

-
-

- Index 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. -

-

- /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&>));
-
-
-

-

[5] - 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 -

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html deleted file mode 100644 index a393d214..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ /dev/null @@ -1,165 +0,0 @@ - - - -at_c - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of at_c - [6] - . -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    int M>
-struct at_c
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.26. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A model of Forward - Sequence -

-
-

- Argument sequence -

-
-

- M -

-
-

- Positive integer index -

-
-

- Index 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. -

-

- /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&>));
-
-
-

-

[6] - 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 -

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html deleted file mode 100644 index 4e4e59a4..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ /dev/null @@ -1,167 +0,0 @@ - - - -at_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of at_key - [7] - . -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    typename Key>
-struct at_key
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.30. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A model of Forward - Sequence -

-
-

- Argument sequence -

-
-

- Key -

-
-

- Any type -

-
-

- Key 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. -

-

- /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&>));
-
-
-

-

[7] - 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 -

-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html deleted file mode 100644 index e08e328a..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ /dev/null @@ -1,133 +0,0 @@ - - - -back - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of back. -

-
- - Synopsis -
-
-template<typename Seq>
-struct back
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.23. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A 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. -

-

- /sequence/intrinsic/back.hpp> -

-
- - Example -
-
-typedef vector<int,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html deleted file mode 100644 index 31afe5cc..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html +++ /dev/null @@ -1,135 +0,0 @@ - - - -begin - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of begin. -

-
- - Synopsis -
-
-template<typename Seq>
-struct begin
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.19. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A 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. -

-

- /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&>))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html deleted file mode 100644 index caa2cb21..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -empty - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of empty. -

-
- - Synopsis -
-
-template<typename Seq>
-struct empty
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.21. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html deleted file mode 100644 index 1ff2e991..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html +++ /dev/null @@ -1,135 +0,0 @@ - - - -end - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-end
-
- - Description -
-

- Returns the result type of end. -

-
- - Synopsis -
-
-template<typename Seq>
-struct end
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.20. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A 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. -

-

- /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>))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html deleted file mode 100644 index 7a6ffc03..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html +++ /dev/null @@ -1,134 +0,0 @@ - - - -front - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of front. -

-
- - Synopsis -
-
-template<typename Seq>
-struct front
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.22. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A 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. -

-

- /sequence/intrinsic/front.hpp> -

-
- - Example -
-
-typedef vector<int,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html deleted file mode 100644 index 666d5be3..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html +++ /dev/null @@ -1,158 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.29. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A model of Forward - Sequence -

-
-

- Argument sequence -

-
-

- Key -

-
-

- Any type -

-
-

- Key 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. -

-

- /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*>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html deleted file mode 100644 index be608b52..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html +++ /dev/null @@ -1,135 +0,0 @@ - - - -size - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of size. -

-
- - Synopsis -
-
-template<typename Seq>
-struct size
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.24. Parameters

- ----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A 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. -

-

- /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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html deleted file mode 100644 index 487d52c8..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -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. -

-

- /sequence/intrinsic/swap.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html deleted file mode 100644 index dde3a635..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.27. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A model of Forward - Sequence -

-
-

- Argument sequence -

-
-

- N -

-
-

- An MPL - Integral Constant -

-
-

- Index 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html deleted file mode 100644 index ddfee016..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html +++ /dev/null @@ -1,154 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.28. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A model of Forward - Sequence -

-
-

- Argument sequence -

-
-

- M -

-
-

- Positive integer index -

-
-

- Index 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html deleted file mode 100644 index f2890ff8..00000000 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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;
-};
-
-
-

Table 1.31. Parameters

- ----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Seq -

-
-

- A model of Forward - Sequence -

-
-

- Argument sequence -

-
-

- Key -

-
-

- Any type -

-
-

- Key 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. -

-

- /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>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator.html b/doc/html/fusion/sequence/operator.html deleted file mode 100644 index 1b52d062..00000000 --- a/doc/html/fusion/sequence/operator.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Operator - - - - - - - - - - - - - - - -
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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html deleted file mode 100644 index 9f5c536b..00000000 --- a/doc/html/fusion/sequence/operator/comparison.html +++ /dev/null @@ -1,73 +0,0 @@ - - - -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>
-#include <boost/fusion/include/comparison.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html deleted file mode 100644 index e0c55ec8..00000000 --- a/doc/html/fusion/sequence/operator/comparison/equal.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- a, - b -

-
-

- Instances 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>
-#include <boost/fusion/include/equal_to.hpp>
-
-
- - Example -
-
-vector<int, char> v1(5, 'a');
-vector<int, char> v2(5, 'a');
-assert(v1 == v2);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html deleted file mode 100644 index abd98ba6..00000000 --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html +++ /dev/null @@ -1,153 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- a, - b -

-
-

- Instances 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>
-#include <boost/fusion/include/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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html deleted file mode 100644 index 6533dbf9..00000000 --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html +++ /dev/null @@ -1,152 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- a, - b -

-
-

- Instances 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>
-#include <boost/fusion/include/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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html deleted file mode 100644 index aa37d8ee..00000000 --- a/doc/html/fusion/sequence/operator/comparison/less_than.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- a, - b -

-
-

- Instances 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>
-#include <boost/fusion/include/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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html deleted file mode 100644 index d0c57fb5..00000000 --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html +++ /dev/null @@ -1,153 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- a, - b -

-
-

- Instances 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>
-#include <boost/fusion/include/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);
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html deleted file mode 100644 index 888c5a35..00000000 --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- a, - b -

-
-

- Instances 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>
-#include <boost/fusion/include/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));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html deleted file mode 100644 index 57deee8e..00000000 --- a/doc/html/fusion/sequence/operator/i_o.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -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>
-#include <boost/fusion/include/io.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html deleted file mode 100644 index f3d8bd62..00000000 --- a/doc/html/fusion/sequence/operator/i_o/in.html +++ /dev/null @@ -1,156 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- is -

-
-

- An input stream. -

-
-

- Stream to extract information from. -

-
-

- seq -

-
-

- A 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>
-#include <boost/fusion/include/in.hpp>
-
-
- - Example -
-
-vector<int, std::string, char> v;
-std::cin >> v;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html deleted file mode 100644 index ff958594..00000000 --- a/doc/html/fusion/sequence/operator/i_o/out.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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 -
-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- os -

-
-

- An output stream. -

-
-

- Stream to write information to. -

-
-

- seq -

-
-

- A 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>
-#include <boost/fusion/include/out.hpp>
-
-
- - Example -
-
-std::cout << make_vector(123, "Hello", 'x') << std::endl;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html deleted file mode 100644 index 949ca5d8..00000000 --- a/doc/html/fusion/support.html +++ /dev/null @@ -1,55 +0,0 @@ - - - -Support - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- A couple of classes and metafunctions provide basic support for Fusion. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html deleted file mode 100644 index be696fe3..00000000 --- a/doc/html/fusion/support/category_of.html +++ /dev/null @@ -1,197 +0,0 @@ - - - -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 -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T -

-
-

- Any type -

-
-

- The type to query. -

-
-

- - Expression - Semantics -

-
-typedef traits::category_of<T>::type category;
-
-

- Return type: -

-

- For Iterators, the return type is derived from one of: -

-
-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: -

-
-namespace boost { namespace fusion
-{
-    struct incrementable_sequence_tag {};
-
-    struct single_pass_sequence_tag
-        : incrementable_sequence_tag {};
-
-    struct forward_traversal_tag
-        : single_pass_sequence_tag {};
-
-    struct bidirectional_traversal_tag
-        : forward_traversal_tag {};
-
-    struct random_access_traversal_tag
-        : bidirectional_traversal_tag {};
-}}
-
-

- And optionally from: -

-
-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>
-#include <boost/fusion/include/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_traversal_tag, list_category> ));
-BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html deleted file mode 100644 index 322b1e23..00000000 --- a/doc/html/fusion/support/deduce.html +++ /dev/null @@ -1,104 +0,0 @@ - - - -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>
-#include <boost/fusion/include/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 -

- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html deleted file mode 100644 index 67e63b47..00000000 --- a/doc/html/fusion/support/deduce_sequence.html +++ /dev/null @@ -1,106 +0,0 @@ - - - -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>
-#include <boost/fusion/include/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 -

- -
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html deleted file mode 100644 index c2decf52..00000000 --- a/doc/html/fusion/support/is_sequence.html +++ /dev/null @@ -1,151 +0,0 @@ - - - -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 -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/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> > ));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html deleted file mode 100644 index b5a1b250..00000000 --- a/doc/html/fusion/support/is_view.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -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 -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/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> ));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html deleted file mode 100644 index 4d79502a..00000000 --- a/doc/html/fusion/support/pair.html +++ /dev/null @@ -1,342 +0,0 @@ - - - -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;
-
-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 -

-
---- - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- First -

-
-

- The first type. This is purely a type. No data is held. -

-
-

- Second -

-
-

- The 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 -

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- P::first_type -

-
-

- The type of the first template parameter, F, - equivalent to result_of::first<P>::type. -

-
-

- P::second_type -

-
-

- The type of the second template parameter, S, - equivalent to result_of::second<P>::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. -

-
-

- 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 -

-
-

- 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. -

-
-

- - Header -

-
-#include <boost/fusion/support/pair.hpp>
-#include <boost/fusion/include/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')));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html deleted file mode 100644 index d29ac923..00000000 --- a/doc/html/fusion/support/tag_of.html +++ /dev/null @@ -1,151 +0,0 @@ - - - -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. -

-

- This metafunction may be specialized to accomodate clients providing Fusion - conforming sequences. -

-

- - Synopsis -

-
-namespace traits
-{
-    template<typename Sequence>
-    struct tag_of
-    {
-        typedef unspecified type;
-    };
-}
-
-

- - Parameters -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- T -

-
-

- Any type -

-
-

- The 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>
-#include <boost/fusion/include/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;
-
-BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
-BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html deleted file mode 100644 index 8319ff15..00000000 --- a/doc/html/fusion/tuple.html +++ /dev/null @@ -1,69 +0,0 @@ - - - -Tuple - - - - - - - - - - - - - - - -
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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html deleted file mode 100644 index 9a259637..00000000 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -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;
-
-

- /tuple.hpp> -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html deleted file mode 100644 index c4c70c4f..00000000 --- a/doc/html/fusion/tuple/class_template_tuple/construction.html +++ /dev/null @@ -1,134 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html deleted file mode 100644 index 8d0a8a1c..00000000 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ /dev/null @@ -1,99 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html deleted file mode 100644 index 3aec30f4..00000000 --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html +++ /dev/null @@ -1,211 +0,0 @@ - - - -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). -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html deleted file mode 100644 index c37de3d0..00000000 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html deleted file mode 100644 index df0e8918..00000000 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html +++ /dev/null @@ -1,91 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html deleted file mode 100644 index dbd2bb11..00000000 --- a/doc/html/fusion/tuple/pairs.html +++ /dev/null @@ -1,112 +0,0 @@ - - - -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. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html deleted file mode 100644 index 3c535142..00000000 --- a/doc/html/fusion/view.html +++ /dev/null @@ -1,69 +0,0 @@ - - - -View - - - - - - - - - - - - - - - -
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/view.hpp>
-#include <boost/fusion/include/view.hpp>
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html deleted file mode 100644 index eb410f4b..00000000 --- a/doc/html/fusion/view/filter_view.html +++ /dev/null @@ -1,246 +0,0 @@ - - - -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/view/filter_view.hpp>
-#include <boost/fusion/include/filter_view.hpp>
-
-

- - Synopsis -

-
-template <typename Sequence, typename Pred>
-struct filter_view;
-
-

- - Template parameters -

-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Sequence -

-
-

- A Forward - Sequence -

-
-

-

-
-

- Pred -

-
-

- Unary 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. -

-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - 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;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html deleted file mode 100644 index 62357d4e..00000000 --- a/doc/html/fusion/view/iterator_range.html +++ /dev/null @@ -1,261 +0,0 @@ - - - -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/view/iterator_range.hpp>
-#include <boost/fusion/include/iterator_range.hpp>
-
-

- - Synopsis -

-
-template <typename First, typename Last>
-struct iterator_range;
-
-

- - Template parameters -

-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- First -

-
-

- A fusion Iterator -

-
-

-

-
-

- Last -

-
-

- A 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. -

-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - 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;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html deleted file mode 100644 index aef924a0..00000000 --- a/doc/html/fusion/view/joint_view.html +++ /dev/null @@ -1,247 +0,0 @@ - - - -joint_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- joint_view presents a view - which is a concatenation of two sequences. -

-

- - Header -

-
-#include <boost/fusion/view/joint_view.hpp>
-#include <boost/fusion/include/joint_view.hpp>
-
-

- - Synopsis -

-
-template <typename Sequence1, typename Sequence2>
-struct joint_view;
-
-

- - Template parameters -

-
----- - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Sequence1 -

-
-

- A Forward - Sequence -

-
-

-

-
-

- Sequence2 -

-
-

- A 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. -

-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - 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;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html deleted file mode 100644 index 8af6f29c..00000000 --- a/doc/html/fusion/view/reverse_view.html +++ /dev/null @@ -1,219 +0,0 @@ - - - -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/view/reverse_view.hpp>
-#include <boost/fusion/include/reverse_view.hpp>
-
-

- - Synopsis -

-
-template <typename Sequence>
-struct reverse_view;
-
-

- - Template parameters -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Sequence -

-
-

- A 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. -

-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - 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;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html deleted file mode 100644 index 0cad96c7..00000000 --- a/doc/html/fusion/view/single_view.html +++ /dev/null @@ -1,211 +0,0 @@ - - - -single_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- single_view is a view into - a value as a single element sequence. -

-

- - Header -

-
-#include <boost/fusion/view/single_view.hpp>
-#include <boost/fusion/include/single_view.hpp>
-
-

- - Synopsis -

-
-template <typename T>
-struct single_view;
-
-

- - Template parameters -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- T -

-
-

- Any 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. -

-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - Example -

-
-single_view<int> view(3);
-std::cout << view << std::endl;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html deleted file mode 100644 index 70434e88..00000000 --- a/doc/html/fusion/view/transform_view.html +++ /dev/null @@ -1,382 +0,0 @@ - - - -transform_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- 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 or sequences. -

-

- - Header -

-
-#include <boost/fusion/view/transform_view.hpp>
-#include <boost/fusion/include/transform_view.hpp>
-
-

- - Synopsis -

-

- Unary Version -

-
-template <typename Sequence, typename F1>
-struct transform_view;
-
-

- Binary Version -

-
-template <typename Sequence1, typename Sequence2, typename F2>
-struct transform_view;
-
-

- - Template parameters -

-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Sequence -

-
-

- A Forward - Sequence -

-
-

-

-
-

- Sequence1 -

-
-

- A Forward - Sequence -

-
-

-

-
-

- Sequence2 -

-
-

- A Forward - Sequence -

-
-

-

-
-

- F1 -

-
-

- 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. -

-
-

-

-
-

- - Model of -

-
-
-

Notation

-
-
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 -

-

- 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 or sequences. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
-

- Expression -

-
-

- Semantics -

-
-

- 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. -

-
-

- - Example -

-
-struct square
-{
-    template<typename Sig>
-    struct result;
-
-    template<typename U>
-    struct result<square(U)>
-    : remove_reference<U>
-    {};
-
-    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;
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html deleted file mode 100644 index 39d8d387..00000000 --- a/doc/html/fusion/view/zip_view.html +++ /dev/null @@ -1,233 +0,0 @@ - - - -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/view/zip_view.hpp>
-#include <boost/fusion/include/zip_view.hpp>
-
-

- - Synopsis -

-
-template <typename Sequences>
-struct zip_view;
-
-

- - Template parameters -

-
----- - - - - - - - - - - -
-

- Parameter -

-
-

- Description -

-
-

- Default -

-
-

- Sequences -

-
-

- A 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. -

-
---- - - - - - - - - - - - - - - - - - - -
-

- 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. -

-
-

- - 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))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/images/alert.png b/doc/html/images/alert.png deleted file mode 100755 index b4645bc7e7cd81f2818bf22aa898e95f89f7b154..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/images/caution.png b/doc/html/images/caution.png deleted file mode 100644 index 5b7809ca4a9c8d778087522e5ce04b6e90099595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/images/fusion_org.png b/doc/html/images/fusion_org.png deleted file mode 100644 index 3bb56539d6f91cf0025ac6a5ca804cea46388cb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/images/next.png b/doc/html/images/next.png deleted file mode 100755 index 59800b4e87f60c0e3383ede2b384b9be0f5ffe8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/images/prev.png b/doc/html/images/prev.png deleted file mode 100755 index d88a40f923e3c554125f01cd366707c60cfcad04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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_ diff --git a/doc/html/images/smiley.png b/doc/html/images/smiley.png deleted file mode 100755 index 30a77f71ce16872d046a1a5d6fd698a2f65a3f62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/images/tip.png b/doc/html/images/tip.png deleted file mode 100755 index 9f596b0b88eb42562b2d0b0e30d054509be42af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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$ diff --git a/doc/html/images/up.png b/doc/html/images/up.png deleted file mode 100755 index 17d9c3ec491ae1ba22188ce85985623c92ffa9be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/images/warning.png b/doc/html/images/warning.png deleted file mode 100644 index 1c33db8f34a8b42b373179b46a2d8d8a10e061a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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( diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index 2ce13dde..00000000 --- a/doc/html/index.html +++ /dev/null @@ -1,253 +0,0 @@ - - - -Chapter 1. Fusion 2.0 - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
Next
-
-
-

-Chapter 1. Fusion 2.0

-

-Joel de Guzman -

-

-Dan Marsden -

-

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

-
-
-
-

Table of Contents

-
-
Preface
-
Introduction
-
Quick Start
-
Organization
-
Support
-
-
is_sequence
-
is_view
-
tag_of
-
category_of
-
deduce
-
deduce_sequence
-
pair
-
-
Iterator
-
-
Concepts
-
-
Forward - Iterator
-
Bidirectional - Iterator
-
Random - Access Iterator
-
-
Functions
-
-
deref
-
next
-
prior
-
distance
-
advance
-
advance_c
-
-
Operator
-
-
Operator - *
-
Operator - ==
-
Operator - !=
-
-
Metafunctions
-
-
value_of
-
deref
-
next
-
prior
-
equal_to
-
distance
-
advance
-
advance_c
-
-
-
Sequence
-
-
Concepts
-
-
Forward - Sequence
-
Bidirectional - Sequence
-
Random - Access Sequence
-
Associative - Sequence
-
-
Intrinsic
-
-
Functions
-
Metafunctions
-
-
Operator
-
-
I/O
-
Comparison
-
-
-
Container
-
-
vector
-
cons
-
list
-
set
-
map
-
Generation
-
-
Functions
-
MetaFunctions
-
-
Conversion
-
-
Functions
-
Metafunctions
-
-
-
View
-
-
single_view
-
filter_view
-
iterator_range
-
joint_view
-
zip_view
-
transform_view
-
reverse_view
-
-
Adapted
-
-
std::pair
-
mpl sequence
-
boost::array
-
boost::tuple
-
boost::variant
-
-
Algorithm
-
-
Iteration
-
-
Functions
-
Metafunctions
-
-
Query
-
-
Functions
-
Metafunctions
-
-
Transformation
-
-
Functions
-
Metafunctions
-
-
-
Tuple
-
-
Class template tuple
-
-
Construction
-
Tuple - creation functions
-
Tuple - helper classes
-
Element - access
-
Relational - operators
-
-
Pairs
-
-
Extension
-
-
The Full Extension Mechanism
-
Sequence Facade
-
Iterator Facade
-
Macros
-
-
BOOST_FUSION_ADAPT_STRUCT
-
BOOST_FUSION_ADAPT_ASSOC_STRUCT
-
-
-
Functional
-
-
Concepts
-
-
Callable Object
-
Regular Callable - Object
-
Deferred - Callable Object
-
Polymorphic Function - Object
-
-
Invocation
-
-
Functions
-
Metafunctions
-
-
Adapters
-
-
fused
-
fused_procedure
-
fused_function_object
-
unfused_generic
-
unfused_lvalue_args
-
unfused_rvalue_args
-
unfused_typed
-
-
Generation
-
-
Functions
-
Metafunctions
-
-
-
Notes
-
Change log
-
Acknowledgements
-
References
-
-
-
- - - -

Last revised: November 14, 2007 at 10:10:22 GMT

-
-
Next
- - diff --git a/doc/introduction.qbk b/doc/introduction.qbk deleted file mode 100644 index 7bd7d786..00000000 --- a/doc/introduction.qbk +++ /dev/null @@ -1,88 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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/iterator.qbk b/doc/iterator.qbk deleted file mode 100644 index fb1553c6..00000000 --- a/doc/iterator.qbk +++ /dev/null @@ -1,846 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Iterator] - -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__. - -/iterator.hpp> - -[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`. - -/iterator/deref.hpp> - -[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`. - -/iterator/next.hpp> - -[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`. - -/iterator/prior.hpp> - -[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`. - -/iterator/distance.hpp> - -[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. - -/iterator/advance.hpp> - -[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. - -/iterator/advance.hpp> - -[heading Example] - typedef __vector__ vec; - - vec v(1,2,3); - assert(__deref__(__advance_c__<2>(__begin__(v))) == 3); - -[endsect] - -[endsect] - -[section Operator] - -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)`. - -/iterator/deref.hpp> - -[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. - -/iterator/equal_to.hpp> - -[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. - -/iterator/equal_to.hpp> - -[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`. - -/iterator/value_of.hpp> - -[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`. - -/iterator/deref.hpp> - -[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`. - -/iterator/next.hpp> - -[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`. - -/iterator/prior.hpp> - -[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. - -/iterator/equal_to.hpp> - -[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`. - -/iterator/distance.hpp> - -[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. - -/iterator/advance.hpp> - -[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`. - -/iterator/advance.hpp> - -[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 deleted file mode 100644 index e26eee6f..00000000 --- a/doc/notes.qbk +++ /dev/null @@ -1,153 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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 deleted file mode 100644 index 8b81fbfc..00000000 --- a/doc/organization.qbk +++ /dev/null @@ -1,87 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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. - -There is also a `"boost/fusion/include/"` directory that contains all the -headers to all the components and modules. If you are unsure where to -find a specific component or module, or don't want to fuss with -hierarchy and nesting, use this. - -The library is header-only. There is no need to build object files to -link against. - -[heading Directory] - -* tuple -* algorithm - * iteration - * query - * transformation -* adapted - * array - * mpl - * boost::tuple - * std_pair - * struct - * variant -* view - * filter_view - * iterator_range - * joint_view - * reverse_view - * single_view - * transform_view - * zip_view -* container - * deque - * list - * map - * set - * vector - * generation -* mpl -* functional -* sequence - * comparison - * intrinsic - * io -* 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 - #include - -The first includes all containers The second 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 deleted file mode 100644 index 5686642a..00000000 --- a/doc/preface.qbk +++ /dev/null @@ -1,75 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Preface] - -[:['["Algorithms + Data Structures = Programs.]]] -[:*--Niklaus Wirth*] - -[heading Description] - -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 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 deleted file mode 100644 index c0d69f1e..00000000 --- a/doc/quick_start.qbk +++ /dev/null @@ -1,168 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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 - #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 - #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 deleted file mode 100644 index 5b6c21a1..00000000 --- a/doc/references.qbk +++ /dev/null @@ -1,26 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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/sequence.qbk b/doc/sequence.qbk deleted file mode 100644 index 18d65191..00000000 --- a/doc/sequence.qbk +++ /dev/null @@ -1,1825 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Sequence] - -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 - #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__ -* __zip_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__ -* __reverse_view__ -* __iterator_range__ (where adapted sequence is a Bidirectional Sequence) -* __transform_view__ (where adapted sequence is a Bidirectional Sequence) -* __zip_view__ (where adapted sequences are models Bidirectional Sequence) - -[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 __mpl_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__ -* __reverse_view__ -* __iterator_range__ (where adapted sequence is a Random Access Sequence) -* __transform_view__ (where adapted sequence is a Random Access Sequence) -* __zip_view__ (where adapted sequences are models Random Access Sequence) - -[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 Intrinsic] - -Intrinsic 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__[footnote In practice, many of intrinsic functions -have default implementations that will work in majority of cases]. - -[heading Header] - - #include - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #include - -[heading Example] - - __set__ s(1, 'x', true); - assert(at_key(s) == 'x'); - -[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`. - -/sequence/intrinsic/swap.hpp> - -[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] - -[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`. - -/sequence/intrinsic/begin.hpp> - -[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`. - -/sequence/intrinsic/end.hpp> - -[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. - -/sequence/intrinsic/empty.hpp> - -[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`. - -/sequence/intrinsic/front.hpp> - -[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`. - -/sequence/intrinsic/back.hpp> - -[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`. - -/sequence/intrinsic/size.hpp> - -[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`. - -/sequence/intrinsic/at.hpp> - -[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`. - -/sequence/intrinsic/at.hpp> - -[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`. - -/sequence/intrinsic/value_at.hpp> - -[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`. - -/sequence/intrinsic/value_at.hpp> - -[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. - -/sequence/intrinsic/has_key.hpp> - -[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`. - -/sequence/intrinsic/at_key.hpp> - -[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`. - -/sequence/intrinsic/value_at_key.hpp> - -[heading Example] - typedef __map__<__pair__, __pair__, __pair__ > mymap; - BOOST_MPL_ASSERT((boost::is_same<__result_of_at_key__::type, char>)); - -[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`. - -/sequence/intrinsic/swap.hpp> - -[endsect] - -[endsect] - -[endsect] - -[section Operator] - -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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 - #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 deleted file mode 100644 index 0c078efa..00000000 --- a/doc/support.qbk +++ /dev/null @@ -1,441 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[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 - #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 - #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. - -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 - #include - -[heading Example] - - 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)); - -[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: - - 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: - - namespace boost { namespace fusion - { - struct incrementable_sequence_tag {}; - - struct single_pass_sequence_tag - : incrementable_sequence_tag {}; - - struct forward_traversal_tag - : single_pass_sequence_tag {}; - - struct bidirectional_traversal_tag - : forward_traversal_tag {}; - - struct random_access_traversal_tag - : bidirectional_traversal_tag {}; - }} - -And optionally from: - - namespace boost { namespace fusion - { - struct associative_sequence_tag {}; - }} - -[*Semantics]: Establishes the conceptual classification of a particular -__sequence__ or __iterator__. - -[heading Header] - - #include - #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 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 - #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 - #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] - -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; - - 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 - [[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`, 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`.]] - [[`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 - #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/tuple.qbk b/doc/tuple.qbk deleted file mode 100644 index 97a0aa46..00000000 --- a/doc/tuple.qbk +++ /dev/null @@ -1,271 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section Tuple] - -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; - -/tuple.hpp> - -[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/doc/view.qbk b/doc/view.qbk deleted file mode 100644 index 8c614937..00000000 --- a/doc/view.qbk +++ /dev/null @@ -1,476 +0,0 @@ -[/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -===============================================================================/] -[section View] - -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 - #include - -[section single_view] - -`single_view` is a view into a value as a single element sequence. - -[heading Header] - - #include - #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 - #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 - #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__, __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]] - [[`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 - #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 - #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__, __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]] - [[`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] - -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] - - #include - #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__] []] - [[`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] - -* __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]] - [[`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`]] -] - -[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 or sequences. - -[table - [[Expression] [Semantics]] - [[`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`.]] -] - -[heading Example] - - struct square - { - template - struct result; - - template - struct result - : remove_reference - {}; - - 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 - #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] diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp deleted file mode 100644 index 33772383..00000000 --- a/example/cookbook/do_the_bind.cpp +++ /dev/null @@ -1,237 +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). - - 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 - -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::_; - - // 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; - - template - struct result< Self (T) > - : 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 - { - typedef typename traits::deduce_sequence::type bound_args; - - bound_args fsq_bind_args; - public: - - fused_bound_function(BindArgs const & bind_args) - : fsq_bind_args(bind_args) - { } - - template - struct result; - - template - struct result_impl - : result_of::invoke< typename result_of::front::type, - typename result_of::transform< - typename result_of::pop_front::type, - argument_transform const - >::type - > - { }; - - template - struct result< Self (FinalArgs) > - : result_impl< typename boost::remove_reference::type > - { }; - - template - inline typename result_impl::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; - - template - struct result_impl - { - // We have to transform the arguments so they are held by-value - // in the returned function. - typedef fusion::unfused_generic< - fused_bound_function > type; - }; - - template - struct result< Self (BindArgs) > - : result_impl< typename boost::remove_reference::type > - { }; - - template - inline typename result_impl< BindArgs >::type - operator()(BindArgs & bind_args) const - { - return typename result< void(BindArgs) >::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; -} - diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp deleted file mode 100644 index 69576612..00000000 --- a/example/cookbook/fill_em_up.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/*============================================================================= - Copyright (c) 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) - - 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 constructed. - - 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. - - Of course you want to be able to handle any type of I and R. - -==============================================================================*/ - -// We'll use these containers as examples -#include -#include - -// For doing I/O -#include - -// We'll use join and advance for processing -#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, 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 - // 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 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: - std::cout << r << std::endl; - - return 0; -} - diff --git a/example/extension/Jamfile b/example/extension/Jamfile deleted file mode 100644 index aabe8302..00000000 --- a/example/extension/Jamfile +++ /dev/null @@ -1,20 +0,0 @@ -#============================================================================== -# 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 : : : : ] - [ run triple.cpp : : : : ] - ; -} - diff --git a/example/extension/detail/advance_impl.hpp b/example/extension/detail/advance_impl.hpp deleted file mode 100644 index 3d3691b2..00000000 --- a/example/extension/detail/advance_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - 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_ADVANCE_IMPL_20060222_2150) -#define BOOST_FUSION_ADVANCE_IMPL_20060222_2150 - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - 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::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 deleted file mode 100644 index c65650d1..00000000 --- a/example/extension/detail/at_impl.hpp +++ /dev/null @@ -1,67 +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_AT_IMPL_20060223_2017) -#define BOOST_FUSION_AT_IMPL_20060223_2017 - -#include -#include -#include -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index 0af810e1..00000000 --- a/example/extension/detail/at_key_impl.hpp +++ /dev/null @@ -1,72 +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_AT_KEY_IMPL_20060223_2017) -#define BOOST_FUSION_AT_KEY_IMPL_20060223_2017 - -#include -#include -#include - -namespace fields -{ - struct name; - struct age; -} - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index 3e1f0802..00000000 --- a/example/extension/detail/begin_impl.hpp +++ /dev/null @@ -1,43 +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_BEGIN_IMPL_20060222_2042) -#define BOOST_FUSION_BEGIN_IMPL_20060222_2042 - -#include "../example_struct_iterator.hpp" - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct begin_impl; - - template<> - struct begin_impl - { - template - struct apply - { - typedef example::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 deleted file mode 100644 index bbc8fe64..00000000 --- a/example/extension/detail/category_of_impl.hpp +++ /dev/null @@ -1,34 +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_CATEGORY_OF_IMPL_20060223_2037) -#define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template<> - struct category_of_impl - { - template - struct apply - { - struct type : random_access_traversal_tag, associative_sequence_tag {}; - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/deref_impl.hpp b/example/extension/detail/deref_impl.hpp deleted file mode 100644 index a65a7fae..00000000 --- a/example/extension/detail/deref_impl.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/*============================================================================= - 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_DEREF_IMPL_20060222_1952) -#define BOOST_FUSION_DEREF_IMPL_20060222_1952 - -#include -#include -#include - -#include - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - 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::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::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 deleted file mode 100644 index 5768ec5e..00000000 --- a/example/extension/detail/distance_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - 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_DISTANCE_IMPL_20060223_0814) -#define BOOST_FUSION_DISTANCE_IMPL_20060223_0814 - -#include - -namespace example -{ - struct example_struct_iterator_tag; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index 789e7c1b..00000000 --- a/example/extension/detail/end_impl.hpp +++ /dev/null @@ -1,43 +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_END_IMPL_20060222_2042) -#define BOOST_FUSION_END_IMPL_20060222_2042 - -#include "../example_struct_iterator.hpp" - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct end_impl; - - template<> - struct end_impl - { - template - struct apply - { - typedef example::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 deleted file mode 100644 index d5decf35..00000000 --- a/example/extension/detail/equal_to_impl.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - 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_EQUAL_TO_IMPL_20060223_1941) -#define BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941 - -#include - -namespace example -{ - struct example_struct_iterator_tag; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index 20c663d7..00000000 --- a/example/extension/detail/has_key_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(BOOST_FUSION_HAS_KEY_IMPL_20060223_2156) -#define BOOST_FUSION_HAS_KEY_IMPL_20060223_2156 - -#include -#include - -namespace fields -{ - struct name; - struct age; -} - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - 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_sequence_impl.hpp b/example/extension/detail/is_sequence_impl.hpp deleted file mode 100644 index e15c08a0..00000000 --- a/example/extension/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,34 +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_IS_SEQUENCE_IMPL_20060228_1946) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion -{ - 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 deleted file mode 100644 index a9b05657..00000000 --- a/example/extension/detail/is_view_impl.hpp +++ /dev/null @@ -1,32 +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_IS_VIEW_IMPL_200604227_2150) -#define BOOST_FUSION_IS_VIEW_IMPL_200604227_2150 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion -{ - 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 deleted file mode 100644 index b8aa3f0d..00000000 --- a/example/extension/detail/next_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - 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_NEXT_IMPL_20060222_1859) -#define BOOST_FUSION_NEXT_IMPL_20060222_1859 - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - 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::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 deleted file mode 100644 index 3577485a..00000000 --- a/example/extension/detail/prior_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - 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_PRIOR_IMPL_20060222_1944) -#define BOOST_FUSION_PRIOR_IMPL_20060222_1944 - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - 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::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 deleted file mode 100644 index 877b4847..00000000 --- a/example/extension/detail/size_impl.hpp +++ /dev/null @@ -1,36 +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_SIZE_IMPL_20060223_2033) -#define BOOST_FUSION_SIZE_IMPL_20060223_2033 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index f2599dfd..00000000 --- a/example/extension/detail/value_at_impl.hpp +++ /dev/null @@ -1,44 +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_VALUE_AT_IMPL_20060223_2025) -#define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025 - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index e30ba9ba..00000000 --- a/example/extension/detail/value_at_key_impl.hpp +++ /dev/null @@ -1,50 +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_VALUE_AT_KEY_IMPL_20060223_2025) -#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025 - -namespace fields -{ - struct name; - struct age; -} - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index 2d0b78aa..00000000 --- a/example/extension/detail/value_of_impl.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/*============================================================================= - 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_VALUE_OF_IMPL_20060223_1905) -#define BOOST_FUSION_VALUE_OF_IMPL_20060223_1905 - -#include - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - 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 deleted file mode 100644 index 73e52d39..00000000 --- a/example/extension/example_struct.hpp +++ /dev/null @@ -1,25 +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_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_view_impl.hpp" - -#endif diff --git a/example/extension/example_struct_iterator.hpp b/example/extension/example_struct_iterator.hpp deleted file mode 100644 index 064c0d74..00000000 --- a/example/extension/example_struct_iterator.hpp +++ /dev/null @@ -1,64 +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_EXAMPLE_STRUCT_ITERATOR) -#define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR - -#include -#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 example -{ - struct example_struct_iterator_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 - : boost::fusion::iterator_base > - { - BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); - typedef Struct struct_type; - 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/example_struct_type.hpp b/example/extension/example_struct_type.hpp deleted file mode 100644 index 0e8abdfb..00000000 --- a/example/extension/example_struct_type.hpp +++ /dev/null @@ -1,27 +0,0 @@ -/*============================================================================= - 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_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 deleted file mode 100644 index 55777bab..00000000 --- a/example/extension/tag_of.hpp +++ /dev/null @@ -1,30 +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_20060222_2052) -#define BOOST_FUSION_TAG_OF_20060222_2052 - -#include -#include "./example_struct_type.hpp" - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - -namespace traits { - - template<> - struct tag_of - { - typedef example::example_sequence_tag type; - }; -}}} - -#endif diff --git a/example/extension/test_example.cpp b/example/extension/test_example.cpp deleted file mode 100644 index 264d1854..00000000 --- a/example/extension/test_example.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - 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 "./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_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); - 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); - - return boost::report_errors(); -} diff --git a/example/extension/triple.cpp b/example/extension/triple.cpp deleted file mode 100644 index ee247439..00000000 --- a/example/extension/triple.cpp +++ /dev/null @@ -1,319 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ - -/*============================================================================= - An implementation of a std::pair like triple - We use fusion::sequence_facade and fusion::iterator_facade - to make our triple a fully conforming Boost.Fusion random - traversal sequence. -==============================================================================*/ - -#include - -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace mpl = boost::mpl; -namespace fusion = boost::fusion; - -namespace demo -{ - template - struct triple_iterator - : fusion::iterator_facade, fusion::random_access_traversal_tag> - { - typedef mpl::int_ index; - typedef Seq sequence_type; - - triple_iterator(Seq& seq) - : seq_(seq) {} - - Seq& seq_; - - template - struct value_of; - - template - struct value_of > - : mpl::identity - {}; - - template - struct value_of > - : mpl::identity - {}; - - template - struct value_of > - : mpl::identity - {}; - - template - struct deref; - - template - struct deref > - { - typedef typename - mpl::if_< - boost::is_const - , typename Sq::t0_type const& - , typename Sq::t0_type& - >::type - type; - - static type - call(triple_iterator const& iter) - { - return iter.seq_.t0; - } - }; - - template - struct deref > - { - typedef typename - mpl::if_< - boost::is_const - , typename Sq::t1_type const& - , typename Sq::t1_type& - >::type - type; - - static type - call(triple_iterator const& iter) - { - return iter.seq_.t1; - } - }; - - template - struct deref > - { - typedef typename - mpl::if_< - boost::is_const - , typename Sq::t2_type const& - , typename Sq::t2_type& - >::type - type; - - static type - call(triple_iterator const& iter) - { - return iter.seq_.t2; - } - }; - - template - struct next - { - typedef triple_iterator< - typename It::sequence_type, It::index::value + 1> type; - - static type call(It const& it) - { - return type(it.seq_); - } - }; - - template - struct prior - { - typedef triple_iterator< - typename It::sequence_type, It::index::value - 1> type; - - static type call(It const& it) - { - return type(it.seq_); - } - }; - - template - struct distance - { - typedef typename mpl::minus::type type; - - static type call(It1 const& it1, It2 const& it2) - { - return type(); - } - }; - - template - struct advance - { - typedef triple_iterator< - typename It::sequence_type, - It::index::value + M::value> type; - - static type call(It const& it) - { - return type(it.seq_); - } - }; - }; - - template - struct triple - : fusion::sequence_facade, fusion::random_access_traversal_tag> - { - triple(T0 const& t0, T1 const& t1, T2 const& t2) - : t0(t0), t1(t1), t2(t2) - {} - - template - struct begin - { - typedef demo::triple_iterator< - Sq, 0> type; - - static type call(Sq& sq) - { - return type(sq); - } - }; - - template - struct end - { - typedef demo::triple_iterator< - Sq, 3> type; - - static type call(Sq& sq) - { - return type(sq); - } - }; - - template - struct size - : mpl::int_<3> - {}; - - template - struct value_at - : value_at > - {}; - - template - struct value_at > - { - typedef typename Sq::t0_type type; - }; - - template - struct value_at > - { - typedef typename Sq::t1_type type; - }; - - template - struct value_at > - { - typedef typename Sq::t2_type type; - }; - - template - struct at - : at > - {}; - - template - struct at > - { - typedef typename - mpl::if_< - boost::is_const - , typename Sq::t0_type const& - , typename Sq::t0_type& - >::type - type; - - static type call(Sq& sq) - { - return sq.t0; - } - }; - - template - struct at > - { - typedef typename - mpl::if_< - boost::is_const - , typename Sq::t1_type const& - , typename Sq::t1_type& - >::type - type; - - static type call(Sq& sq) - { - return sq.t1; - } - }; - - template - struct at > - { - typedef typename - mpl::if_< - boost::is_const - , typename Sq::t2_type const& - , typename Sq::t2_type& - >::type - type; - - static type call(Sq& sq) - { - return sq.t2; - } - }; - - typedef T0 t0_type; - typedef T1 t1_type; - typedef T2 t2_type; - - T0 t0; - T1 t1; - T2 t2; - }; -} - -int main() -{ - typedef demo::triple my_triple; - my_triple t(101, 'a', "hello"); - BOOST_TEST(*fusion::begin(t) == 101); - BOOST_TEST(*fusion::next(fusion::begin(t)) == 'a'); - BOOST_TEST(*fusion::prior(fusion::end(t)) == "hello"); - BOOST_TEST(fusion::distance(fusion::begin(t), fusion::end(t)) == 3); - BOOST_TEST(fusion::size(t) == 3); - BOOST_MPL_ASSERT((boost::is_same::type>)); - BOOST_MPL_ASSERT((boost::is_same::type>)); - BOOST_MPL_ASSERT((boost::is_same::type>)); - BOOST_TEST(fusion::at_c<0>(t) == 101); - BOOST_TEST(fusion::at_c<1>(t) == 'a'); - BOOST_TEST(fusion::at_c<2>(t) == "hello"); - return boost::report_errors(); -} diff --git a/example/performance/Jamfile b/example/performance/Jamfile deleted file mode 100644 index 3b8c8ffc..00000000 --- a/example/performance/Jamfile +++ /dev/null @@ -1,20 +0,0 @@ -#============================================================================== -# 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 ; - -exe sequence_efficiency : sequence_efficiency.cpp ; - -exe functional : functional.cpp ; - diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp deleted file mode 100644 index 45aa1a11..00000000 --- a/example/performance/accumulate.cpp +++ /dev/null @@ -1,357 +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) -==============================================================================*/ -#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 -{ - 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; - - template - struct result - : boost::remove_reference - {}; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs + rhs; - } - }; - - struct poly_mult - { - template - struct result; - - template - struct result - : boost::remove_reference - {}; - - 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/functional.cpp b/example/performance/functional.cpp deleted file mode 100644 index e16d764d..00000000 --- a/example/performance/functional.cpp +++ /dev/null @@ -1,305 +0,0 @@ -/*============================================================================= - 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()); - } - - typedef int result_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; - } - - typedef int result_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; - } - - typedef int result_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; - } - { - 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; - } - { - 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; -} diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp deleted file mode 100644 index 9b9937eb..00000000 --- a/example/performance/inner_product.cpp +++ /dev/null @@ -1,184 +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) -==============================================================================*/ -#include -#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; - - template - struct result - : boost::remove_reference - {}; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs + rhs; - } - }; - - struct poly_mult - { - template - struct result; - - template - struct result - : boost::remove_reference - {}; - - 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 deleted file mode 100644 index 3e952c07..00000000 --- a/example/performance/inner_product2.cpp +++ /dev/null @@ -1,206 +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) -==============================================================================*/ -#include -#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; - - template - struct result - : boost::remove_reference - {}; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs + rhs; - } - }; - - struct poly_mult - { - template - struct result; - - template - struct result - : boost::remove_reference - {}; - - 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; - - template - struct result - : boost::remove_reference - {}; - - 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; -} diff --git a/example/performance/measure.hpp b/example/performance/measure.hpp deleted file mode 100644 index 72cd71ba..00000000 --- a/example/performance/measure.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// 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) - -#if !defined(LIVE_CODE_TYPE) -# define LIVE_CODE_TYPE int -#endif - -#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. - LIVE_CODE_TYPE 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 deleted file mode 100644 index 28b5ec82..00000000 --- a/example/performance/sequence_efficiency.cpp +++ /dev/null @@ -1,248 +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) -==============================================================================*/ -#include "measure.hpp" - -#define FUSION_MAX_LIST_SIZE 30 -#define FUSION_MAX_VECTOR_SIZE 30 - -#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 - -// 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 - { - template - struct result; - - template - struct result - : boost::remove_reference - {}; - - 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; - }; - - // 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) - { - test::measure >(seq, 1); - std::cout << info << test::live_code << std::endl; - } - - template - void measure(T const& seq, char const* info, long const repeats, double base) - { - double t = test::measure >(seq, repeats); - std::cout - << info - << t - << " (" << int((t/base)*100) << "%)" - << 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 -// 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 boost::fusion; - std::cout.setf(std::ios::scientific); - - vector< - int, int, int - > - vsmall(BOOST_PP_ENUM(3, INIT, _)); - - list< - int, int, int - > - lsmall(BOOST_PP_ENUM(3, INIT, _)); - - vector< - int, int, int, int, int, int, int, int, int, int - > - vmedium(BOOST_PP_ENUM(10, INIT, _)); - - list< - int, int, int, int, int, int, int, int, int, int - > - 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(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(30, INIT, _)); - - // 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 >(0, 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(); - } - - 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: "); - check(lmedium, "medium list accumulated result: "); - check(vbig, "big vector accumulated result: "); - check(lbig, "big list accumulated result: "); - - 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); - - // 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; -} diff --git a/example/performance/timings.txt b/example/performance/timings.txt deleted file mode 100644 index 35549170..00000000 --- a/example/performance/timings.txt +++ /dev/null @@ -1,57 +0,0 @@ -=============================================================================== -Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -=============================================================================== - -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.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: 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) - - 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.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 deleted file mode 100644 index 36ded283..00000000 --- a/example/performance/zip_efficiency.cpp +++ /dev/null @@ -1,155 +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) -==============================================================================*/ -#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; -} diff --git a/index.html b/index.html deleted file mode 100644 index 1eb81150..00000000 --- a/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - Automatic redirection failed, click this - 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 diff --git a/test/Jamfile b/test/Jamfile deleted file mode 100644 index f70629b8..00000000 --- a/test/Jamfile +++ /dev/null @@ -1,147 +0,0 @@ -##============================================================================== -# 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 algorithm/zip2.cpp : : : : ] - [ run algorithm/zip_ignore.cpp : : : : ] - - [ run sequence/as_list.cpp : : : : ] - [ 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 : : : : ] - [ 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/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 : : : : ] - [ run sequence/map_tie.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/variant.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/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 : : : : ] - [ run sequence/zip_view_ignore.cpp : : : : ] - [ 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 : : : : ] - [ 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 : : : : ] - [ run sequence/swap.cpp : : : : ] - -# [ compile-fail xxx.cpp : : : : ] - - ; -} - -{ - # 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/all.cpp b/test/algorithm/all.cpp deleted file mode 100644 index 47c65e50..00000000 --- a/test/algorithm/all.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#include -#include -#include -#include -#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() -{ - { - 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; - // 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 deleted file mode 100644 index 69f114f8..00000000 --- a/test/algorithm/any.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#include -#include -#include -#include -#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() -{ - { - 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; - // 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/clear.cpp b/test/algorithm/clear.cpp deleted file mode 100644 index 9122af2c..00000000 --- a/test/algorithm/clear.cpp +++ /dev/null @@ -1,45 +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) -==============================================================================*/ -#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 deleted file mode 100644 index e87ff9d8..00000000 --- a/test/algorithm/count.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#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 deleted file mode 100644 index d67e464c..00000000 --- a/test/algorithm/count_if.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#include -#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; - // 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(); -} - diff --git a/test/algorithm/erase.cpp b/test/algorithm/erase.cpp deleted file mode 100644 index 310c7260..00000000 --- a/test/algorithm/erase.cpp +++ /dev/null @@ -1,63 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 56c64780..00000000 --- a/test/algorithm/erase_key.cpp +++ /dev/null @@ -1,74 +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) -==============================================================================*/ -#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/ext_/find_if_s.cpp b/test/algorithm/ext_/find_if_s.cpp deleted file mode 100755 index 7f33ea45..00000000 --- a/test/algorithm/ext_/find_if_s.cpp +++ /dev/null @@ -1,109 +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) -==============================================================================*/ -#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 deleted file mode 100755 index 63ffed2c..00000000 --- a/test/algorithm/ext_/for_each_s.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman, Eric Niebler - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#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/algorithm/filter.cpp b/test/algorithm/filter.cpp deleted file mode 100644 index 5bca82bf..00000000 --- a/test/algorithm/filter.cpp +++ /dev/null @@ -1,43 +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) -==============================================================================*/ -#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 deleted file mode 100644 index f5f1b190..00000000 --- a/test/algorithm/filter_if.cpp +++ /dev/null @@ -1,77 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 25a61e94..00000000 --- a/test/algorithm/find.cpp +++ /dev/null @@ -1,79 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 2b402b9f..00000000 --- a/test/algorithm/find_if.cpp +++ /dev/null @@ -1,69 +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) -==============================================================================*/ -#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 deleted file mode 100644 index a890da67..00000000 --- a/test/algorithm/fold.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#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; - - template - struct result - { - typedef typename boost::remove_const< - typename boost::remove_reference::type>::type 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; - - 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 - , state - >::type - type; - }; - - template - typename result::type - operator()(T const&, CountT const&) const - { - typedef typename result::type result; - return result(); - } -}; - -struct appender -{ - typedef std::string result_type; - - std::string operator()(char c, std::string const& str) const - { - return str + c; - } -}; - -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 add(int lhs, int rhs) -{ - return lhs + rhs; -} - -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); - } - - { - BOOST_TEST(fusion::fold(fusion::make_vector('a','b','c','d','e'), std::string(""), appender()) - == "abcde"); - } - - { - vector vec(1,2); - 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); - 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); - } - - { - BOOST_TEST(fusion::accumulate(fusion::make_vector('a','b','c','d','e'), std::string(""), appender()) - == "abcde"); - } - - { - vector vec(1,2); - BOOST_TEST(fusion::accumulate(vec, 0, add) == 3); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/for_each.cpp b/test/algorithm/for_each.cpp deleted file mode 100644 index a0054fad..00000000 --- a/test/algorithm/for_each.cpp +++ /dev/null @@ -1,61 +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) -==============================================================================*/ -#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 deleted file mode 100644 index a489d630..00000000 --- a/test/algorithm/insert.cpp +++ /dev/null @@ -1,67 +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) -==============================================================================*/ -#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 deleted file mode 100644 index f4dccb05..00000000 --- a/test/algorithm/insert_range.cpp +++ /dev/null @@ -1,71 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 186876fb..00000000 --- a/test/algorithm/join.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*============================================================================= - 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 - -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 deleted file mode 100644 index ec5676b6..00000000 --- a/test/algorithm/none.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#include -#include -#include -#include -#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() -{ - { - 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; - // 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(); -} - diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp deleted file mode 100644 index 3bd98248..00000000 --- a/test/algorithm/pop_back.cpp +++ /dev/null @@ -1,46 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 1d187592..00000000 --- a/test/algorithm/pop_front.cpp +++ /dev/null @@ -1,46 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 420ca3c4..00000000 --- a/test/algorithm/push_back.cpp +++ /dev/null @@ -1,72 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 380ddc0c..00000000 --- a/test/algorithm/push_front.cpp +++ /dev/null @@ -1,55 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 479ed56a..00000000 --- a/test/algorithm/remove.cpp +++ /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) -==============================================================================*/ -#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 deleted file mode 100644 index aa7250d3..00000000 --- a/test/algorithm/remove_if.cpp +++ /dev/null @@ -1,78 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 11525220..00000000 --- a/test/algorithm/replace.cpp +++ /dev/null @@ -1,49 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 322c3028..00000000 --- a/test/algorithm/replace_if.cpp +++ /dev/null @@ -1,52 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 3c06d21a..00000000 --- a/test/algorithm/reverse.cpp +++ /dev/null @@ -1,49 +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) -==============================================================================*/ -#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 deleted file mode 100644 index fac0c92a..00000000 --- a/test/algorithm/transform.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct square -{ - template - struct result; - - template - struct result - { - typedef int type; - }; - - template - int operator()(T x) const - { - return x * x; - } -}; - -struct add -{ - template - struct result; - - template - struct result - { - typedef int type; - }; - - template - int operator()(A a, B b) const - { - return a + b; - } -}; - -struct unary_lvalue_transform -{ - template - struct result; - - template - struct result - { - typedef T* type; - }; - - template - T* operator()(T& t) const - { - return &t; - } -}; - -int twice(int v) -{ - return v*2; -} - -struct binary_lvalue_transform -{ - template - struct result; - - template - struct result - { - typedef T0* type; - }; - - template - T0* operator()(T0& t0, T1&) const - { - return &t0; - } -}; - -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))); - } - - { - // 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)); - } - - { - vector tup1(1, 2, 3); - BOOST_TEST(transform(tup1, twice) == make_vector(2,4,6)); - } - - - return boost::report_errors(); -} - diff --git a/test/algorithm/zip.cpp b/test/algorithm/zip.cpp deleted file mode 100644 index df7eb599..00000000 --- a/test/algorithm/zip.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - 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 - -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/algorithm/zip2.cpp b/test/algorithm/zip2.cpp deleted file mode 100644 index c8007117..00000000 --- a/test/algorithm/zip2.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - 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 - -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(); -} diff --git a/test/algorithm/zip_ignore.cpp b/test/algorithm/zip_ignore.cpp deleted file mode 100644 index a12b5820..00000000 --- a/test/algorithm/zip_ignore.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*============================================================================= - 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(); -} diff --git a/test/functional/fused.cpp b/test/functional/fused.cpp deleted file mode 100644 index e2c89395..00000000 --- a/test/functional/fused.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include - -#include -#include - -namespace fusion = boost::fusion; -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; - - 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); - 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 deleted file mode 100644 index c8d4c590..00000000 --- a/test/functional/fused_function_object.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include - -namespace fusion = boost::fusion; -using boost::noncopyable; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(T0, T1) > - { - 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 deleted file mode 100644 index 57443c20..00000000 --- a/test/functional/fused_procedure.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include - -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 deleted file mode 100644 index 3960af17..00000000 --- a/test/functional/invoke.cpp +++ /dev/null @@ -1,394 +0,0 @@ -/*============================================================================= - 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 -{ - // Handle nullary separately to exercise result_of support - template - struct result; - - template - struct result< Self(T0) > - { - typedef int type; - }; - - template - struct result< Self(T0, T1) > - { - typedef int type; - }; - - template - struct result< Self(T0, T1, T2) > - { - typedef int type; - }; - - 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 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< Self(T0)> - { - 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 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 - - nullary_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))); - - 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))); - - // 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::is_same; - - 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 )); -// disabled until boost::result_of supports it -// BOOST_TEST(( is_same< -// fusion::result_of::invoke >::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_function_object.cpp b/test/functional/invoke_function_object.cpp deleted file mode 100644 index 5f08f650..00000000 --- a/test/functional/invoke_function_object.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/*============================================================================= - 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 -{ - // Handle nullary separately to exercise result_of support - template - struct result; - - template - struct result< Self(T0) > - { - typedef int type; - }; - - template - struct result< Self(T0, T1) > - { - typedef int type; - }; - - template - struct result< Self(T0, T1, T2) > - { - 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 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< Self(T0) > - { - 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; } -}; - - -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 - - 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))); - - 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))); -} - -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< 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 )); -} - - -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 deleted file mode 100644 index 810cb903..00000000 --- a/test/functional/invoke_procedure.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/*============================================================================= - 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 - -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>()); -} - -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(); -} - diff --git a/test/functional/make_fused.cpp b/test/functional/make_fused.cpp deleted file mode 100644 index aab7928a..00000000 --- a/test/functional/make_fused.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include - -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 deleted file mode 100644 index dec2411a..00000000 --- a/test/functional/make_fused_function_object.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include - -namespace fusion = boost::fusion; -using boost::noncopyable; -using boost::cref; -using boost::ref; - -template -struct test_func - : Base -{ - template - struct result - { - }; - - - template - struct result< Self(T0, T1) > - { - 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 deleted file mode 100644 index 754c17bc..00000000 --- a/test/functional/make_fused_procedure.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include - -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 deleted file mode 100644 index 4dcc7449..00000000 --- a/test/functional/make_unfused_generic.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_generic< test_func<> >::type unfused_func = - fusion::make_unfused_generic(f); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_generic(ref(f_nc)); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_generic(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(const_(unfused_func)(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused_lvalue_args.cpp deleted file mode 100644 index af94256c..00000000 --- a/test/functional/make_unfused_lvalue_args.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value + elem; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_lvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_lvalue_args(f); - - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_lvalue_args(ref(f_nc)); - - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_lvalue_args(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; - long expected; - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(const_(unfused_func)(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); - - return boost::report_errors(); -} - diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp deleted file mode 100644 index 383fcc0b..00000000 --- a/test/functional/make_unfused_rvalue_args.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_rvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_rvalue_args(f); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_rvalue_args(ref(f_nc)); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_rvalue_args(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(const_(unfused_func)(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp deleted file mode 100644 index f1f86515..00000000 --- a/test/functional/unfused_generic.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self (Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - - template - struct result; - - template struct result< Self(T0,T1) > - : mpl::identity - { }; - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_generic< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_generic< test_func<> > unfused_func; - fusion::unfused_generic< test_func & > unfused_func_ref(f); - fusion::unfused_generic< test_func<> const > unfused_func_c; - fusion::unfused_generic< test_func<> > const unfused_func_c2; - fusion::unfused_generic< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - // also test const lvalues to pick up compiler deficiencies in that area - int const clvalue_1 = 1; - long const clvalue_2 = 2; - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,clvalue_1,clvalue_2,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_c(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c2(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 10*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp deleted file mode 100644 index e7972499..00000000 --- a/test/functional/unfused_lvalue_args.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include - -#include - -#include -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value + elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_lvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_lvalue_args< test_func<> > unfused_func; - fusion::unfused_lvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_lvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_lvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_lvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; - long expected; - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c2(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+5*sizeof(lv1) && lv2 == 3+5*sizeof(lv2) && lv3 == 7+5*sizeof(lv3)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp deleted file mode 100644 index 349bf7fa..00000000 --- a/test/functional/unfused_rvalue_args.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_rvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_rvalue_args< test_func<> > unfused_func; - fusion::unfused_rvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_rvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_rvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_rvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c2(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp deleted file mode 100644 index 7c5fa856..00000000 --- a/test/functional/unfused_typed.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; -using mpl::placeholders::_; - -using boost::noncopyable; - -typedef fusion::vector<> types0; -typedef fusion::vector types1; -typedef fusion::vector types3; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - 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 -# define BOOST_TEST_NO_VC71(cond) (void)((cond)?0:1) -#else -# define BOOST_TEST_NO_VC71(cond) BOOST_TEST(cond) -#endif - -void nullary_tests() -{ - test_func 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); - 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)); -} - -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 + 1*sizeof(lvalue)); - BOOST_TEST(unfused_func_ref(lvalue,2,'\007') == 100 + expected); - BOOST_TEST(lvalue == 1 + 2*sizeof(lvalue)); - BOOST_TEST(unfused_func_c(lvalue,2,'\007') == 0 + expected); - BOOST_TEST(lvalue == 1 + 3*sizeof(lvalue)); - BOOST_TEST(unfused_func_c2(lvalue,2,'\007') == 0 + expected); - BOOST_TEST(lvalue == 1 + 4*sizeof(lvalue)); - BOOST_TEST(unfused_func_c_ref(lvalue,2,'\007') == 0 + expected); - BOOST_TEST(lvalue == 1 + 5*sizeof(lvalue)); -} - -int main() -{ - result_type_tests(); - nullary_tests(); - unary_tests(); - ternary_tests(); - - return boost::report_errors(); -} - diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp deleted file mode 100644 index acab2b97..00000000 --- a/test/sequence/adapt_assoc_struct.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/*============================================================================= - 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(); -} - diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp deleted file mode 100644 index c9c1d2db..00000000 --- a/test/sequence/adapt_struct.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/*============================================================================= - 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_FUSION_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(); -} - diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp deleted file mode 100644 index 0ca5255d..00000000 --- a/test/sequence/array.cpp +++ /dev/null @@ -1,41 +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) -==============================================================================*/ - -#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 deleted file mode 100644 index 52846d9d..00000000 --- a/test/sequence/as_list.cpp +++ /dev/null @@ -1,53 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 32e3a420..00000000 --- a/test/sequence/as_map.cpp +++ /dev/null @@ -1,61 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 12a3641c..00000000 --- a/test/sequence/as_set.cpp +++ /dev/null @@ -1,64 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 27905de5..00000000 --- a/test/sequence/as_vector.cpp +++ /dev/null @@ -1,54 +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) -==============================================================================*/ -#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/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp deleted file mode 100644 index 689709f9..00000000 --- a/test/sequence/back_extended_deque.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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/boost_tuple.cpp b/test/sequence/boost_tuple.cpp deleted file mode 100644 index 07e39695..00000000 --- a/test/sequence/boost_tuple.cpp +++ /dev/null @@ -1,90 +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) -==============================================================================*/ -#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(); -} - diff --git a/test/sequence/comparison.hpp b/test/sequence/comparison.hpp deleted file mode 100644 index 429c93c6..00000000 --- a/test/sequence/comparison.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 3bd6437f..00000000 --- a/test/sequence/cons.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#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 deleted file mode 100644 index d5c56664..00000000 --- a/test/sequence/construction.hpp +++ /dev/null @@ -1,117 +0,0 @@ -/*============================================================================= - 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 - 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 - -namespace test_detail -{ - // 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; - using namespace test_detail; - - nil empty; - - FUSION_SEQUENCE<> empty0; - - FUSION_SEQUENCE<> empty1(empty); - - 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 deleted file mode 100644 index 96edbc45..00000000 --- a/test/sequence/copy.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/*============================================================================= - 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 - 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_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 test_detail -{ - // 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(); }; }; -} - -boost::fusion::FUSION_SEQUENCE -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() -{ - using namespace boost::fusion; - using namespace test_detail; - - 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); - - // returning a tuple with conversion - foo(2); - - test_mpl(); -} diff --git a/test/sequence/deduce_sequence.cpp b/test/sequence/deduce_sequence.cpp deleted file mode 100644 index ea661662..00000000 --- a/test/sequence/deduce_sequence.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - 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(); -} diff --git a/test/sequence/deque_comparison.cpp b/test/sequence/deque_comparison.cpp deleted file mode 100644 index 229fd0e6..00000000 --- a/test/sequence/deque_comparison.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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 deleted file mode 100644 index bba8f09a..00000000 --- a/test/sequence/deque_construction.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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 deleted file mode 100644 index f654277b..00000000 --- a/test/sequence/deque_copy.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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 deleted file mode 100644 index baf6f827..00000000 --- a/test/sequence/deque_iterator.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - 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 - -#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 deleted file mode 100644 index e06dea27..00000000 --- a/test/sequence/deque_make.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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 deleted file mode 100644 index 53836bbc..00000000 --- a/test/sequence/deque_misc.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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 deleted file mode 100644 index 66ab1478..00000000 --- a/test/sequence/deque_mutate.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 - - Distributed under the Boost 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 deleted file mode 100644 index e1d855ae..00000000 --- a/test/sequence/deque_tie.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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 deleted file mode 100644 index c348d287..00000000 --- a/test/sequence/deque_value_at.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#define FUSION_SEQUENCE deque -#include "value_at.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/ext_/iterator_range_s.cpp b/test/sequence/ext_/iterator_range_s.cpp deleted file mode 100755 index 02a49ad4..00000000 --- a/test/sequence/ext_/iterator_range_s.cpp +++ /dev/null @@ -1,146 +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) -==============================================================================*/ -#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 fusion::result_of::find_if_s >::type short_iter; - typedef typename fusion::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(); -} - diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp deleted file mode 100644 index a89abec2..00000000 --- a/test/sequence/filter_view.cpp +++ /dev/null @@ -1,120 +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) -==============================================================================*/ -#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, 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. - -#ifndef __EDG_VERSION__ - 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); -#endif - } - - { - // 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/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp deleted file mode 100644 index fc049618..00000000 --- a/test/sequence/front_extended_deque.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - 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 - -#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(); -} diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp deleted file mode 100644 index d896b88f..00000000 --- a/test/sequence/io.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/*============================================================================= - Copyright (C) 1999-2003 Jaakko Järvi - - Distributed under the Boost Software 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 deleted file mode 100644 index 118bb347..00000000 --- a/test/sequence/iterator.hpp +++ /dev/null @@ -1,197 +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) -==============================================================================*/ -#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 deleted file mode 100644 index af42cadd..00000000 --- a/test/sequence/iterator_range.cpp +++ /dev/null @@ -1,81 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 8dc4eb3c..00000000 --- a/test/sequence/joint_view.cpp +++ /dev/null @@ -1,144 +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) -==============================================================================*/ -#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 deleted file mode 100644 index fcf213c5..00000000 --- a/test/sequence/list_comparison.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 26d648fd..00000000 --- a/test/sequence/list_construction.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 07078344..00000000 --- a/test/sequence/list_copy.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index f7cc6e1d..00000000 --- a/test/sequence/list_iterator.cpp +++ /dev/null @@ -1,22 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 39d2a3c9..00000000 --- a/test/sequence/list_make.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 2d8fe047..00000000 --- a/test/sequence/list_misc.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index f8802b27..00000000 --- a/test/sequence/list_mutate.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index d96bbf4a..00000000 --- a/test/sequence/list_tie.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 763cf265..00000000 --- a/test/sequence/list_value_at.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index c6494474..00000000 --- a/test/sequence/make.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/*============================================================================= - 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 - 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 test_detail -{ - // 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; - using namespace test_detail; - - { - 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 deleted file mode 100644 index 39d2a3c9..00000000 --- a/test/sequence/make_list.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index efd9f068..00000000 --- a/test/sequence/make_vector.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 5f58b9dc..00000000 --- a/test/sequence/map.cpp +++ /dev/null @@ -1,72 +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) -==============================================================================*/ -#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/map_tie.cpp b/test/sequence/map_tie.cpp deleted file mode 100644 index 1232812d..00000000 --- a/test/sequence/map_tie.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - 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(); -} diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp deleted file mode 100644 index d1fae03b..00000000 --- a/test/sequence/misc.hpp +++ /dev/null @@ -1,189 +0,0 @@ -/*============================================================================= - 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 - 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(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 deleted file mode 100644 index d50d84d0..00000000 --- a/test/sequence/mutate.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - 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 - 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 test_detail -{ - // 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; - using namespace test_detail; - - 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/repetitive_view.cpp b/test/sequence/repetitive_view.cpp deleted file mode 100644 index 54da37bc..00000000 --- a/test/sequence/repetitive_view.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/*============================================================================= - 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(); -} - diff --git a/test/sequence/reverse_view.cpp b/test/sequence/reverse_view.cpp deleted file mode 100644 index 3fb20e55..00000000 --- a/test/sequence/reverse_view.cpp +++ /dev/null @@ -1,64 +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) -==============================================================================*/ -#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 deleted file mode 100644 index 95c5b40d..00000000 --- a/test/sequence/set.cpp +++ /dev/null @@ -1,67 +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) -==============================================================================*/ -#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 deleted file mode 100644 index e3faa26a..00000000 --- a/test/sequence/single_view.cpp +++ /dev/null @@ -1,57 +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) -==============================================================================*/ -#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 deleted file mode 100644 index b5c18d17..00000000 --- a/test/sequence/std_pair.cpp +++ /dev/null @@ -1,91 +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) -==============================================================================*/ -#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/swap.cpp b/test/sequence/swap.cpp deleted file mode 100644 index 7df7b822..00000000 --- a/test/sequence/swap.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - 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(); -} diff --git a/test/sequence/tie.hpp b/test/sequence/tie.hpp deleted file mode 100644 index 6097ef8e..00000000 --- a/test/sequence/tie.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/*============================================================================= - 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 - 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 test_detail -{ - // 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; - using namespace test_detail; - - 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 deleted file mode 100644 index b1a48073..00000000 --- a/test/sequence/transform_view.cpp +++ /dev/null @@ -1,115 +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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -struct square -{ - template - struct result; - - template - struct result - { - typedef int type; - }; - - template - int operator()(T x) const - { - return x * x; - } -}; - -struct add -{ - template - struct result; - - 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)); - BOOST_TEST((boost::fusion::at_c<2>(xform) == 49)); - BOOST_MPL_ASSERT((boost::is_same::type, int>)); - } - - { - 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))); - BOOST_TEST((boost::fusion::at_c<2>(xform) == 19)); - BOOST_MPL_ASSERT((boost::is_same::type, int>)); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp deleted file mode 100644 index 8108256b..00000000 --- a/test/sequence/tuple_comparison.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 323c72ed..00000000 --- a/test/sequence/tuple_construction.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 9a4d80e1..00000000 --- a/test/sequence/tuple_copy.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 496fd6e1..00000000 --- a/test/sequence/tuple_element.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 77ff412f..00000000 --- a/test/sequence/tuple_make.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index daef0322..00000000 --- a/test/sequence/tuple_misc.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - 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 - 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 -#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 deleted file mode 100644 index 8770b520..00000000 --- a/test/sequence/tuple_mutate.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index e91c47a3..00000000 --- a/test/sequence/tuple_tie.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - 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 - 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/value_at.hpp b/test/sequence/value_at.hpp deleted file mode 100644 index d655f13e..00000000 --- a/test/sequence/value_at.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - 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 - 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 test_detail -{ - // something to prevent warnings for unused variables - template void dummy(const T&) {} - - class A {}; -} - -void -test() -{ - using namespace boost::fusion; - using namespace test_detail; - - 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/variant.cpp b/test/sequence/variant.cpp deleted file mode 100644 index bfbf6fd3..00000000 --- a/test/sequence/variant.cpp +++ /dev/null @@ -1,56 +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) -==============================================================================*/ - -#include - -#include -#include -#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_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"); - 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(); -} diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp deleted file mode 100644 index 7321820e..00000000 --- a/test/sequence/vector_comparison.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index d279c232..00000000 --- a/test/sequence/vector_construction.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index a4c8a3af..00000000 --- a/test/sequence/vector_copy.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index bcf15c69..00000000 --- a/test/sequence/vector_iterator.cpp +++ /dev/null @@ -1,22 +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) -==============================================================================*/ -#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 deleted file mode 100644 index efd9f068..00000000 --- a/test/sequence/vector_make.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 25d3ecfc..00000000 --- a/test/sequence/vector_misc.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - 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 - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#include -#include -#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 deleted file mode 100644 index 610c0c18..00000000 --- a/test/sequence/vector_mutate.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index b051ca89..00000000 --- a/test/sequence/vector_n.cpp +++ /dev/null @@ -1,232 +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) -==============================================================================*/ -#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; - - { - vector0 vec; - (void) vec; - cout << "(): " << sizeof(vec) << endl; - cout << (boost::is_empty::value ? "is empty" : "is not empty") << 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 deleted file mode 100644 index 43895000..00000000 --- a/test/sequence/vector_tie.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 8a99da5b..00000000 --- a/test/sequence/vector_value_at.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - 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 - 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 deleted file mode 100644 index 7f88f52a..00000000 --- a/test/sequence/zip_view.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - 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 -#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 deleted file mode 100644 index 8a07aa88..00000000 --- a/test/sequence/zip_view2.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - 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 -#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/test/sequence/zip_view_ignore.cpp b/test/sequence/zip_view_ignore.cpp deleted file mode 100644 index 2a300809..00000000 --- a/test/sequence/zip_view_ignore.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - 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(); -} diff --git a/todo.txt b/todo.txt deleted file mode 100644 index d164d6ae..00000000 --- a/todo.txt +++ /dev/null @@ -1,173 +0,0 @@ -=============================================================================== -Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -=============================================================================== - -* Improve extension docs - -* Document sequence/convert - -* 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 - -* Improved motivation section - -* Expand details of view concept - -* Examples, examples, examples - -* 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() - -* mpl, fusion, container type preserving operations incompatible - -- 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? - Dan: done now! - -* 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. - -* Why do we need to set FUSION_MAX_VECTOR_SIZE when we set - FUSION_MAX_MAP_SIZE? Setting FUSION_MAX_MAP_SIZE should be enough. - -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... - -* 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): - -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. - - 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 - functionality. - From d57e8cfe9e1ae38d9c97033a22b662147f843a2d Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 25 Nov 2007 18:38:02 +0000 Subject: [PATCH 02/82] Full merge from trunk at revision 41356 of entire boost-root tree. [SVN r41370] --- doc/Jamfile | 25 + doc/acknowledgements.qbk | 23 + doc/adapted.qbk | 168 ++ doc/algorithm.qbk | 2523 +++++++++++++++++ doc/changelog.qbk | 16 + doc/container.qbk | 1655 +++++++++++ doc/extension.qbk | 598 ++++ doc/functional.qbk | 1702 +++++++++++ doc/fusion.qbk | 321 +++ doc/html/fusion/acknowledgements.html | 57 + doc/html/fusion/adapted.html | 77 + doc/html/fusion/adapted/boost__array.html | 85 + doc/html/fusion/adapted/boost__tuple.html | 81 + doc/html/fusion/adapted/boost__variant.html | 84 + doc/html/fusion/adapted/mpl_sequence.html | 101 + doc/html/fusion/adapted/std__pair.html | 84 + doc/html/fusion/algorithm.html | 114 + doc/html/fusion/algorithm/iteration.html | 59 + .../fusion/algorithm/iteration/functions.html | 48 + .../iteration/functions/accumulate.html | 203 ++ .../algorithm/iteration/functions/fold.html | 203 ++ .../iteration/functions/for_each.html | 179 ++ .../algorithm/iteration/metafunctions.html | 48 + .../iteration/metafunctions/accumulate.html | 181 ++ .../iteration/metafunctions/fold.html | 181 ++ .../iteration/metafunctions/for_each.html | 163 ++ doc/html/fusion/algorithm/query.html | 58 + .../fusion/algorithm/query/functions.html | 52 + .../fusion/algorithm/query/functions/all.html | 182 ++ .../fusion/algorithm/query/functions/any.html | 182 ++ .../algorithm/query/functions/count.html | 169 ++ .../algorithm/query/functions/count_if.html | 168 ++ .../algorithm/query/functions/find.html | 174 ++ .../algorithm/query/functions/find_if.html | 173 ++ .../algorithm/query/functions/none.html | 182 ++ .../fusion/algorithm/query/metafunctions.html | 52 + .../algorithm/query/metafunctions/all.html | 166 ++ .../algorithm/query/metafunctions/any.html | 166 ++ .../algorithm/query/metafunctions/count.html | 161 ++ .../query/metafunctions/count_if.html | 161 ++ .../algorithm/query/metafunctions/find.html | 163 ++ .../query/metafunctions/find_if.html | 164 ++ .../algorithm/query/metafunctions/none.html | 166 ++ doc/html/fusion/algorithm/transformation.html | 71 + .../algorithm/transformation/functions.html | 64 + .../transformation/functions/clear.html | 145 + .../transformation/functions/erase.html | 213 ++ .../transformation/functions/erase_key.html | 172 ++ .../transformation/functions/filter.html | 169 ++ .../transformation/functions/filter_if.html | 172 ++ .../transformation/functions/insert.html | 190 ++ .../functions/insert_range.html | 193 ++ .../transformation/functions/join.html | 171 ++ .../transformation/functions/pop_back.html | 147 + .../transformation/functions/pop_front.html | 147 + .../transformation/functions/push_back.html | 168 ++ .../transformation/functions/push_front.html | 169 ++ .../transformation/functions/remove.html | 169 ++ .../transformation/functions/remove_if.html | 171 ++ .../transformation/functions/replace.html | 190 ++ .../transformation/functions/replace_if.html | 199 ++ .../transformation/functions/reverse.html | 146 + .../transformation/functions/transform.html | 297 ++ .../transformation/functions/zip.html | 158 ++ .../transformation/metafunctions.html | 64 + .../transformation/metafunctions/clear.html | 139 + .../transformation/metafunctions/erase.html | 196 ++ .../metafunctions/erase_key.html | 163 ++ .../transformation/metafunctions/filter.html | 165 ++ .../metafunctions/filter_if.html | 166 ++ .../transformation/metafunctions/insert.html | 184 ++ .../metafunctions/insert_range.html | 186 ++ .../transformation/metafunctions/join.html | 98 + .../metafunctions/pop_back.html | 143 + .../metafunctions/pop_front.html | 138 + .../metafunctions/push_back.html | 159 ++ .../metafunctions/push_front.html | 159 ++ .../transformation/metafunctions/remove.html | 165 ++ .../metafunctions/remove_if.html | 166 ++ .../transformation/metafunctions/replace.html | 162 ++ .../metafunctions/replace_if.html | 183 ++ .../transformation/metafunctions/reverse.html | 142 + .../metafunctions/transform.html | 297 ++ .../transformation/metafunctions/zip.html | 105 + doc/html/fusion/change_log.html | 59 + doc/html/fusion/container.html | 74 + doc/html/fusion/container/cons.html | 324 +++ doc/html/fusion/container/conversion.html | 58 + .../container/conversion/functions.html | 49 + .../conversion/functions/as_list.html | 138 + .../conversion/functions/as_map.html | 145 + .../conversion/functions/as_set.html | 142 + .../conversion/functions/as_vector.html | 138 + .../container/conversion/metafunctions.html | 49 + .../conversion/metafunctions/as_list.html | 134 + .../conversion/metafunctions/as_map.html | 141 + .../conversion/metafunctions/as_set.html | 138 + .../conversion/metafunctions/as_vector.html | 134 + doc/html/fusion/container/generation.html | 58 + .../container/generation/functions.html | 54 + .../generation/functions/list_tie.html | 149 + .../generation/functions/make_cons.html | 168 ++ .../generation/functions/make_list.html | 155 + .../generation/functions/make_map.html | 196 ++ .../generation/functions/make_set.html | 167 ++ .../generation/functions/make_vector.html | 155 + .../generation/functions/map_tie.html | 175 ++ .../container/generation/functions/tiers.html | 105 + .../generation/functions/vector_tie.html | 149 + .../container/generation/metafunctions.html | 53 + .../generation/metafunctions/list_tie.html | 146 + .../generation/metafunctions/make_cons.html | 155 + .../generation/metafunctions/make_list.html | 147 + .../generation/metafunctions/make_map.html | 190 ++ .../generation/metafunctions/make_set.html | 159 ++ .../generation/metafunctions/make_vector.html | 147 + .../generation/metafunctions/map_tie.html | 171 ++ .../generation/metafunctions/vector_tie.html | 146 + doc/html/fusion/container/list.html | 291 ++ doc/html/fusion/container/map.html | 280 ++ doc/html/fusion/container/set.html | 273 ++ doc/html/fusion/container/vector.html | 307 ++ doc/html/fusion/extension.html | 53 + doc/html/fusion/extension/ext_full.html | 545 ++++ .../fusion/extension/iterator_facade.html | 398 +++ doc/html/fusion/extension/macros.html | 47 + .../fusion/extension/macros/adapt_assoc.html | 127 + .../fusion/extension/macros/adapt_struct.html | 113 + .../fusion/extension/sequence_facade.html | 276 ++ doc/html/fusion/functional.html | 165 ++ doc/html/fusion/functional/adapters.html | 56 + .../fusion/functional/adapters/fused.html | 249 ++ .../adapters/fused_function_object.html | 272 ++ .../functional/adapters/fused_procedure.html | 269 ++ .../functional/adapters/unfused_generic.html | 298 ++ .../adapters/unfused_lvalue_args.html | 266 ++ .../adapters/unfused_rvalue_args.html | 266 ++ .../functional/adapters/unfused_typed.html | 347 +++ doc/html/fusion/functional/concepts.html | 52 + .../fusion/functional/concepts/callable.html | 84 + .../functional/concepts/def_callable.html | 166 ++ doc/html/fusion/functional/concepts/poly.html | 178 ++ .../functional/concepts/reg_callable.html | 159 ++ doc/html/fusion/functional/generation.html | 47 + .../functional/generation/functions.html | 58 + .../generation/functions/mk_fused.html | 163 ++ .../generation/functions/mk_fused_fobj.html | 179 ++ .../generation/functions/mk_fused_proc.html | 159 ++ .../functions/mk_unfused_genrc.html | 186 ++ .../functions/mk_unfused_lvargs.html | 177 ++ .../functions/mk_unfused_rvargs.html | 175 ++ .../functional/generation/metafunctions.html | 59 + .../generation/metafunctions/mk_fused.html | 84 + .../metafunctions/mk_fused_fobj.html | 85 + .../metafunctions/mk_fused_proc.html | 85 + .../metafunctions/mk_unfused_genrc.html | 85 + .../metafunctions/mk_unfused_lvargs.html | 85 + .../metafunctions/mk_unfused_rvargs.html | 84 + doc/html/fusion/functional/invocation.html | 48 + .../functional/invocation/functions.html | 50 + .../invocation/functions/invoke.html | 192 ++ .../invocation/functions/invoke_fobj.html | 209 ++ .../invocation/functions/invoke_proc.html | 201 ++ .../functional/invocation/metafunctions.html | 51 + .../invocation/metafunctions/invoke.html | 77 + .../invocation/metafunctions/invoke_fobj.html | 82 + .../invocation/metafunctions/invoke_proc.html | 82 + doc/html/fusion/introduction.html | 145 + doc/html/fusion/iterator.html | 94 + doc/html/fusion/iterator/concepts.html | 65 + .../concepts/bidirectional_iterator.html | 323 +++ .../iterator/concepts/forward_iterator.html | 580 ++++ .../concepts/random_access_iterator.html | 301 ++ doc/html/fusion/iterator/functions.html | 57 + .../fusion/iterator/functions/advance.html | 161 ++ .../fusion/iterator/functions/advance_c.html | 160 ++ doc/html/fusion/iterator/functions/deref.html | 137 + .../fusion/iterator/functions/distance.html | 135 + doc/html/fusion/iterator/functions/next.html | 137 + doc/html/fusion/iterator/functions/prior.html | 136 + doc/html/fusion/iterator/metafunctions.html | 54 + .../iterator/metafunctions/advance.html | 165 ++ .../iterator/metafunctions/advance_c.html | 164 ++ .../fusion/iterator/metafunctions/deref.html | 143 + .../iterator/metafunctions/distance.html | 143 + .../iterator/metafunctions/equal_to.html | 141 + .../fusion/iterator/metafunctions/next.html | 138 + .../fusion/iterator/metafunctions/prior.html | 141 + .../iterator/metafunctions/value_of.html | 141 + doc/html/fusion/iterator/operator.html | 56 + .../iterator/operator/operator_equality.html | 129 + .../operator/operator_inequality.html | 125 + .../operator/operator_unary_star.html | 141 + doc/html/fusion/notes.html | 262 ++ doc/html/fusion/organization.html | 230 ++ doc/html/fusion/preface.html | 230 ++ doc/html/fusion/quick_start.html | 267 ++ doc/html/fusion/references.html | 72 + doc/html/fusion/sequence.html | 84 + doc/html/fusion/sequence/concepts.html | 85 + .../concepts/associative_sequence.html | 332 +++ .../concepts/bidirectional_sequence.html | 348 +++ .../sequence/concepts/forward_sequence.html | 475 ++++ .../concepts/random_access_sequence.html | 377 +++ doc/html/fusion/sequence/intrinsic.html | 73 + .../fusion/sequence/intrinsic/functions.html | 56 + .../sequence/intrinsic/functions/at.html | 174 ++ .../sequence/intrinsic/functions/at_c.html | 174 ++ .../sequence/intrinsic/functions/at_key.html | 169 ++ .../sequence/intrinsic/functions/back.html | 150 + .../sequence/intrinsic/functions/begin.html | 156 + .../sequence/intrinsic/functions/empty.html | 139 + .../sequence/intrinsic/functions/end.html | 156 + .../sequence/intrinsic/functions/front.html | 150 + .../sequence/intrinsic/functions/has_key.html | 159 ++ .../sequence/intrinsic/functions/size.html | 138 + .../sequence/intrinsic/functions/swap.html | 135 + .../sequence/intrinsic/metafunctions.html | 59 + .../sequence/intrinsic/metafunctions/at.html | 166 ++ .../intrinsic/metafunctions/at_c.html | 165 ++ .../intrinsic/metafunctions/at_key.html | 167 ++ .../intrinsic/metafunctions/back.html | 133 + .../intrinsic/metafunctions/begin.html | 135 + .../intrinsic/metafunctions/empty.html | 138 + .../sequence/intrinsic/metafunctions/end.html | 135 + .../intrinsic/metafunctions/front.html | 134 + .../intrinsic/metafunctions/has_key.html | 158 ++ .../intrinsic/metafunctions/size.html | 135 + .../intrinsic/metafunctions/swap.html | 124 + .../intrinsic/metafunctions/value_at.html | 155 + .../intrinsic/metafunctions/value_at_c.html | 154 + .../intrinsic/metafunctions/value_at_key.html | 155 + doc/html/fusion/sequence/operator.html | 52 + .../fusion/sequence/operator/comparison.html | 73 + .../sequence/operator/comparison/equal.html | 159 ++ .../operator/comparison/greater_than.html | 153 + .../comparison/greater_than_equal.html | 152 + .../operator/comparison/less_than.html | 155 + .../operator/comparison/less_than_equal.html | 153 + .../operator/comparison/not_equal.html | 155 + doc/html/fusion/sequence/operator/i_o.html | 141 + doc/html/fusion/sequence/operator/i_o/in.html | 156 + .../fusion/sequence/operator/i_o/out.html | 155 + doc/html/fusion/support.html | 55 + doc/html/fusion/support/category_of.html | 197 ++ doc/html/fusion/support/deduce.html | 104 + doc/html/fusion/support/deduce_sequence.html | 106 + doc/html/fusion/support/is_sequence.html | 151 + doc/html/fusion/support/is_view.html | 155 + doc/html/fusion/support/pair.html | 342 +++ doc/html/fusion/support/tag_of.html | 151 + doc/html/fusion/tuple.html | 69 + .../fusion/tuple/class_template_tuple.html | 80 + .../class_template_tuple/construction.html | 134 + .../class_template_tuple/element_access.html | 99 + .../relational_operators.html | 211 ++ .../tuple_creation_functions.html | 84 + .../tuple_helper_classes.html | 91 + doc/html/fusion/tuple/pairs.html | 112 + doc/html/fusion/view.html | 69 + doc/html/fusion/view/filter_view.html | 246 ++ doc/html/fusion/view/iterator_range.html | 261 ++ doc/html/fusion/view/joint_view.html | 247 ++ doc/html/fusion/view/reverse_view.html | 219 ++ doc/html/fusion/view/single_view.html | 211 ++ doc/html/fusion/view/transform_view.html | 382 +++ doc/html/fusion/view/zip_view.html | 233 ++ 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 | 253 ++ doc/introduction.qbk | 88 + doc/iterator.qbk | 846 ++++++ doc/notes.qbk | 153 + doc/organization.qbk | 87 + doc/preface.qbk | 75 + doc/quick_start.qbk | 168 ++ doc/references.qbk | 26 + doc/sequence.qbk | 1825 ++++++++++++ doc/support.qbk | 441 +++ doc/tuple.qbk | 271 ++ doc/view.qbk | 476 ++++ example/cookbook/do_the_bind.cpp | 237 ++ example/cookbook/fill_em_up.cpp | 105 + example/extension/Jamfile | 20 + example/extension/detail/advance_impl.hpp | 47 + example/extension/detail/at_impl.hpp | 67 + example/extension/detail/at_key_impl.hpp | 72 + example/extension/detail/begin_impl.hpp | 43 + example/extension/detail/category_of_impl.hpp | 34 + example/extension/detail/deref_impl.hpp | 67 + example/extension/detail/distance_impl.hpp | 44 + example/extension/detail/end_impl.hpp | 43 + example/extension/detail/equal_to_impl.hpp | 38 + example/extension/detail/has_key_impl.hpp | 45 + example/extension/detail/is_sequence_impl.hpp | 34 + example/extension/detail/is_view_impl.hpp | 32 + example/extension/detail/next_impl.hpp | 46 + example/extension/detail/prior_impl.hpp | 46 + example/extension/detail/size_impl.hpp | 36 + example/extension/detail/value_at_impl.hpp | 44 + .../extension/detail/value_at_key_impl.hpp | 50 + example/extension/detail/value_of_impl.hpp | 49 + example/extension/example_struct.hpp | 25 + example/extension/example_struct_iterator.hpp | 64 + example/extension/example_struct_type.hpp | 27 + example/extension/tag_of.hpp | 30 + example/extension/test_example.cpp | 62 + example/extension/triple.cpp | 319 +++ example/performance/Jamfile | 20 + example/performance/accumulate.cpp | 357 +++ example/performance/functional.cpp | 305 ++ example/performance/inner_product.cpp | 184 ++ example/performance/inner_product2.cpp | 206 ++ example/performance/measure.hpp | 85 + example/performance/sequence_efficiency.cpp | 248 ++ example/performance/timings.txt | 57 + example/performance/zip_efficiency.cpp | 155 + index.html | 15 + test/Jamfile | 147 + test/algorithm/all.cpp | 58 + test/algorithm/any.cpp | 57 + test/algorithm/clear.cpp | 45 + test/algorithm/count.cpp | 41 + test/algorithm/count_if.cpp | 38 + test/algorithm/erase.cpp | 63 + test/algorithm/erase_key.cpp | 74 + test/algorithm/ext_/find_if_s.cpp | 109 + test/algorithm/ext_/for_each_s.cpp | 82 + test/algorithm/filter.cpp | 43 + test/algorithm/filter_if.cpp | 77 + test/algorithm/find.cpp | 79 + test/algorithm/find_if.cpp | 69 + test/algorithm/fold.cpp | 222 ++ test/algorithm/for_each.cpp | 61 + test/algorithm/insert.cpp | 67 + test/algorithm/insert_range.cpp | 71 + test/algorithm/join.cpp | 28 + test/algorithm/none.cpp | 58 + test/algorithm/pop_back.cpp | 46 + test/algorithm/pop_front.cpp | 46 + test/algorithm/push_back.cpp | 72 + test/algorithm/push_front.cpp | 55 + test/algorithm/remove.cpp | 80 + test/algorithm/remove_if.cpp | 78 + test/algorithm/replace.cpp | 49 + test/algorithm/replace_if.cpp | 52 + test/algorithm/reverse.cpp | 49 + test/algorithm/transform.cpp | 157 + test/algorithm/zip.cpp | 30 + test/algorithm/zip2.cpp | 30 + test/algorithm/zip_ignore.cpp | 28 + test/functional/fused.cpp | 97 + test/functional/fused_function_object.cpp | 83 + test/functional/fused_procedure.cpp | 82 + test/functional/invoke.cpp | 394 +++ test/functional/invoke_function_object.cpp | 234 ++ test/functional/invoke_procedure.cpp | 284 ++ test/functional/make_fused.cpp | 85 + .../functional/make_fused_function_object.cpp | 95 + test/functional/make_fused_procedure.cpp | 91 + test/functional/make_unfused_generic.cpp | 124 + test/functional/make_unfused_lvalue_args.cpp | 126 + test/functional/make_unfused_rvalue_args.cpp | 110 + test/functional/unfused_generic.cpp | 126 + test/functional/unfused_lvalue_args.cpp | 119 + test/functional/unfused_rvalue_args.cpp | 102 + test/functional/unfused_typed.cpp | 166 ++ test/sequence/adapt_assoc_struct.cpp | 131 + test/sequence/adapt_struct.cpp | 106 + test/sequence/array.cpp | 41 + test/sequence/as_list.cpp | 53 + test/sequence/as_map.cpp | 61 + test/sequence/as_set.cpp | 64 + test/sequence/as_vector.cpp | 54 + test/sequence/back_extended_deque.cpp | 75 + test/sequence/boost_tuple.cpp | 90 + test/sequence/comparison.hpp | 57 + test/sequence/cons.cpp | 87 + test/sequence/construction.hpp | 117 + test/sequence/copy.hpp | 98 + test/sequence/deduce_sequence.cpp | 80 + test/sequence/deque_comparison.cpp | 20 + test/sequence/deque_construction.cpp | 19 + test/sequence/deque_copy.cpp | 22 + test/sequence/deque_iterator.cpp | 19 + test/sequence/deque_make.cpp | 20 + test/sequence/deque_misc.cpp | 22 + test/sequence/deque_mutate.cpp | 20 + test/sequence/deque_tie.cpp | 23 + test/sequence/deque_value_at.cpp | 20 + test/sequence/ext_/iterator_range_s.cpp | 146 + test/sequence/filter_view.cpp | 120 + test/sequence/front_extended_deque.cpp | 75 + test/sequence/io.cpp | 116 + test/sequence/iterator.hpp | 197 ++ test/sequence/iterator_range.cpp | 81 + test/sequence/joint_view.cpp | 144 + test/sequence/list_comparison.cpp | 19 + test/sequence/list_construction.cpp | 18 + test/sequence/list_copy.cpp | 21 + test/sequence/list_iterator.cpp | 22 + test/sequence/list_make.cpp | 20 + test/sequence/list_misc.cpp | 21 + test/sequence/list_mutate.cpp | 19 + test/sequence/list_tie.cpp | 22 + test/sequence/list_value_at.cpp | 19 + test/sequence/make.hpp | 88 + test/sequence/make_list.cpp | 20 + test/sequence/make_vector.cpp | 20 + test/sequence/map.cpp | 72 + test/sequence/map_tie.cpp | 35 + test/sequence/misc.hpp | 189 ++ test/sequence/mutate.hpp | 52 + test/sequence/repetitive_view.cpp | 53 + test/sequence/reverse_view.cpp | 64 + test/sequence/set.cpp | 67 + test/sequence/single_view.cpp | 57 + test/sequence/std_pair.cpp | 91 + test/sequence/swap.cpp | 35 + test/sequence/tie.hpp | 85 + test/sequence/transform_view.cpp | 115 + test/sequence/tuple_comparison.cpp | 20 + test/sequence/tuple_construction.cpp | 20 + test/sequence/tuple_copy.cpp | 22 + test/sequence/tuple_element.cpp | 21 + test/sequence/tuple_make.cpp | 21 + test/sequence/tuple_misc.cpp | 23 + test/sequence/tuple_mutate.cpp | 20 + test/sequence/tuple_tie.cpp | 22 + test/sequence/value_at.hpp | 87 + test/sequence/variant.cpp | 56 + test/sequence/vector_comparison.cpp | 19 + test/sequence/vector_construction.cpp | 18 + test/sequence/vector_copy.cpp | 21 + test/sequence/vector_iterator.cpp | 22 + test/sequence/vector_make.cpp | 20 + test/sequence/vector_misc.cpp | 21 + test/sequence/vector_mutate.cpp | 19 + test/sequence/vector_n.cpp | 232 ++ test/sequence/vector_tie.cpp | 22 + test/sequence/vector_value_at.cpp | 19 + test/sequence/zip_view.cpp | 87 + test/sequence/zip_view2.cpp | 64 + test/sequence/zip_view_ignore.cpp | 58 + todo.txt | 173 ++ 455 files changed, 64511 insertions(+) create mode 100644 doc/Jamfile create mode 100644 doc/acknowledgements.qbk create mode 100644 doc/adapted.qbk create mode 100644 doc/algorithm.qbk create mode 100644 doc/changelog.qbk create mode 100644 doc/container.qbk create mode 100644 doc/extension.qbk create mode 100644 doc/functional.qbk create mode 100644 doc/fusion.qbk create mode 100644 doc/html/fusion/acknowledgements.html create mode 100644 doc/html/fusion/adapted.html create mode 100644 doc/html/fusion/adapted/boost__array.html create mode 100644 doc/html/fusion/adapted/boost__tuple.html create mode 100644 doc/html/fusion/adapted/boost__variant.html create mode 100644 doc/html/fusion/adapted/mpl_sequence.html create mode 100644 doc/html/fusion/adapted/std__pair.html create mode 100644 doc/html/fusion/algorithm.html create mode 100644 doc/html/fusion/algorithm/iteration.html create mode 100644 doc/html/fusion/algorithm/iteration/functions.html create mode 100644 doc/html/fusion/algorithm/iteration/functions/accumulate.html create mode 100644 doc/html/fusion/algorithm/iteration/functions/fold.html create mode 100644 doc/html/fusion/algorithm/iteration/functions/for_each.html create mode 100644 doc/html/fusion/algorithm/iteration/metafunctions.html create mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html create mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/fold.html create mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/for_each.html create mode 100644 doc/html/fusion/algorithm/query.html create mode 100644 doc/html/fusion/algorithm/query/functions.html create mode 100644 doc/html/fusion/algorithm/query/functions/all.html create mode 100644 doc/html/fusion/algorithm/query/functions/any.html create mode 100644 doc/html/fusion/algorithm/query/functions/count.html create mode 100644 doc/html/fusion/algorithm/query/functions/count_if.html create mode 100644 doc/html/fusion/algorithm/query/functions/find.html create mode 100644 doc/html/fusion/algorithm/query/functions/find_if.html create mode 100644 doc/html/fusion/algorithm/query/functions/none.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions/all.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions/any.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions/count.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions/count_if.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions/find.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions/find_if.html create mode 100644 doc/html/fusion/algorithm/query/metafunctions/none.html create mode 100644 doc/html/fusion/algorithm/transformation.html create mode 100644 doc/html/fusion/algorithm/transformation/functions.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/clear.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/erase.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/erase_key.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/filter.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/filter_if.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/insert.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/insert_range.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/join.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/pop_back.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/pop_front.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/push_back.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/push_front.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/remove.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/remove_if.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/replace.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/replace_if.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/reverse.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/transform.html create mode 100644 doc/html/fusion/algorithm/transformation/functions/zip.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/clear.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/erase.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/filter.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/insert.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/join.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/push_back.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/push_front.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/remove.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/replace.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/reverse.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/transform.html create mode 100644 doc/html/fusion/algorithm/transformation/metafunctions/zip.html create mode 100644 doc/html/fusion/change_log.html create mode 100644 doc/html/fusion/container.html create mode 100644 doc/html/fusion/container/cons.html create mode 100644 doc/html/fusion/container/conversion.html create mode 100644 doc/html/fusion/container/conversion/functions.html create mode 100644 doc/html/fusion/container/conversion/functions/as_list.html create mode 100644 doc/html/fusion/container/conversion/functions/as_map.html create mode 100644 doc/html/fusion/container/conversion/functions/as_set.html create mode 100644 doc/html/fusion/container/conversion/functions/as_vector.html create mode 100644 doc/html/fusion/container/conversion/metafunctions.html create mode 100644 doc/html/fusion/container/conversion/metafunctions/as_list.html create mode 100644 doc/html/fusion/container/conversion/metafunctions/as_map.html create mode 100644 doc/html/fusion/container/conversion/metafunctions/as_set.html create mode 100644 doc/html/fusion/container/conversion/metafunctions/as_vector.html create mode 100644 doc/html/fusion/container/generation.html create mode 100644 doc/html/fusion/container/generation/functions.html create mode 100644 doc/html/fusion/container/generation/functions/list_tie.html create mode 100644 doc/html/fusion/container/generation/functions/make_cons.html create mode 100644 doc/html/fusion/container/generation/functions/make_list.html create mode 100644 doc/html/fusion/container/generation/functions/make_map.html create mode 100644 doc/html/fusion/container/generation/functions/make_set.html create mode 100644 doc/html/fusion/container/generation/functions/make_vector.html create mode 100644 doc/html/fusion/container/generation/functions/map_tie.html create mode 100644 doc/html/fusion/container/generation/functions/tiers.html create mode 100644 doc/html/fusion/container/generation/functions/vector_tie.html create mode 100644 doc/html/fusion/container/generation/metafunctions.html create mode 100644 doc/html/fusion/container/generation/metafunctions/list_tie.html create mode 100644 doc/html/fusion/container/generation/metafunctions/make_cons.html create mode 100644 doc/html/fusion/container/generation/metafunctions/make_list.html create mode 100644 doc/html/fusion/container/generation/metafunctions/make_map.html create mode 100644 doc/html/fusion/container/generation/metafunctions/make_set.html create mode 100644 doc/html/fusion/container/generation/metafunctions/make_vector.html create mode 100644 doc/html/fusion/container/generation/metafunctions/map_tie.html create mode 100644 doc/html/fusion/container/generation/metafunctions/vector_tie.html create mode 100644 doc/html/fusion/container/list.html create mode 100644 doc/html/fusion/container/map.html create mode 100644 doc/html/fusion/container/set.html create mode 100644 doc/html/fusion/container/vector.html create mode 100644 doc/html/fusion/extension.html create mode 100644 doc/html/fusion/extension/ext_full.html create mode 100644 doc/html/fusion/extension/iterator_facade.html create mode 100644 doc/html/fusion/extension/macros.html create mode 100644 doc/html/fusion/extension/macros/adapt_assoc.html create mode 100644 doc/html/fusion/extension/macros/adapt_struct.html create mode 100644 doc/html/fusion/extension/sequence_facade.html create mode 100644 doc/html/fusion/functional.html 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/concepts/reg_callable.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/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.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.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_fobj.html create mode 100644 doc/html/fusion/functional/invocation/functions/invoke_proc.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_fobj.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html create mode 100644 doc/html/fusion/introduction.html create mode 100644 doc/html/fusion/iterator.html create mode 100644 doc/html/fusion/iterator/concepts.html create mode 100644 doc/html/fusion/iterator/concepts/bidirectional_iterator.html create mode 100644 doc/html/fusion/iterator/concepts/forward_iterator.html create mode 100644 doc/html/fusion/iterator/concepts/random_access_iterator.html create mode 100644 doc/html/fusion/iterator/functions.html create mode 100644 doc/html/fusion/iterator/functions/advance.html create mode 100644 doc/html/fusion/iterator/functions/advance_c.html create mode 100644 doc/html/fusion/iterator/functions/deref.html create mode 100644 doc/html/fusion/iterator/functions/distance.html create mode 100644 doc/html/fusion/iterator/functions/next.html create mode 100644 doc/html/fusion/iterator/functions/prior.html create mode 100644 doc/html/fusion/iterator/metafunctions.html create mode 100644 doc/html/fusion/iterator/metafunctions/advance.html create mode 100644 doc/html/fusion/iterator/metafunctions/advance_c.html create mode 100644 doc/html/fusion/iterator/metafunctions/deref.html create mode 100644 doc/html/fusion/iterator/metafunctions/distance.html create mode 100644 doc/html/fusion/iterator/metafunctions/equal_to.html create mode 100644 doc/html/fusion/iterator/metafunctions/next.html create mode 100644 doc/html/fusion/iterator/metafunctions/prior.html create mode 100644 doc/html/fusion/iterator/metafunctions/value_of.html create mode 100644 doc/html/fusion/iterator/operator.html create mode 100644 doc/html/fusion/iterator/operator/operator_equality.html create mode 100644 doc/html/fusion/iterator/operator/operator_inequality.html create mode 100644 doc/html/fusion/iterator/operator/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/sequence.html create mode 100644 doc/html/fusion/sequence/concepts.html create mode 100644 doc/html/fusion/sequence/concepts/associative_sequence.html create mode 100644 doc/html/fusion/sequence/concepts/bidirectional_sequence.html create mode 100644 doc/html/fusion/sequence/concepts/forward_sequence.html create mode 100644 doc/html/fusion/sequence/concepts/random_access_sequence.html create mode 100644 doc/html/fusion/sequence/intrinsic.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/at.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/at_c.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/at_key.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/back.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/begin.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/empty.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/end.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/front.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/has_key.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/size.html create mode 100644 doc/html/fusion/sequence/intrinsic/functions/swap.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/at.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/back.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/begin.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/empty.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/end.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/front.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/size.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/swap.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html create mode 100644 doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html create mode 100644 doc/html/fusion/sequence/operator.html create mode 100644 doc/html/fusion/sequence/operator/comparison.html create mode 100644 doc/html/fusion/sequence/operator/comparison/equal.html create mode 100644 doc/html/fusion/sequence/operator/comparison/greater_than.html create mode 100644 doc/html/fusion/sequence/operator/comparison/greater_than_equal.html create mode 100644 doc/html/fusion/sequence/operator/comparison/less_than.html create mode 100644 doc/html/fusion/sequence/operator/comparison/less_than_equal.html create mode 100644 doc/html/fusion/sequence/operator/comparison/not_equal.html create mode 100644 doc/html/fusion/sequence/operator/i_o.html create mode 100644 doc/html/fusion/sequence/operator/i_o/in.html create mode 100644 doc/html/fusion/sequence/operator/i_o/out.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/deduce.html create mode 100644 doc/html/fusion/support/deduce_sequence.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/tuple.html create mode 100644 doc/html/fusion/tuple/class_template_tuple.html create mode 100644 doc/html/fusion/tuple/class_template_tuple/construction.html create mode 100644 doc/html/fusion/tuple/class_template_tuple/element_access.html create mode 100644 doc/html/fusion/tuple/class_template_tuple/relational_operators.html create mode 100644 doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html create mode 100644 doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html create mode 100644 doc/html/fusion/tuple/pairs.html create mode 100644 doc/html/fusion/view.html create mode 100644 doc/html/fusion/view/filter_view.html create mode 100644 doc/html/fusion/view/iterator_range.html create mode 100644 doc/html/fusion/view/joint_view.html create mode 100644 doc/html/fusion/view/reverse_view.html create mode 100644 doc/html/fusion/view/single_view.html create mode 100644 doc/html/fusion/view/transform_view.html create mode 100644 doc/html/fusion/view/zip_view.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/iterator.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/sequence.qbk create mode 100644 doc/support.qbk create mode 100644 doc/tuple.qbk create mode 100644 doc/view.qbk create mode 100644 example/cookbook/do_the_bind.cpp create mode 100644 example/cookbook/fill_em_up.cpp create mode 100644 example/extension/Jamfile 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_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 example/extension/triple.cpp create mode 100644 example/performance/Jamfile create mode 100644 example/performance/accumulate.cpp create mode 100644 example/performance/functional.cpp create mode 100644 example/performance/inner_product.cpp create mode 100644 example/performance/inner_product2.cpp create mode 100644 example/performance/measure.hpp create mode 100644 example/performance/sequence_efficiency.cpp create mode 100644 example/performance/timings.txt create mode 100644 example/performance/zip_efficiency.cpp create mode 100644 index.html create mode 100644 test/Jamfile 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 100755 test/algorithm/ext_/find_if_s.cpp create mode 100755 test/algorithm/ext_/for_each_s.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/algorithm/zip2.cpp create mode 100644 test/algorithm/zip_ignore.cpp 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 create mode 100644 test/sequence/adapt_assoc_struct.cpp create mode 100644 test/sequence/adapt_struct.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/back_extended_deque.cpp create mode 100644 test/sequence/boost_tuple.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/deduce_sequence.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 100755 test/sequence/ext_/iterator_range_s.cpp create mode 100644 test/sequence/filter_view.cpp create mode 100644 test/sequence/front_extended_deque.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/map_tie.cpp create mode 100644 test/sequence/misc.hpp create mode 100644 test/sequence/mutate.hpp create mode 100644 test/sequence/repetitive_view.cpp 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/swap.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/value_at.hpp create mode 100644 test/sequence/variant.cpp 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 test/sequence/zip_view_ignore.cpp create mode 100644 todo.txt diff --git a/doc/Jamfile b/doc/Jamfile new file mode 100644 index 00000000..dc8fefe7 --- /dev/null +++ b/doc/Jamfile @@ -0,0 +1,25 @@ +#============================================================================== +# Copyright (c) 2003-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) +#============================================================================== +project boost/libs/fusion/doc ; +import boostbook : boostbook ; +using quickbook ; + +boostbook quickbook + : + fusion.qbk + : + boost.root=../../../.. + boost.libraries=../../../libraries.htm + html.stylesheet=../../../../doc/html/boostbook.css + chunk.section.depth=4 + chunk.first.sections=1 + toc.section.depth=3 + toc.max.depth=3 + generate.section.toc.level=4 + ; + diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk new file mode 100644 index 00000000..fd66c3c5 --- /dev/null +++ b/doc/acknowledgements.qbk @@ -0,0 +1,23 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Acknowledgements] + +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/adapted.qbk b/doc/adapted.qbk new file mode 100644 index 00000000..3645fcc9 --- /dev/null +++ b/doc/adapted.qbk @@ -0,0 +1,168 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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 + #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 + #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 + #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 + #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] + +[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 + #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 + #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] diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk new file mode 100644 index 00000000..cfaf92b7 --- /dev/null +++ b/doc/algorithm.qbk @@ -0,0 +1,2523 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Algorithm] + +[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 + #include + +[section Iteration] + +The iteration algorithms provide the fundamental algorithms for traversing +a sequence repeatedly applying an operation to its elements. + +[heading Header] + + #include + #include + +[section Functions] + +[section fold] + +[heading Description] +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< + 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,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`][`__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] + 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 + #include + +[heading Example] + struct make_string + { + typedef std::string result_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] +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< + 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`][`__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] + 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 + #include + +[heading Example] + struct make_string + { + typedef std::string result_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 __reg_callable_obj__][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 + #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`] [`__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] + __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 function object or function pointer of type `F`. + +[heading Complexity] +Linear, exactly `__result_of_size__::value` applications of `F`. + +[heading Header] + + #include + #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`] [`__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] + __result_of_accumulate__::type + +[*Return type]: Any type + +[*Semantics]: Returns the result of applying `accumulate` to a sequence of type `Sequence`, with an initial state of +type `State` and binary function object or function pointer of type `F`. + +[heading Complexity] +Linear, exactly `__result_of_size__::value` applications of `F`. + +[heading Header] + + #include + #include + +[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 + #include + +[endsect] + +[endsect] + +[endsect] + +[section Query] +The query algorithms provide support for searching and analyzing sequences. + +[heading Header] + + #include + #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 + #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 + #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 + #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 T, + typename Sequence + > + __unspecified__ find(Sequence const& seq); + + template< + typename T, + typename Sequence + > + __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 + #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 F, + typename Sequence + > + __unspecified__ find_if(Sequence const& seq); + + template< + typename F, + typename Sequence + > + __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. + + +/algorithm/query/find_if.hpp> + +[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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 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< + 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`][`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] + __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 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 + #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] + +[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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #include + +[endsect] + +[section transform] + +[heading Description] +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< + 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`][`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] + __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 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 + #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] + +[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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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. + +/algorithm/transformation/pop_front.hpp> + +[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. + +/algorithm/transformation/push_back.hpp> + +[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. + +/algorithm/transformation/push_front.hpp> + +[endsect] + +[endsect] + +[endsect] + +[endsect] diff --git a/doc/changelog.qbk b/doc/changelog.qbk new file mode 100644 index 00000000..c7da9f07 --- /dev/null +++ b/doc/changelog.qbk @@ -0,0 +1,16 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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. +* Feb 15, 2007: Added functional module. + +[endsect] diff --git a/doc/container.qbk b/doc/container.qbk new file mode 100644 index 00000000..62baca68 --- /dev/null +++ b/doc/container.qbk @@ -0,0 +1,1655 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Container] + +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 + #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 + #include + #include + + // numbered forms + #include + #include + #include + #include + #include + #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 + #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 __mpl_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_c__<0>(l) << std::endl; + std::cout << __at_c__<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 + #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 __mpl_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_c__<0>(l) << std::endl; + std::cout << __at_c__<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 + #include + #include + #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 + #include + #include + #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_key__(m) << std::endl; + std::cout << __at_key__(m) << std::endl; + +[endsect] + +[section Generation] + +These are the functions that you can use to generate various forms of +__containers__ from elemental values. + +[heading Header] + + #include + #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 + #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 + #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 + #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 + #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 + #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__ +* __map_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 + #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 + #include + +[heading Example] + + int i = 123; + double d = 123.456; + vector_tie(i, d) + +[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 + #include + +[heading Example] + + struct int_key; + struct double_key; + ... + int i = 123; + double d = 123.456; + map_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 + #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 + #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 + #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 + #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 + #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 + #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 + #include + +[heading Example] + + result_of::vector_tie::type + +[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 + #include + +[heading Example] + + struct int_key; + struct double_key; + ... + result_of::map_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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #include + +[heading Example] + + result_of::as_map<__vector__< + __fusion_pair__ + , __fusion_pair__ > >::type + +[endsect] + +[endsect] + +[endsect] + +[endsect] diff --git a/doc/extension.qbk b/doc/extension.qbk new file mode 100644 index 00000000..c10dc273 --- /dev/null +++ b/doc/extension.qbk @@ -0,0 +1,598 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Extension] + +[section:ext_full The Full Extension Mechanism] + +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 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 +`traits::tag_of` for our sequence type. + + #include + #include + + namespace boost { namespace fusion { namespace traits { + template<> + struct tag_of + { + 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 groups of related types. This feature is not necessary +for our sequence, but for an example see the code in: + + #include + #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 + : boost::fusion::iterator_base > + { + BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); + typedef Struct struct_type; + typedef boost::mpl::int_ index; + typedef boost::fusion::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`. + +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__ + : 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 +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::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::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__ + : extension::deref_impl::type>:: + template apply + {}; + } + + template + typename result_of::deref::type + __deref__(Iterator const& i) + { + typedef result_of::deref 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__. + +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::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::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] + +[section Sequence Facade] + +[heading Description] +The __sequence_facade__ template provides an intrusive mechanism for +producing a conforming Fusion iterator. + +[heading Synopsis] + template + struct sequence_facade; + +[heading Usage] +The user of __sequence_facade__ derives his sequence type from a specialization of __sequence_facade__ and passes the derived sequence type as the first template parameter. The second template parameter should be the traversal category of the sequence being implemented. The 3rd parameter should be set to `mpl::true_` if the sequence is a view. + +The user must the implement the key expressions required by their sequence type. + +[table Parameters +[[Name][Description]] +[[`sequence`, `Seq`][A type derived from __sequence_facade__]] +[[`N`][An __mpl_integral_constant__]] +] + +[table Key Expressions +[[Expression][Result]] +[[`sequence::template begin::type`][The type of an iterator to the beginning of a sequence of type `Seq`]] +[[`sequence::template begin::call(seq)`][An iterator to the beginning of sequence `seq`]] +[[`sequence::template end::type`][The type of an iterator to the end of a sequence of type `Seq`]] +[[`sequence::template end::call(seq)`][An iterator to the end of sequence `seq`]] +[[`sequence::template size::type`][The size of a sequence of type `Seq` as an __mpl_integral_constant__]] +[[`sequence::template size::call(seq)`][The size of sequence `seq`]] +[[`sequence::template at::type`][The type of element `N` in a sequence of type `Seq`]] +[[`sequence::template at::call(seq)`][Element `N` in sequence `seq`]] +[[`sequence::template value_at::type`][The type of the `N`th element in a sequence of type `Seq`]] +] + +[heading Include] + + #include + #include + +[heading Example] +A full worked example using __sequence_facade__ is provided in triple.cpp in the extension examples. + +[endsect] + +[section Iterator Facade] + +[heading Description] +The __iterator_facade__ template provides an intrusive mechanism for +producing a conforming Fusion iterator. + +[heading Synopsis] + + template + struct iterator_facade; + +[heading Usage] +The user of iterator_facade derives his iterator type from a specialization of iterator_facade and passes the derived iterator type as the first template parameter. The second template parameter should be the traversal category of the iterator being implemented. + +The user must the implement the key expressions required by their iterator type. + +[table Parameters +[[Name][Description]] +[[`iterator`, `It`, `It1`, `It2`][A type derived from __iterator_facade__]] +[[`N`][An __mpl_integral_constant__]] +] + +[table Key Expressions +[[Expression][Result][Default]] +[[`iterator::template value_of::type`][The element stored at iterator position `It`][None]] +[[`iterator::template deref::type`][The type returned when dereferencing an iterator of type `It`][None]] +[[`iterator::template deref::call(it)`][Dereferences iterator `it`][None]] +[[`iterator::template next::type`][The type of the next element from `It`][None]] +[[`iterator::template next::call(it)`][The next iterator after `it`][None]] +[[`iterator::template prior::type`][The type of the next element from `It`][None]] +[[`iterator::template prior::call(it)`][The next iterator after `it`][None]] +[[`iterator::template advance::type`][The type of an iterator advanced `N` elements from `It`][Implemented in terms of `next` and `prior`]] +[[`iterator::template advance::call(it)`][An iterator advanced `N` elements from `it`][Implemented in terms of `next` and `prior`]] +[[`iterator::template distance::type`][The distance between iterators of type `It1` and `It2` as an __mpl_integral_constant__][None]] +[[`iterator::template distance::call(it1, it2)`][The distance between iterator `it1` and `it2`][None]] +[[`iterator::template equal_to::type`][The distance between iterators of type `It1` and `It2`][`boost::same_type::type`]] +[[`iterator::template equal_to::call(it1, it2)`][The distance between iterators `it1` and `it2`][`boost::same_type::type()`]] +] + +[heading Header] + + #include + #include + +[heading Example] +A full worked example using __iterator_facade__ is provided in triple.cpp in the extension examples. + +[endsect] + +[section Macros] + +[section:adapt_struct BOOST_FUSION_ADAPT_STRUCT] + +[heading Description] +BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the +necessary boilerplate to make an arbitrary struct into a __random_access_sequence__. + +[heading Synopsis] + BOOST_FUSION_ADAPT_STRUCT( + struct_name + (member_type0, member_name0) + (member_type1, member_name1) + ... + ) + +[heading Semantics] + BOOST_FUSION_ADAPT_STRUCT( + struct_name, + (member_type0, member_name0) + (member_type1, member_name1) + ... + ) + +The above macro generates the necessary code to adapt `struct_name` +as a model of __random_access_sequence__. The sequence of `(member_typeN, member_nameN)` +pairs declare the type and names of each of the struct members that will be +part of the sequence. + +The macro should be used at global scope, and `struct_name` should be the fully +namespace qualified name of the struct to be converted. + +/adapted/struct/adapt_struct.hpp> + +[heading Example] + namespace demo + { + struct employee + { + std::string name; + int age; + }; + } + + // demo::employee is now a Fusion sequence + BOOST_FUSION_ADAPT_STRUCT( + demo::employee + (std::string, name) + (int, age)) + +[endsect] + +[section:adapt_assoc BOOST_FUSION_ADAPT_ASSOC_STRUCT] + +[heading Description] +BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all the +necessary boilerplate to make an arbitrary struct into a model of __random_access_sequence__ +and __associative_sequence__. + +[heading Synopsis] + BOOST_FUSION_ADAPT_ASSOC_STRUCT( + struct_name + (member_type0, member_name0, key_type0) + (member_type1, member_name1, key_type1) + ... + ) + +[heading Semantics] + BOOST_FUSION_ADAPT_ASSOC_STRUCT( + struct_name + (member_type0, member_name0, key_type0) + (member_type1, member_name1, key_type1) + ... + ) + +The above macro generates the necessary code to adapt `struct_name` +as a model of __random_access_sequence__ and __associative_sequence__. +The sequence of `(member_typeN, member_nameN, key_typeN)` +triples declare the type, name and key type of each of the struct members +that will be part of the sequence. + +The macro should be used at global scope, and `struct_name` should be the fully +namespace qualified name of the struct to be converted. + +/adapted/struct/adapt_assoc_struct.hpp> + +[heading Example] + namespace demo + { + struct employee + { + std::string name; + int age; + }; + } + + namespace keys + { + struct name; + struct age; + } + + // demo::employee is now a Fusion sequence + // It is also an associative sequence with + // keys keys::name and keys::age present. + BOOST_FUSION_ADAPT_ASSOC_STRUCT( + demo::employee + (std::string, name, keys::name) + (int, age, keys::age)) + + +[endsect] + +[endsect] + +[endsect] + diff --git a/doc/functional.qbk b/doc/functional.qbk new file mode 100644 index 00000000..6b83c554 --- /dev/null +++ b/doc/functional.qbk @@ -0,0 +1,1702 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Functional] + +Components to call functions and function objects and to make Fusion code +callable through a function object interface. + +/functional.hpp> + +[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 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`. +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, approximate 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] + +[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. + +[heading Models] +* function pointer types +* 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] + + +[section:reg_callable Regular Callable Object] + +[heading Description] + +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 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(a1, ...aN)`][Unspecified][Unspecified]] +] + +[heading Models] +* 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] + + +[section:def_callable Deferred Callable Object] + +[heading Description] + +__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 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`][Result of a call with `A1 ...AN`-typed arguments]] +] + +[heading Models] +* __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] + + +[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__ + +[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] + + +[endsect] + +[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] + +[section Invocation] + +[section Functions] + +[section invoke] + +[heading Description] + +Calls a __def_callable_obj__ with the arguments from a __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. + +/functional/invocation/invoke.hpp> + +[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_proc invoke_procedure] + +[heading Description] + +Calls a __callable_obj__ with the arguments from a __sequence__. The result +of the call is ignored. + +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. + +/functional/invocation/invoke_procedure.hpp> + +[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_fobj invoke_function_object] + +[heading Description] + +Calls a __poly_func_obj__ with the arguments from a __sequence__. + +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_function_object(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. + +/functional/invocation/invoke_function_object.hpp> + +[heading Example] + struct sub + { + template + struct result; + + template + struct result< Self(T,T) > + { typedef typename remove_reference::type 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__. + +[heading Synopsis] + namespace result_of + { + template< + typename Function, + class Sequence + > + struct invoke + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __invoke__ +* __fused__ + +[endsect] + +[section:invoke_proc invoke_procedure] + +[heading Description] +Returns the result type of __invoke_procedure__. + +[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_fobj invoke_function_object] + +[heading Description] +Returns the result type of __invoke_function_object__. + +[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 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 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). + +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__). + +/functional/adapter/fused.hpp> + +[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 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 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). + +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 this case +is not implemented). + +/functional/adapter/fused_procedure.hpp> + +[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 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). + +/functional/adapter/fused_function_object.hpp> + +[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; + + template + struct result< Self(T,T) > + { typedef typename remove_reference::type 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. + +[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__.] + +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). + +/functional/adapter/unfused_generic.hpp> + +[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; + + template + struct result< Self(Seq) > + : result_of::invoke< Function, typename result_of::push_front< + typename remove_reference::type, T>::type > + { }; + + template + typename result< void(Seq) >::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(), 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 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). + +/functional/adapter/unfused_lvalue_args.hpp> + +[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 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). + +/functional/adapter/unfused_rvalue_args.hpp> + +[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 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. 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). + +[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.] + +/functional/adapter/unfused_typed.hpp> + +[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) + { } + + typedef void result_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; + + template + struct result< Self(Seq) > + { + typedef typename remove_reference::type seq; + + typedef unfused_typed< fused_parallel_adder, + typename mpl::transform >::type > type; + }; + + template + typename result< void(Seq) >::type operator()(Seq const & tie) + { + return typename result< void(Seq) >::type( + fused_parallel_adder(tie) ); + } + }; + unfused_lvalue_args parallel_add; + + void try_it() + { + 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'); + } + +[heading See also] +* __unfused_generic__ +* __unfused_lvalue_args__ +* __unfused_rvalue_args__ +* __deduce__ +* __deduce_sequence__ + +[endsect] + +[endsect] [/ Adapters] + +[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] + +[section Generation] + +[section Functions] + +[section:mk_fused 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 + #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:mk_fused_proc 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 + #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:mk_fused_fobj 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 + #include + +[heading Example] + struct sub + { + template + struct result; + + template + struct result< Self(T,T) > + { typedef typename remove_reference::type 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:mk_unfused_genrc 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 + #include + +[heading Example] + struct bottles_song + { + typedef void result_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:mk_unfused_lvargs 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 + #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:mk_unfused_rvargs 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 + #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:mk_fused make_fused] + +[heading Description] +Returns the result type of __make_fused__. + +[heading Header] + + #include + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_fused + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_fused__ + +[endsect] + +[section:mk_fused_proc make_fused_procedure] + +[heading Description] +Returns the result type of __make_fused_procedure__. + +[heading Header] + + #include + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_fused_procedure + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_fused_procedure__ + +[endsect] + +[section:mk_fused_fobj make_fused_function_object] + +[heading Description] +Returns the result type of __make_fused_function_object__. + +[heading Header] + + #include + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_fused_function_object + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_fused_function_object__ + +[endsect] + +[section:mk_unfused_genrc make_unfused_generic] + +[heading Description] +Returns the result type of __make_unfused_generic__. + +[heading Header] + + #include + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_unfused_generic + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_unfused_generic__ + +[endsect] + +[section:mk_unfused_lvargs make_unfused_lvalue_args] + +[heading Description] +Returns the result type of __make_unfused_lvalue_args__. + +[heading Header] + + #include + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_unfused_lvalue_args + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_unfused_lvalue_args__ + +[endsect] + +[section:mk_unfused_rvargs make_unfused_rvalue_args] + +[heading Description] +Returns the result type of __make_unfused_rvalue_args__. + +[heading Header] + + #include + #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 new file mode 100644 index 00000000..69dd235e --- /dev/null +++ b/doc/fusion.qbk @@ -0,0 +1,321 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[library Fusion + [quickbook 1.3] + [version 2.0] + [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 + Distributed under the 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 __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]] +[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 __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/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`]] + +[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 __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 __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`]] + +[def __iterator__ [link fusion.iterator Iterator]] +[def __iterator_concepts__ [link fusion.iterator.concepts Iterator Concepts]] +[def __forward_iterator__ [link fusion.iterator.concepts.forward_iterator Forward Iterator]] +[def __bidirectional_iterator__ [link fusion.iterator.concepts.bidirectional_iterator Bidirectional Iterator]] +[def __random_access_iterator__ [link fusion.iterator.concepts.random_access_iterator Random Access Iterator]] + +[def __next__ [link fusion.iterator.functions.next `next`]] +[def __prior__ [link fusion.iterator.functions.prior `prior`]] +[def __advance__ [link fusion.iterator.functions.advance `advance`]] +[def __advance_c__ [link fusion.iterator.functions.advance_c `advance_c`]] +[def __distance__ [link fusion.iterator.functions.distance `distance`]] +[def __deref__ [link fusion.iterator.functions.deref `deref`]] + +[def __result_of_next__ [link fusion.iterator.metafunctions.next `result_of::next`]] +[def __result_of_prior__ [link fusion.iterator.metafunctions.prior `result_of::prior`]] +[def __result_of_equal_to__ [link fusion.iterator.metafunctions.equal_to `result_of::equal_to`]] +[def __result_of_advance__ [link fusion.iterator.metafunctions.advance `result_of::advance`]] +[def __result_of_advance_c__ [link fusion.iterator.metafunctions.advance_c `result_of::advance_c`]] +[def __result_of_distance__ [link fusion.iterator.metafunctions.distance `result_of::distance`]] +[def __result_of_deref__ [link fusion.iterator.metafunctions.deref `result_of::deref`]] +[def __result_of_value_of__ [link fusion.iterator.metafunctions.value_of `result_of::value_of`]] +[def __value_of__ [link fusion.iterator.metafunctions.value_of `value_of`]] + +[def __sequence__ [link fusion.sequence Sequence]] +[def __sequence_concepts__ [link fusion.sequence.concepts Sequence Concepts]] +[def __traversal_concept__ [link fusion.sequence.concepts.traversal Sequence Traversal Concept]] +[def __associativity_concept__ [link fusion.sequence.concepts.associativity Sequence Associativity Concept]] +[def __forward_sequence__ [link fusion.sequence.concepts.forward_sequence Forward Sequence]] +[def __bidirectional_sequence__ [link fusion.sequence.concepts.bidirectional_sequence Bidirectional Sequence]] +[def __random_access_sequence__ [link fusion.sequence.concepts.random_access_sequence Random Access Sequence]] +[def __associative_sequence__ [link fusion.sequence.concepts.associative_sequence Associative Sequence]] + +[def __containers__ [link fusion.container Container]] +[def __vector__ [link fusion.container.vector `vector`]] +[def __cons__ [link fusion.container.cons `cons`]] +[def __list__ [link fusion.container.list `list`]] +[def __set__ [link fusion.container.set `set`]] +[def __map__ [link fusion.container.map `map`]] + +[def __view__ [link fusion.view View]] +[def __views__ [link fusion.view Views]] +[def __single_view__ [link fusion.view.single_view `single_view`]] +[def __filter_view__ [link fusion.view.filter_view `filter_view`]] +[def __iterator_range__ [link fusion.view.iterator_range `iterator_range`]] +[def __joint_view__ [link fusion.view.joint_view `joint_view`]] +[def __transform_view__ [link fusion.view.transform_view `transform_view`]] +[def __reverse_view__ [link fusion.view.reverse_view `reverse_view`]] +[def __zip_view__ [link fusion.view.zip_view `zip_view`]] + +[def __std_pair__ [link fusion.adapted.std__pair `std::pair`]] +[def __boost_array__ [link fusion.adapted.boost__array `boost::array`]] +[def __mpl_sequence__ [link fusion.adapted.mpl_sequence mpl sequence]] + +[def __intrinsic__ [link fusion.sequence.intrinsic Intrinsic]] +[def __intrinsics__ [link fusion.sequence.intrinsic Intrinsics]] +[def __begin__ [link fusion.sequence.intrinsic.functions.begin `begin`]] +[def __result_of_begin__ [link fusion.sequence.intrinsic.metafunctions.begin `result_of::begin`]] +[def __end__ [link fusion.sequence.intrinsic.functions.end `end`]] +[def __result_of_end__ [link fusion.sequence.intrinsic.metafunctions.end `result_of::end`]] +[def __size__ [link fusion.sequence.intrinsic.functions.size `size`]] +[def __result_of_size__ [link fusion.sequence.intrinsic.metafunctions.size `result_of::size`]] +[def __empty__ [link fusion.sequence.intrinsic.functions.empty `empty`]] +[def __result_of_empty__ [link fusion.sequence.intrinsic.metafunctions.empty `result_of::empty`]] +[def __front__ [link fusion.sequence.intrinsic.functions.front `front`]] +[def __result_of_front__ [link fusion.sequence.intrinsic.metafunctions.front `result_of::front`]] +[def __back__ [link fusion.sequence.intrinsic.functions.back `back`]] +[def __result_of_back__ [link fusion.sequence.intrinsic.metafunctions.back `result_of::back`]] +[def __at__ [link fusion.sequence.intrinsic.functions.at `at`]] +[def __result_of_at__ [link fusion.sequence.intrinsic.metafunctions.at `result_of::at`]] +[def __at_c__ [link fusion.sequence.intrinsic.functions.at_c `at_c`]] +[def __result_of_at_c__ [link fusion.sequence.intrinsic.metafunctions.at_c `result_of::at_c`]] +[def __at_key__ [link fusion.sequence.intrinsic.functions.at_key `at_key`]] +[def __result_of_at_key__ [link fusion.sequence.intrinsic.metafunctions.at_key `result_of::at_key`]] +[def __has_key__ [link fusion.sequence.intrinsic.functions.has_key `has_key`]] +[def __result_of_has_key__ [link fusion.sequence.intrinsic.metafunctions.has_key `result_of::has_key`]] +[def __value_at_key__ [link fusion.sequence.intrinsic.metafunctions.value_at_key `value_at_key`]] +[def __result_of_value_at__ [link fusion.sequence.intrinsic.metafunctions.value_at `result_of::value_at`]] +[def __result_of_value_at_c__ [link fusion.sequence.intrinsic.metafunctions.value_at_c `result_of::value_at_c`]] +[def __result_of_value_at_key__ [link fusion.sequence.intrinsic.metafunctions.value_at_key `result_of::value_at_key`]] + +[def __conversion__ [link fusion.container.conversion.functions Conversion]] +[def __result_of_conversion__ [link fusion.container.conversion.metafunctions Conversion Metafunctions]] +[def __as_vector__ [link fusion.container.conversion.functions.as_vector `as_vector`]] +[def __result_of_as_vector__ [link fusion.container.conversion.metafunctions.as_vector `result_of::as_vector`]] +[def __as_list__ [link fusion.container.conversion.functions.as_list `as_list`]] +[def __result_of_as_list__ [link fusion.container.conversion.metafunctions.as_list `result_of::as_list`]] +[def __as_set__ [link fusion.container.conversion.functions.as_set `as_set`]] +[def __result_of_as_set__ [link fusion.container.conversion.metafunctions.as_set `result_of::as_set`]] +[def __as_map__ [link fusion.container.conversion.functions.as_map `as_map`]] +[def __result_of_as_map__ [link fusion.container.conversion.metafunctions.as_map `result_of::as_map`]] + +[def __generation__ [link fusion.container.generation.functions Generation]] +[def __result_of_generation__ [link fusion.container.generation.metafunctions Generation Metafunctions]] +[def __make_vector__ [link fusion.container.generation.functions.make_vector `make_vector`]] +[def __result_of_make_vector__ [link fusion.container.generation.metafunctions.make_vector `result_of::make_vector`]] +[def __vector_tie__ [link fusion.container.generation.functions.vector_tie `vector_tie`]] +[def __map_tie__ [link fusion.container.generation.functions.vector_tie `map_tie`]] +[def __result_of_vector_tie__ [link fusion.container.generation.metafunctions.vector_tie `result_of::vector_tie`]] +[def __make_vector__ [link fusion.container.generation.functions.make_vector `make_vector`]] +[def __result_of_make_vector__ [link fusion.container.generation.metafunctions.make_vector `result_of::make_vector`]] +[def __make_cons__ [link fusion.container.generation.functions.make_cons `make_cons`]] +[def __result_of_make_cons__ [link fusion.container.generation.metafunctions.make_cons `result_of::make_cons`]] +[def __make_list__ [link fusion.container.generation.functions.make_list `make_list`]] +[def __result_of_make_list__ [link fusion.container.generation.metafunctions.make_list `result_of::make_list`]] +[def __make_set__ [link fusion.container.generation.functions.make_set `make_set`]] +[def __result_of_make_set__ [link fusion.container.generation.metafunctions.make_set `result_of::make_set`]] +[def __make_map__ [link fusion.container.generation.functions.make_map `make_map`]] +[def __result_of_make_map__ [link fusion.container.generation.metafunctions.make_map `result_of::make_map`]] +[def __list_tie__ [link fusion.container.generation.functions.list_tie `list_tie`]] +[def __result_of_list_tie__ [link fusion.container.generation.metafunctions.list_tie `result_of::list_tie`]] + +[def __out__ [link fusion.sequence.operator.i_o.out out]] +[def __in__ [link fusion.sequence.operator.i_o.in in]] +[def __eq__ [link fusion.sequence.operator.comparison.equal equal]] +[def __neq__ [link fusion.sequence.operator.comparison.not_equal not equal]] +[def __lt__ [link fusion.sequence.operator.comparison.less_than less than]] +[def __lte__ [link fusion.sequence.operator.comparison.less_than_equal less than equal]] +[def __gt__ [link fusion.sequence.operator.comparison.greater_than greater than]] +[def __gte__ [link fusion.sequence.operator.comparison.greater_than_equal greater than equal]] + +[def __algorithm__ [link fusion.algorithm Algorithm]] +[def __algorithms__ [link fusion.algorithm Algorithms]] +[def __fold__ [link fusion.algorithm.iteration.functions.fold `fold`]] +[def __result_of_fold__ [link fusion.algorithm.iteration.metafunctions.fold `result_of::fold`]] +[def __accumulate__ [link fusion.algorithm.iteration.functions.accumulate `accumulate`]] +[def __result_of_accumulate__ [link fusion.algorithm.iteration.metafunctions.accumulate `result_of::accumulate`]] +[def __for_each__ [link fusion.algorithm.iteration.functions.for_each `for_each`]] +[def __result_of_for_each__ [link fusion.algorithm.iteration.metafunctions.for_each `result_of::for_each`]] +[def __any__ [link fusion.algorithm.query.functions.any `any`]] +[def __result_of_any__ [link fusion.algorithm.query.metafunctions.any `result_of::any`]] +[def __all__ [link fusion.algorithm.query.functions.all `all`]] +[def __result_of_all__ [link fusion.algorithm.query.metafunctions.all `result_of::all`]] +[def __none__ [link fusion.algorithm.query.functions.none `none`]] +[def __result_of_none__ [link fusion.algorithm.query.metafunctions.none `result_of::none`]] +[def __find__ [link fusion.algorithm.query.functions.find `find`]] +[def __result_of_find__ [link fusion.algorithm.query.metafunctions.find `result_of::find`]] +[def __find_if__ [link fusion.algorithm.query.functions.find_if `find_if`]] +[def __result_of_find_if__ [link fusion.algorithm.query.metafunctions.find_if `result_of::find_if`]] +[def __count__ [link fusion.algorithm.query.functions.count `count`]] +[def __result_of_count__ [link fusion.algorithm.query.metafunctions.count `result_of::count`]] +[def __count_if__ [link fusion.algorithm.query.functions.count_if `count_if`]] +[def __result_of_count_if__ [link fusion.algorithm.query.metafunctions.count_if `result_of::count_if`]] +[def __filter__ [link fusion.algorithm.transformation.functions.filter `filter`]] +[def __result_of_filter__ [link fusion.algorithm.transformation.metafunctions.filter `result_of::filter`]] +[def __filter_if__ [link fusion.algorithm.transformation.functions.filter_if `filter_if`]] +[def __result_of_filter_if__ [link fusion.algorithm.transformation.metafunctions.filter_if `result_of::filter_if`]] +[def __transform__ [link fusion.algorithm.transformation.functions.transform `transform`]] +[def __result_of_transform__ [link fusion.algorithm.transformation.metafunctions.transform `result_of::transform`]] +[def __replace__ [link fusion.algorithm.transformation.functions.replace `replace`]] +[def __result_of_replace__ [link fusion.algorithm.transformation.metafunctions.replace `result_of::replace`]] +[def __replace_if__ [link fusion.algorithm.transformation.functions.replace_if `replace_if`]] +[def __result_of_replace_if__ [link fusion.algorithm.transformation.metafunctions.replace_if `result_of::replace_if`]] +[def __remove__ [link fusion.algorithm.transformation.functions.remove `remove`]] +[def __result_of_remove__ [link fusion.algorithm.transformation.metafunctions.remove `result_of::remove`]] +[def __remove_if__ [link fusion.algorithm.transformation.functions.remove_if `remove_if`]] +[def __result_of_remove_if__ [link fusion.algorithm.transformation.metafunctions.remove_if `result_of::remove_if`]] +[def __reverse__ [link fusion.algorithm.transformation.functions.reverse `reverse`]] +[def __result_of_reverse__ [link fusion.algorithm.transformation.metafunctions.reverse `result_of::reverse`]] +[def __clear__ [link fusion.algorithm.transformation.functions.clear `clear`]] +[def __result_of_clear__ [link fusion.algorithm.transformation.metafunctions.clear `result_of::clear`]] +[def __erase__ [link fusion.algorithm.transformation.functions.erase `erase`]] +[def __result_of_erase__ [link fusion.algorithm.transformation.metafunctions.erase `result_of::erase`]] +[def __erase_key__ [link fusion.algorithm.transformation.functions.erase_key `erase_key`]] +[def __result_of_erase_key__ [link fusion.algorithm.transformation.metafunctions.erase_key `result_of::erase_key`]] +[def __insert__ [link fusion.algorithm.transformation.functions.insert `insert`]] +[def __result_of_insert__ [link fusion.algorithm.transformation.metafunctions.insert `result_of::insert`]] +[def __insert_range__ [link fusion.algorithm.transformation.functions.insert_range `insert_range`]] +[def __result_of_insert_range__ [link fusion.algorithm.transformation.metafunctions.insert_range `result_of::insert_range`]] +[def __join__ [link fusion.algorithm.transformation.functions.join `join`]] +[def __result_of_join__ [link fusion.algorithm.transformation.metafunctions.join `result_of::join`]] +[def __zip__ [link fusion.algorithm.transformation.functions.zip `zip`]] +[def __result_of_zip__ [link fusion.algorithm.transformation.metafunctions.zip `result_of::zip`]] +[def __pop_back__ [link fusion.algorithm.transformation.functions.pop_back `pop_back`]] +[def __result_of_pop_back__ [link fusion.algorithm.transformation.metafunctions.pop_back `result_of::pop_back`]] +[def __pop_front__ [link fusion.algorithm.transformation.functions.pop_front `pop_front`]] +[def __result_of_pop_front__ [link fusion.algorithm.transformation.metafunctions.pop_front `result_of::pop_front`]] +[def __push_back__ [link fusion.algorithm.transformation.functions.push_back `push_back`]] +[def __result_of_push_back__ [link fusion.algorithm.transformation.metafunctions.push_back `result_of::push_back`]] +[def __push_front__ [link fusion.algorithm.transformation.functions.push_front `push_front`]] +[def __result_of_push_front__ [link fusion.algorithm.transformation.metafunctions.push_front `result_of::push_front`]] + +[def __tr1_tuple_pair__ [link fusion.tuple.pairs `TR1 and std::pair`]] +[def __tuple_get__ [link fusion.tuple.class_template_tuple.element_access `get`]] + +[def __callable_obj__ [link fusion.functional.concepts.callable Callable 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`]] +[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_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_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]] +[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]] +[def __sequence_facade__ [link fusion.extension.sequence_facade `sequence_facade`]] +[def __iterator_facade__ [link fusion.extension.iterator_facade `iterator_facade`]] + +[include preface.qbk] +[include introduction.qbk] +[include quick_start.qbk] +[include organization.qbk] +[include support.qbk] +[include iterator.qbk] +[include sequence.qbk] +[include container.qbk] +[include view.qbk] +[include adapted.qbk] +[include algorithm.qbk] +[include tuple.qbk] +[include extension.qbk] +[include functional.qbk] +[include notes.qbk] +[include changelog.qbk] +[include acknowledgements.qbk] +[include references.qbk] + diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html new file mode 100644 index 00000000..d10ff6f0 --- /dev/null +++ b/doc/html/fusion/acknowledgements.html @@ -0,0 +1,57 @@ + + + +Acknowledgements + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ 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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html new file mode 100644 index 00000000..0a9121e6 --- /dev/null +++ b/doc/html/fusion/adapted.html @@ -0,0 +1,77 @@ + + + +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 + [13] + . +

+

+ + Header +

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

+

[13] + 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 +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html new file mode 100644 index 00000000..b36302b5 --- /dev/null +++ b/doc/html/fusion/adapted/boost__array.html @@ -0,0 +1,85 @@ + + + +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/adapted/array.hpp>
+#include <boost/fusion/include/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 +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html new file mode 100644 index 00000000..43d5f773 --- /dev/null +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -0,0 +1,81 @@ + + + +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/adapted/boost_tuple.hpp>
+#include <boost/fusion/include/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 +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/boost__variant.html b/doc/html/fusion/adapted/boost__variant.html new file mode 100644 index 00000000..55dff32e --- /dev/null +++ b/doc/html/fusion/adapted/boost__variant.html @@ -0,0 +1,84 @@ + + + +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/adapted/variant.hpp>
+#include <boost/fusion/include/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 +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html new file mode 100644 index 00000000..5ba8af24 --- /dev/null +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -0,0 +1,101 @@ + + + +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/adapted/mpl.hpp>
+#include <boost/fusion/include/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 +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html new file mode 100644 index 00000000..50693588 --- /dev/null +++ b/doc/html/fusion/adapted/std__pair.html @@ -0,0 +1,84 @@ + + + +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/adapted/std_pair.hpp>
+#include <boost/fusion/include/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 +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html new file mode 100644 index 00000000..25330b6a --- /dev/null +++ b/doc/html/fusion/algorithm.html @@ -0,0 +1,114 @@ + + + +Algorithm + + + + + + + + + + + + + + + +
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>
+#include <boost/fusion/include/algorithm.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html new file mode 100644 index 00000000..4782c651 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration.html @@ -0,0 +1,59 @@ + + + +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>
+#include <boost/fusion/include/iteration.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html new file mode 100644 index 00000000..155c47c9 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/functions.html @@ -0,0 +1,48 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html new file mode 100644 index 00000000..8a0c5a80 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -0,0 +1,203 @@ + + + +accumulate + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

Table 1.34. 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 +

+
+

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

+
+

+ 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>
+#include <boost/fusion/include/accumulate.hpp>
+
+
+ + Example +
+
+struct make_string
+{
+    typedef std::string result_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");
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html new file mode 100644 index 00000000..00cfa7ae --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -0,0 +1,203 @@ + + + +fold + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

Table 1.33. Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

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

+
+

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

+
+

+ 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>
+#include <boost/fusion/include/fold.hpp>
+
+
+ + Example +
+
+struct make_string
+{
+    typedef std::string result_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");
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html new file mode 100644 index 00000000..2bf3b1ea --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -0,0 +1,179 @@ + + + +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);
+
+
+

Table 1.35. 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 Regular + Callable Object +

+
+

+ Operation'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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html new file mode 100644 index 00000000..198e3a48 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html @@ -0,0 +1,48 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html new file mode 100644 index 00000000..059cb10d --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -0,0 +1,181 @@ + + + +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;
+};
+
+
+

Table 1.37. Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ The sequence to iterate +

+
+

+ State +

+
+

+ Any type +

+
+

+ The initial state for the first application of F +

+
+

+ F +

+
+

+ boost::result_of<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 +

+
+

+ 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 function object or function pointer of type F. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/accumulate.hpp>
+#include <boost/fusion/include/accumulate.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html new file mode 100644 index 00000000..997dc099 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html @@ -0,0 +1,181 @@ + + + +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;
+};
+
+
+

Table 1.36. Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ The sequence to iterate +

+
+

+ State +

+
+

+ Any type +

+
+

+ The initial state for the first application of F +

+
+

+ F +

+
+

+ boost::result_of<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 +

+
+

+ 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 function object or function pointer of type F. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/include/fold.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html new file mode 100644 index 00000000..1629f640 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html @@ -0,0 +1,163 @@ + + + +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;
+};
+
+
+

Table 1.38. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ F +

+
+

+ Any type +

+
+

+ Operation'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>
+#include <boost/fusion/include/for_each.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html new file mode 100644 index 00000000..dd910180 --- /dev/null +++ b/doc/html/fusion/algorithm/query.html @@ -0,0 +1,58 @@ + + + +Query + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

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

+

+ + Header +

+
+#include <boost/fusion/algorithm/query.hpp>
+#include <boost/fusion/include/query.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html new file mode 100644 index 00000000..a77963a7 --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions.html @@ -0,0 +1,52 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html new file mode 100644 index 00000000..e1017b27 --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -0,0 +1,182 @@ + + + +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);
+
+
+

Table 1.40. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/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()));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html new file mode 100644 index 00000000..698ad724 --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions/any.html @@ -0,0 +1,182 @@ + + + +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);
+
+
+

Table 1.39. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/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()));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html new file mode 100644 index 00000000..de84d0dd --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions/count.html @@ -0,0 +1,169 @@ + + + +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);
+
+
+

Table 1.44. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/count.hpp>
+
+
+ + Example +
+
+const vector<double,int,int> vec(1.0,2,3);
+assert(count(vec,2) == 1);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html new file mode 100644 index 00000000..c87d265c --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions/count_if.html @@ -0,0 +1,168 @@ + + + +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);
+
+
+

Table 1.45. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/count_if.hpp>
+
+
+ + Example +
+
+const vector<int,int,int> vec(1,2,3);
+assert(count_if(vec,odd()) == 2);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html new file mode 100644 index 00000000..a9c4cb50 --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions/find.html @@ -0,0 +1,174 @@ + + + +find + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

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

Table 1.42. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ The sequence to search +

+
+

+ T +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/find.hpp>
+
+
+ + Example +
+
+const vector<char,int> vec('a','0');
+assert(*find<int>(vec) == '0');
+assert(find<double>(vec) == end(vec));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html new file mode 100644 index 00000000..13a68b8f --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions/find_if.html @@ -0,0 +1,173 @@ + + + +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 F,
+    typename Sequence
+    >
+unspecified find_if(Sequence const& seq);
+
+template<
+    typename F,
+    typename Sequence
+    >
+unspecified find_if(Sequence& seq);
+
+
+

Table 1.43. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ The sequence to search +

+
+

+ F +

+
+

+ A unary MPL + Lambda Expression +

+
+

+ The 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. +

+

+ /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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html new file mode 100644 index 00000000..2502ca6f --- /dev/null +++ b/doc/html/fusion/algorithm/query/functions/none.html @@ -0,0 +1,182 @@ + + + +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);
+
+
+

Table 1.41. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/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()));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html new file mode 100644 index 00000000..68581c9e --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions.html @@ -0,0 +1,52 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html new file mode 100644 index 00000000..3065c286 --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -0,0 +1,166 @@ + + + +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;
+};
+
+
+

Table 1.47. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ F +

+
+

+ A 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>
+#include <boost/fusion/include/all.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html new file mode 100644 index 00000000..3d3cfb21 --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html @@ -0,0 +1,166 @@ + + + +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;
+};
+
+
+

Table 1.46. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ F +

+
+

+ A 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>
+#include <boost/fusion/include/any.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html new file mode 100644 index 00000000..7eaee591 --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html @@ -0,0 +1,161 @@ + + + +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;
+};
+
+
+

Table 1.51. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ heading Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ Operation'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>
+#include <boost/fusion/include/count.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html new file mode 100644 index 00000000..00398d26 --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html @@ -0,0 +1,161 @@ + + + +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;
+};
+
+
+

Table 1.52. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ Pred +

+
+

+ A unary function object +

+
+

+ Operation'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>
+#include <boost/fusion/include/count_if.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html new file mode 100644 index 00000000..4d219b73 --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html @@ -0,0 +1,163 @@ + + + +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;
+};
+
+
+

Table 1.49. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ Model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ Operation'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>
+#include <boost/fusion/include/find.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html new file mode 100644 index 00000000..ac850be5 --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html @@ -0,0 +1,164 @@ + + + +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;
+};
+
+
+

Table 1.50. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ Pred +

+
+

+ A model of MPL + Lambda Expression +

+
+

+ Operation'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>
+#include <boost/fusion/include/find_if.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html new file mode 100644 index 00000000..0da5e523 --- /dev/null +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html @@ -0,0 +1,166 @@ + + + +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;
+};
+
+
+

Table 1.48. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ F +

+
+

+ A 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>
+#include <boost/fusion/include/none.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html new file mode 100644 index 00000000..f7a3481f --- /dev/null +++ b/doc/html/fusion/algorithm/transformation.html @@ -0,0 +1,71 @@ + + + +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>
+#include <boost/fusion/include/transformation.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html new file mode 100644 index 00000000..10863dc6 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions.html @@ -0,0 +1,64 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html new file mode 100644 index 00000000..173037b8 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -0,0 +1,145 @@ + + + +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);
+
+
+

Table 1.62. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A 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>
+#include <boost/fusion/include/clear.hpp>
+
+
+ + Example +
+
+assert(clear(make_vector(1,2,3)) == make_vector());
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html new file mode 100644 index 00000000..6f7c111e --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html @@ -0,0 +1,213 @@ + + + +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);
+
+
+

Table 1.63. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html new file mode 100644 index 00000000..6ba6a695 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html @@ -0,0 +1,172 @@ + + + +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);
+
+
+

Table 1.64. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Associative + Sequence +

+
+

+ Operation's argument +

+
+

+ Key +

+
+

+ Any type +

+
+

+ Key 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>
+#include <boost/fusion/include/erase_key.hpp>
+
+
+ + Example +
+
+assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html new file mode 100644 index 00000000..a332c3d3 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html @@ -0,0 +1,169 @@ + + + +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);
+
+
+

Table 1.53. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/filter.hpp>
+
+
+ + Example +
+
+const vector<int,int,long,long> vec(1,2,3,4);
+assert(filter<int>(vec) == make_vector(1,2));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html new file mode 100644 index 00000000..69d113cc --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html @@ -0,0 +1,172 @@ + + + +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);
+
+
+

Table 1.54. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ Pred +

+
+

+ A unary MPL + Lambda Expression +

+
+

+ The 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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html new file mode 100644 index 00000000..9f96a928 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html @@ -0,0 +1,190 @@ + + + +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);
+
+
+

Table 1.65. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/insert.hpp>
+
+
+ + Example +
+
+const vector<int,int> vec(1,2);
+assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html new file mode 100644 index 00000000..a722101d --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html @@ -0,0 +1,193 @@ + + + +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);
+
+
+

Table 1.66. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html new file mode 100644 index 00000000..97e6b27b --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/join.html @@ -0,0 +1,171 @@ + + + +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);
+
+
+

Table 1.67. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ lhs +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ rhs +

+
+

+ A 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>
+#include <boost/fusion/include/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'));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html new file mode 100644 index 00000000..469ccdb1 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html @@ -0,0 +1,147 @@ + + + +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);
+
+
+

Table 1.69. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A 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>
+#include <boost/fusion/include/pop_back.hpp>
+
+
+ + Example +
+
+assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html new file mode 100644 index 00000000..e35b7b96 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html @@ -0,0 +1,147 @@ + + + +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);
+
+
+

Table 1.70. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A 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>
+#include <boost/fusion/include/pop_front.hpp>
+
+
+ + Example +
+
+assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html new file mode 100644 index 00000000..45e5c236 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html @@ -0,0 +1,168 @@ + + + +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);
+
+
+

Table 1.71. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ t +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/push_back.hpp>
+
+
+ + Example +
+
+assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html new file mode 100644 index 00000000..968235c8 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html @@ -0,0 +1,169 @@ + + + +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);
+
+
+

Table 1.72. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ t +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/push_front.hpp>
+
+
+ + Example +
+
+assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html new file mode 100644 index 00000000..73274cbb --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html @@ -0,0 +1,169 @@ + + + +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);
+
+
+

Table 1.59. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ Type 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>
+#include <boost/fusion/include/remove.hpp>
+
+
+ + Example +
+
+const vector<int,double> vec(1,2.0);
+assert(remove<double>(vec) == make_vector(1));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html new file mode 100644 index 00000000..fbefda13 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html @@ -0,0 +1,171 @@ + + + +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);
+
+
+

Table 1.60. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ Pred +

+
+

+ A model of unary MPL + Lambda Expression +

+
+

+ Removal 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>
+#include <boost/fusion/include/remove_if.hpp>
+
+
+ + Example +
+
+const vector<int,double> vec(1,2.0);
+assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html new file mode 100644 index 00000000..f3b6ee15 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html @@ -0,0 +1,190 @@ + + + +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);
+
+
+

Table 1.57. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/replace.hpp>
+
+
+ + Example +
+
+assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html new file mode 100644 index 00000000..3e3fe678 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html @@ -0,0 +1,199 @@ + + + +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);
+
+
+

Table 1.58. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html new file mode 100644 index 00000000..e9b86fd2 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html @@ -0,0 +1,146 @@ + + + +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);
+
+
+

Table 1.61. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ A 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>
+#include <boost/fusion/include/reverse.hpp>
+
+
+ + Example +
+
+assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html new file mode 100644 index 00000000..24029b65 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html @@ -0,0 +1,297 @@ + + + +transform + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ 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 +
+
+template<
+    typename Sequence,
+    typename F
+    >
+typename result_of::transform<Sequence const, F>::type transform(
+    Sequence const& seq, F f);
+
+
+

Table 1.55. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ 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<F(E)>::type is the return type of f when called with a value of + each element type E. +

+
+

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

Table 1.56. 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 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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html new file mode 100644 index 00000000..ac8f1653 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html @@ -0,0 +1,158 @@ + + + +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);
+
+
+

Table 1.68. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ 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>
+#include <boost/fusion/include/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'));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html new file mode 100644 index 00000000..f6bad707 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html @@ -0,0 +1,64 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html new file mode 100644 index 00000000..1b0a6c9a --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -0,0 +1,139 @@ + + + +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;
+};
+
+
+

Table 1.82. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ Any type +

+
+

+ Operation'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>
+#include <boost/fusion/include/clear.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html new file mode 100644 index 00000000..1a729e51 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html @@ -0,0 +1,196 @@ + + + +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;
+};
+
+
+

Table 1.83. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/erase.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html new file mode 100644 index 00000000..7daef275 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html @@ -0,0 +1,163 @@ + + + +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;
+};
+
+
+

Table 1.84. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Associative + Sequence +

+
+

+ Operation's argument +

+
+

+ Key +

+
+

+ Any type +

+
+

+ Key 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>
+#include <boost/fusion/include/erase_key.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html new file mode 100644 index 00000000..840630cc --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html @@ -0,0 +1,165 @@ + + + +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;
+};
+
+
+

Table 1.73. Parameter

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ Type 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>
+#include <boost/fusion/include/filter.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html new file mode 100644 index 00000000..223bdff6 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html @@ -0,0 +1,166 @@ + + + +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;
+};
+
+
+

Table 1.74. Parameter

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ Pred +

+
+

+ A unary MPL + Lambda Expression +

+
+

+ Type 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>
+#include <boost/fusion/include/filter_if.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html new file mode 100644 index 00000000..2325c2b6 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html @@ -0,0 +1,184 @@ + + + +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;
+};
+
+
+

Table 1.85. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/insert.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html new file mode 100644 index 00000000..3ed32a9d --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html @@ -0,0 +1,186 @@ + + + +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;
+};
+
+
+

Table 1.86. 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 +

+
+
+
+ + 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>
+#include <boost/fusion/include/insert_range.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html new file mode 100644 index 00000000..d5161a7f --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html @@ -0,0 +1,98 @@ + + + +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>
+#include <boost/fusion/include/join.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html new file mode 100644 index 00000000..d721679b --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html @@ -0,0 +1,143 @@ + + + +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;
+};
+
+
+

Table 1.87. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A 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>
+#include <boost/fusion/include/pop_back.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html new file mode 100644 index 00000000..cf63ad2e --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html @@ -0,0 +1,138 @@ + + + +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;
+};
+
+
+

Table 1.88. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A 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. +

+

+ /algorithm/transformation/pop_front.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html new file mode 100644 index 00000000..89823b4e --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html @@ -0,0 +1,159 @@ + + + +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;
+};
+
+
+

Table 1.89. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ Operation'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. +

+

+ /algorithm/transformation/push_back.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html new file mode 100644 index 00000000..1b200171 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html @@ -0,0 +1,159 @@ + + + +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;
+};
+
+
+

Table 1.90. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ Operation'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. +

+

+ /algorithm/transformation/push_front.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html new file mode 100644 index 00000000..703673e0 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -0,0 +1,165 @@ + + + +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;
+};
+
+
+

Table 1.79. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ Remove 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>
+#include <boost/fusion/include/remove.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html new file mode 100644 index 00000000..1ea7739c --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html @@ -0,0 +1,166 @@ + + + +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;
+};
+
+
+

Table 1.80. 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_ +

+
+
+
+ + 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>
+#include <boost/fusion/include/remove_if.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html new file mode 100644 index 00000000..d6d9c35d --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html @@ -0,0 +1,162 @@ + + + +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;
+};
+
+
+

Table 1.77. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ T +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/replace.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html new file mode 100644 index 00000000..dcded614 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html @@ -0,0 +1,183 @@ + + + +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;
+};
+
+
+

Table 1.78. Parameters

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A model of Forward + Sequence +

+
+

+ Operation's argument +

+
+

+ F +

+
+

+ A model of unary Polymorphic + Function Object +

+
+

+ Replacement predicate +

+
+

+ T +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/replace_if.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html new file mode 100644 index 00000000..17bc9674 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html @@ -0,0 +1,142 @@ + + + +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;
+};
+
+
+

Table 1.81. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A 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>
+#include <boost/fusion/include/reverse.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html new file mode 100644 index 00000000..2e12466d --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html @@ -0,0 +1,297 @@ + + + +transform + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ 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 +
+
+template<
+    typename Sequence,
+    typename F
+    >
+typename result_of::transform<Sequence const, F>::type transform(
+    Sequence const& seq, F f);
+
+
+

Table 1.75. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ 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<F(E)>::type is the return type of f when called with a value of + each element type E. +

+
+

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

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 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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html new file mode 100644 index 00000000..e97c4f37 --- /dev/null +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html @@ -0,0 +1,105 @@ + + + +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>
+#include <boost/fusion/include/zip.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html new file mode 100644 index 00000000..dda2f704 --- /dev/null +++ b/doc/html/fusion/change_log.html @@ -0,0 +1,59 @@ + + + +Change log + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ 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. +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html new file mode 100644 index 00000000..cbf78d3b --- /dev/null +++ b/doc/html/fusion/container.html @@ -0,0 +1,74 @@ + + + +Container + + + + + + + + + + + + + + + +
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/container.hpp>
+#include <boost/fusion/include/container.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html new file mode 100644 index 00000000..9aae9e4a --- /dev/null +++ b/doc/html/fusion/container/cons.html @@ -0,0 +1,324 @@ + + + +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/container/list/cons.hpp>
+#include <boost/fusion/include/cons.hpp>
+
+

+ + Synopsis +

+
+template <typename Car, typename Cdr = nil>
+struct cons;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Car +

+
+

+ Head type +

+
+

+

+
+

+ Cdr +

+
+

+ Tail type +

+
+

+ nil +

+
+

+ + 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 MPL + Integral Constant +

+
+
+

+ + Expression Semantics +

+

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

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ 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<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_c<0>(l) << std::endl;
+std::cout << at_c<1>(l) << std::endl;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html new file mode 100644 index 00000000..7dce3bc0 --- /dev/null +++ b/doc/html/fusion/container/conversion.html @@ -0,0 +1,58 @@ + + + +Conversion + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

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

+

+ + Header +

+
+#include <boost/fusion/include/convert.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html new file mode 100644 index 00000000..62891875 --- /dev/null +++ b/doc/html/fusion/container/conversion/functions.html @@ -0,0 +1,49 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html new file mode 100644 index 00000000..c1c01063 --- /dev/null +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -0,0 +1,138 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ An instance of Sequence +

+
+

+ The 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/container/list/convert.hpp>
+#include <boost/fusion/include/as_list.hpp>
+
+
+ + Example +
+
+as_list(make_vector('x', 123, "hello"))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html new file mode 100644 index 00000000..96970ed9 --- /dev/null +++ b/doc/html/fusion/container/conversion/functions/as_map.html @@ -0,0 +1,145 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ An instance of Sequence +

+
+

+ The 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/container/map/convert.hpp>
+#include <boost/fusion/include/as_map.hpp>
+
+
+ + Example +
+
+as_map(make_vector(
+    make_pair<int>('X')
+  , make_pair<double>("Men")))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html new file mode 100644 index 00000000..07f13e38 --- /dev/null +++ b/doc/html/fusion/container/conversion/functions/as_set.html @@ -0,0 +1,142 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ An instance of Sequence +

+
+

+ The 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/container/set/convert.hpp>
+#include <boost/fusion/include/as_set.hpp>
+
+
+ + Example +
+
+as_set(make_vector('x', 123, "hello"))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html new file mode 100644 index 00000000..cf2ffebf --- /dev/null +++ b/doc/html/fusion/container/conversion/functions/as_vector.html @@ -0,0 +1,138 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ An instance of Sequence +

+
+

+ The 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/container/vector/convert.hpp>
+#include <boost/fusion/include/as_vector.hpp>
+
+
+ + Example +
+
+as_vector(make_list('x', 123, "hello"))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html new file mode 100644 index 00000000..9e033417 --- /dev/null +++ b/doc/html/fusion/container/conversion/metafunctions.html @@ -0,0 +1,49 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html new file mode 100644 index 00000000..b38529ce --- /dev/null +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -0,0 +1,134 @@ + + + +as_list + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_list. +

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

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A 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/container/list/convert.hpp>
+#include <boost/fusion/include/as_list.hpp>
+
+
+ + Example +
+
+result_of::as_list<vector<char, int> >::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html new file mode 100644 index 00000000..1cf61ca1 --- /dev/null +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html @@ -0,0 +1,141 @@ + + + +as_map + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_map. +

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

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A 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/container/map/convert.hpp>
+#include <boost/fusion/include/as_map.hpp>
+
+
+ + Example +
+
+result_of::as_map<vector<
+    fusion::pair<int, char>
+  , fusion::pair<double, std::string> > >::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html new file mode 100644 index 00000000..bbc19d38 --- /dev/null +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html @@ -0,0 +1,138 @@ + + + +as_set + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_set. +

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

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A 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/container/set/convert.hpp>
+#include <boost/fusion/include/as_set.hpp>
+
+
+ + Example +
+
+result_of::as_set<vector<char, int> >::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html new file mode 100644 index 00000000..a2d812b3 --- /dev/null +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html @@ -0,0 +1,134 @@ + + + +as_vector + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_vector. +

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

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Sequence +

+
+

+ A 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/container/vector/convert.hpp>
+#include <boost/fusion/include/as_vector.hpp>
+
+
+ + Example +
+
+result_of::as_vector<list<char, int> >::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html new file mode 100644 index 00000000..6a4fbfde --- /dev/null +++ b/doc/html/fusion/container/generation.html @@ -0,0 +1,58 @@ + + + +Generation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

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

+

+ + Header +

+
+#include <boost/fusion/container/generation.hpp>
+#include <boost/fusion/include/generation.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html new file mode 100644 index 00000000..20861a17 --- /dev/null +++ b/doc/html/fusion/container/generation/functions.html @@ -0,0 +1,54 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html new file mode 100644 index 00000000..9e5795df --- /dev/null +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -0,0 +1,149 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ x0, + x1,... + xN +

+
+

+ Instances 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/container/generation/list_tie.hpp>
+#include <boost/fusion/include/list_tie.hpp>
+
+
+ + Example +
+
+int i = 123;
+double d = 123.456;
+list_tie(i, d)
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html new file mode 100644 index 00000000..7563364d --- /dev/null +++ b/doc/html/fusion/container/generation/functions/make_cons.html @@ -0,0 +1,168 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ car +

+
+

+ Instance of Car +

+
+

+ The list's head +

+
+

+ cdr +

+
+

+ Instance 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/container/generation/make_cons.hpp>
+#include <boost/fusion/include/make_cons.hpp>
+
+
+ + Example +
+
+make_cons('x', make_cons(123))
+
+
+ + See + also +
+

+ boost::ref +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html new file mode 100644 index 00000000..fc5d03fe --- /dev/null +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -0,0 +1,155 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ x0, + x1,... + xN +

+
+

+ Instances 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/container/generation/make_list.hpp>
+#include <boost/fusion/include/make_list.hpp>
+
+
+ + Example +
+
+make_list(123, "hello", 12.5)
+
+
+ + See + also +
+

+ boost::ref +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html new file mode 100644 index 00000000..b7ef105f --- /dev/null +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -0,0 +1,196 @@ + + + +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 + [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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

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

+
+
+ + 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/container/generation/make_map.hpp>
+#include <boost/fusion/include/make_map.hpp>
+
+
+ + Example +
+
+make_map(
+    make_pair<int>('X')
+  , make_pair<double>("Men"))
+
+
+ + See + also +
+

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

+
+

+

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

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html new file mode 100644 index 00000000..1eb34948 --- /dev/null +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -0,0 +1,167 @@ + + + +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 + [8] + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ x0, + x1,... + xN +

+
+

+ Instances 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/container/generation/make_set.hpp>
+#include <boost/fusion/include/make_set.hpp>
+
+
+ + Example +
+
+make_set(123, "hello", 12.5)
+
+
+ + See + also +
+

+ boost::ref +

+
+

+

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

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html new file mode 100644 index 00000000..436fa1d2 --- /dev/null +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -0,0 +1,155 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ x0, + x1,... + xN +

+
+

+ Instances 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/container/generation/make_vector.hpp>
+#include <boost/fusion/include/make_vector.hpp>
+
+
+ + Example +
+
+make_vector(123, "hello", 12.5)
+
+
+ + See + also +
+

+ boost::ref +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html new file mode 100644 index 00000000..9e6807c9 --- /dev/null +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -0,0 +1,175 @@ + + + +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/container/generation/map_tie.hpp>
+#include <boost/fusion/include/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)
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html new file mode 100644 index 00000000..c38d969c --- /dev/null +++ b/doc/html/fusion/container/generation/functions/tiers.html @@ -0,0 +1,105 @@ + + + +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)) + [10] + . +

+

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

+

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

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html new file mode 100644 index 00000000..a03733df --- /dev/null +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -0,0 +1,149 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ x0, + x1,... + xN +

+
+

+ Instances 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/container/generation/vector_tie.hpp>
+#include <boost/fusion/include/vector_tie.hpp>
+
+
+ + Example +
+
+int i = 123;
+double d = 123.456;
+vector_tie(i, d)
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html new file mode 100644 index 00000000..e03be94d --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions.html @@ -0,0 +1,53 @@ + + + +MetaFunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html new file mode 100644 index 00000000..fca47734 --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -0,0 +1,146 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T0, + T1,... + TN +

+
+

+ Any type +

+
+

+ The 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/container/generation/list_tie.hpp>
+#include <boost/fusion/include/list_tie.hpp>
+
+
+ + Example +
+
+result_of::list_tie<int, double>::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html new file mode 100644 index 00000000..efe89f27 --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html @@ -0,0 +1,155 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Car +

+
+

+ Any type +

+
+

+ The list's head type +

+
+

+ Cdr +

+
+

+ A 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/container/generation/make_cons.hpp>
+#include <boost/fusion/include/make_cons.hpp>
+
+
+ + Example +
+
+result_of::make_cons<char, result_of::make_cons<int>::type>::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html new file mode 100644 index 00000000..8491ec4a --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html @@ -0,0 +1,147 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T0, + T1,... + TN +

+
+

+ Any type +

+
+

+ Template 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/container/generation/make_list.hpp>
+#include <boost/fusion/include/make_list.hpp>
+
+
+ + Example +
+
+result_of::make_list<int, const char(&)[7], double>::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html new file mode 100644 index 00000000..6b4c5e24 --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html @@ -0,0 +1,190 @@ + + + +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 + [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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

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

+
+
+ + 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/container/generation/make_map.hpp>
+#include <boost/fusion/include/make_map.hpp>
+
+
+ + Example +
+
+result_of::make_map<int, double, char, double>::type
+
+
+ + See + also +
+

+ fusion::pair +

+
+

+

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

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html new file mode 100644 index 00000000..f9d5e46b --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -0,0 +1,159 @@ + + + +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 + [11] + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T0, + T1,... + TN +

+
+

+ Any type +

+
+

+ The 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/container/generation/make_set.hpp>
+#include <boost/fusion/include/make_set.hpp>
+
+
+ + Example +
+
+result_of::make_set<int, char, double>::type
+
+
+

+

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

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html new file mode 100644 index 00000000..621caedc --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html @@ -0,0 +1,147 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T0, + T1,... + TN +

+
+

+ Any type +

+
+

+ Template 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/container/generation/make_list.hpp>
+#include <boost/fusion/include/make_list.hpp>
+
+
+ + Example +
+
+result_of::make_vector<int, const char(&)[7], double>::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html new file mode 100644 index 00000000..d1c26928 --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html @@ -0,0 +1,171 @@ + + + +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/container/generation/map_tie.hpp>
+#include <boost/fusion/include/map_tie.hpp>
+
+
+ + Example +
+
+struct int_key;
+struct double_key;
+...
+result_of::map_tie<int_key, double_key, int, double>::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html new file mode 100644 index 00000000..8885304f --- /dev/null +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html @@ -0,0 +1,146 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T0, + T1,... + TN +

+
+

+ Any type +

+
+

+ The 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/container/generation/vector_tie.hpp>
+#include <boost/fusion/include/vector_tie.hpp>
+
+
+ + Example +
+
+result_of::vector_tie<int, double>::type
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html new file mode 100644 index 00000000..a9ef2e9d --- /dev/null +++ b/doc/html/fusion/container/list.html @@ -0,0 +1,291 @@ + + + +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/container/list.hpp>
+#include <boost/fusion/include/list.hpp>
+#include <boost/fusion/container/list/list_fwd.hpp>
+#include <boost/fusion/include/list_fwd.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 +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ T0...TN +

+
+

+ Element types +

+
+

+ unspecified-type +

+
+

+ + Model of +

+ +
+

Notation

+
+
L
+

+ A list type +

+
l
+

+ An instance of list +

+
e0...en
+

+ Heterogeneous values +

+
s
+

+ A Forward Sequence +

+
N
+

+ An MPL + Integral Constant +

+
+
+

+ + Expression Semantics +

+

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

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ 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<N>(l) +

+
+

+ 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;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html new file mode 100644 index 00000000..38216d2d --- /dev/null +++ b/doc/html/fusion/container/map.html @@ -0,0 +1,280 @@ + + + +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/container/map.hpp>
+#include <boost/fusion/include/map.hpp>
+#include <boost/fusion/container/map_fwd.hpp>
+#include <boost/fusion/include/map_fwd.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 +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ T0...TN +

+
+

+ Element types +

+
+

+ unspecified-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. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + 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_key<int>(m) << std::endl;
+std::cout << at_key<double>(m) << std::endl;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html new file mode 100644 index 00000000..f78005b6 --- /dev/null +++ b/doc/html/fusion/container/set.html @@ -0,0 +1,273 @@ + + + +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/container/set.hpp>
+#include <boost/fusion/include/set.hpp>
+#include <boost/fusion/container/set_fwd.hpp>
+#include <boost/fusion/include/set_fwd.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 +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ T0...TN +

+
+

+ Element types +

+
+

+ unspecified-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. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + 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;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html new file mode 100644 index 00000000..91947a94 --- /dev/null +++ b/doc/html/fusion/container/vector.html @@ -0,0 +1,307 @@ + + + +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/container/vector.hpp>
+#include <boost/fusion/include/vector.hpp>
+#include <boost/fusion/container/vector/vector_fwd.hpp>
+#include <boost/fusion/include/vector_fwd.hpp>
+
+// numbered forms
+#include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/fusion/include/vector10.hpp>
+#include <boost/fusion/container/vector/vector20.hpp>
+#include <boost/fusion/include/vector20.hpp>
+#include <boost/fusion/container/vector/vector30.hpp>
+#include <boost/fusion/include/vector30.hpp>
+#include <boost/fusion/container/vector/vector40.hpp>
+#include <boost/fusion/include/vector40.hpp>
+#include <boost/fusion/container/vector/vector50.hpp>
+#include <boost/fusion/include/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 +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ T0...TN +

+
+

+ Element types +

+
+

+ unspecified +

+
+

+ + 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. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + Example +

+
+vector<int, float> v(12, 5.5f);
+std::cout << at_c<0>(v) << std::endl;
+std::cout << at_c<1>(v) << std::endl;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html new file mode 100644 index 00000000..ec3d1f4e --- /dev/null +++ b/doc/html/fusion/extension.html @@ -0,0 +1,53 @@ + + + +Extension + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html new file mode 100644 index 00000000..a47aabcf --- /dev/null +++ b/doc/html/fusion/extension/ext_full.html @@ -0,0 +1,545 @@ + + + + The Full Extension Mechanism + + + + + + + + + + + + + + + +
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 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 traits::tag_of + for our sequence type. +

+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <boost/fusion/include/tag_of_fwd.hpp>
+
+namespace boost { namespace fusion { namespace traits {
+    template<>
+    struct tag_of<example_struct>
+    {
+        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 groups of related types. This feature is not necessary + for our sequence, but for an example see the code in: +

+
+#include <boost/fusion/adapted/array/tag_of.hpp>
+#include <boost/fusion/include/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
+    : boost::fusion::iterator_base<example_struct_iterator<Struct, Pos> >
+{
+    BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
+    typedef Struct struct_type;
+    typedef boost::mpl::int_<Pos> index;
+    typedef boost::fusion::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. +

+

+ 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::example_struct_iterator_tag>
+{
+    template<typename Iterator>
+    struct apply;
+
+    template<typename Struct>
+    struct apply<example::example_struct_iterator<Struct, 0> >
+    {
+        typedef std::string type;
+    };
+
+    template<typename Struct>
+    struct apply<example::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
+    : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
+        template apply<Iterator>
+{};
+
+

+ 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::example_struct_iterator_tag>
+{
+    template<typename Iterator>
+    struct apply;
+
+    template<typename Struct>
+    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::example_struct_iterator<Struct, 0> const& it)
+        {
+            return it.struct_.name;
+        }
+    };
+
+    template<typename Struct>
+    struct apply<example::example_struct_iterator<Struct, 1> >
+    {
+        typedef typename mpl::if_<
+            is_const<Struct>, int const&, int&>::type type;
+
+        static type
+        call(example::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
+        : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
+            template apply<Iterator>
+    {};
+}
+
+template <typename Iterator>
+typename result_of::deref<Iterator>::type
+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. +

+

+ 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::example_struct_iterator_tag>
+{
+    template<typename Iterator>
+    struct apply
+    {
+        typedef typename Iterator::struct_type struct_type;
+        typedef typename Iterator::index index;
+        typedef example::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::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::example_sequence_tag>
+{
+    template<typename Sequence>
+    struct apply
+    {
+        typedef example::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::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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html new file mode 100644 index 00000000..89e46421 --- /dev/null +++ b/doc/html/fusion/extension/iterator_facade.html @@ -0,0 +1,398 @@ + + + +Iterator Facade + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ The iterator_facade + template provides an intrusive mechanism for producing a conforming Fusion + iterator. +

+

+ + Synopsis +

+
+template<typename Derived, typename TravesalTag>
+struct iterator_facade;
+
+

+ + Usage +

+

+ The user of iterator_facade derives his iterator type from a specialization + of iterator_facade and passes the derived iterator type as the first template + parameter. The second template parameter should be the traversal category + of the iterator being implemented. +

+

+ The user must the implement the key expressions required by their iterator + type. +

+
+

Table 1.93. Parameters

+ ++++ + + + + + + + + + + + + + + +
+

+ Name +

+
+

+ Description +

+
+

+ iterator, It, It1, + It2 +

+
+

+ A type derived from iterator_facade +

+
+

+ N +

+
+

+ An MPL + Integral Constant +

+
+
+
+

Table 1.94. Key Expressions

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Result +

+
+

+ Default +

+
+

+ iterator::template value_of<It>::type +

+
+

+ The element stored at iterator position It +

+
+

+ None +

+
+

+ iterator::template deref<It>::type +

+
+

+ The type returned when dereferencing an iterator of type It +

+
+

+ None +

+
+

+ iterator::template deref<It>::call(it) +

+
+

+ Dereferences iterator it +

+
+

+ None +

+
+

+ iterator::template next<It>::type +

+
+

+ The type of the next element from It +

+
+

+ None +

+
+

+ iterator::template next<It>::call(it) +

+
+

+ The next iterator after it +

+
+

+ None +

+
+

+ iterator::template prior<It>::type +

+
+

+ The type of the next element from It +

+
+

+ None +

+
+

+ iterator::template prior<It>::call(it) +

+
+

+ The next iterator after it +

+
+

+ None +

+
+

+ iterator::template advance<It, N>::type +

+
+

+ The type of an iterator advanced N + elements from It +

+
+

+ Implemented in terms of next + and prior +

+
+

+ iterator::template advance<It, N>::call(it) +

+
+

+ An iterator advanced N + elements from it +

+
+

+ Implemented in terms of next + and prior +

+
+

+ iterator::template distance<It1, It2>::type +

+
+

+ The distance between iterators of type It1 + and It2 as an MPL + Integral Constant +

+
+

+ None +

+
+

+ iterator::template distance<It1, It2>::call(it1, it2) +

+
+

+ The distance between iterator it1 + and it2 +

+
+

+ None +

+
+

+ iterator::template equal_to<It1, It2>::type +

+
+

+ The distance between iterators of type It1 + and It2 +

+
+

+ boost::same_type<It1, It2>::type +

+
+

+ iterator::template equal_to<It1, It2>::call(it1, it2) +

+
+

+ The distance between iterators it1 + and it2 +

+
+

+ boost::same_type<It1, It2>::type() +

+
+
+

+ + Header +

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

+ + Example +

+

+ A full worked example using iterator_facade is provided in triple.cpp + in the extension examples. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension/macros.html b/doc/html/fusion/extension/macros.html new file mode 100644 index 00000000..3f34c28f --- /dev/null +++ b/doc/html/fusion/extension/macros.html @@ -0,0 +1,47 @@ + + + +Macros + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension/macros/adapt_assoc.html b/doc/html/fusion/extension/macros/adapt_assoc.html new file mode 100644 index 00000000..67ee2275 --- /dev/null +++ b/doc/html/fusion/extension/macros/adapt_assoc.html @@ -0,0 +1,127 @@ + + + + BOOST_FUSION_ADAPT_ASSOC_STRUCT + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate + all the necessary boilerplate to make an arbitrary struct into a model + of Random + Access Sequence and Associative + Sequence. +

+
+ + Synopsis +
+
+BOOST_FUSION_ADAPT_ASSOC_STRUCT(
+    struct_name
+    (member_type0, member_name0, key_type0)
+    (member_type1, member_name1, key_type1)
+    ...
+    )
+
+
+ + Semantics +
+
+BOOST_FUSION_ADAPT_ASSOC_STRUCT(
+    struct_name
+    (member_type0, member_name0, key_type0)
+    (member_type1, member_name1, key_type1)
+    ...
+    )
+
+

+ The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence and Associative + Sequence. The sequence of (member_typeN, + member_nameN, + key_typeN) + triples declare the type, name and key type of each of the struct members + that will be part of the sequence. +

+

+ The macro should be used at global scope, and struct_name + should be the fully namespace qualified name of the struct to be converted. +

+

+ /adapted/struct/adapt_assoc_struct.hpp> +

+
+ + Example +
+
+namespace demo
+{
+    struct employee
+    {
+        std::string name;
+        int age;
+    };
+}
+
+namespace keys
+{
+    struct name;
+    struct age;
+}
+
+// demo::employee is now a Fusion sequence
+// It is also an associative sequence with
+// keys keys::name and keys::age present.
+BOOST_FUSION_ADAPT_ASSOC_STRUCT(
+    demo::employee
+    (std::string, name, keys::name)
+    (int, age, keys::age))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension/macros/adapt_struct.html b/doc/html/fusion/extension/macros/adapt_struct.html new file mode 100644 index 00000000..7fe39093 --- /dev/null +++ b/doc/html/fusion/extension/macros/adapt_struct.html @@ -0,0 +1,113 @@ + + + + BOOST_FUSION_ADAPT_STRUCT + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the + necessary boilerplate to make an arbitrary struct into a Random + Access Sequence. +

+
+ + Synopsis +
+
+BOOST_FUSION_ADAPT_STRUCT(
+    struct_name
+    (member_type0, member_name0)
+    (member_type1, member_name1)
+    ...
+    )
+
+
+ + Semantics +
+
+BOOST_FUSION_ADAPT_STRUCT(
+    struct_name,
+    (member_type0, member_name0)
+    (member_type1, member_name1)
+    ...
+    )
+
+

+ The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence. The sequence of (member_typeN, + member_nameN) + pairs declare the type and names of each of the struct members that will + be part of the sequence. +

+

+ The macro should be used at global scope, and struct_name + should be the fully namespace qualified name of the struct to be converted. +

+

+ /adapted/struct/adapt_struct.hpp> +

+
+ + Example +
+
+namespace demo
+{
+    struct employee
+    {
+        std::string name;
+        int age;
+    };
+}
+
+// demo::employee is now a Fusion sequence
+BOOST_FUSION_ADAPT_STRUCT(
+    demo::employee
+    (std::string, name)
+    (int, age))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html new file mode 100644 index 00000000..30bad880 --- /dev/null +++ b/doc/html/fusion/extension/sequence_facade.html @@ -0,0 +1,276 @@ + + + +Sequence Facade + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ The sequence_facade + template provides an intrusive mechanism for producing a conforming Fusion + iterator. +

+

+ + Synopsis +

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

+ + Usage +

+

+ The user of sequence_facade derives his sequence + type from a specialization of sequence_facade and passes the derived + sequence type as the first template parameter. The second template parameter + should be the traversal category of the sequence being implemented. The 3rd + parameter should be set to mpl::true_ + if the sequence is a view. +

+

+ The user must the implement the key expressions required by their sequence + type. +

+
+

Table 1.91. Parameters

+ ++++ + + + + + + + + + + + + + + +
+

+ Name +

+
+

+ Description +

+
+

+ sequence, Seq +

+
+

+ A type derived from sequence_facade +

+
+

+ N +

+
+

+ An MPL + Integral Constant +

+
+
+
+

Table 1.92. Key Expressions

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Result +

+
+

+ sequence::template begin<Seq>::type +

+
+

+ The type of an iterator to the beginning of a sequence of type Seq +

+
+

+ sequence::template begin<Seq>::call(seq) +

+
+

+ An iterator to the beginning of sequence seq +

+
+

+ sequence::template end<Seq>::type +

+
+

+ The type of an iterator to the end of a sequence of type Seq +

+
+

+ sequence::template end<Seq>::call(seq) +

+
+

+ An iterator to the end of sequence seq +

+
+

+ sequence::template size<Seq>::type +

+
+

+ The size of a sequence of type Seq + as an MPL + Integral Constant +

+
+

+ sequence::template size<Seq>::call(seq) +

+
+

+ The size of sequence seq +

+
+

+ sequence::template at<Seq, N>::type +

+
+

+ The type of element N + in a sequence of type Seq +

+
+

+ sequence::template at<Seq, N>::call(seq) +

+
+

+ Element N in sequence + seq +

+
+

+ sequence::template value_at<Sequence, N>::type +

+
+

+ The type of the Nth + element in a sequence of type Seq +

+
+
+

+ + Include +

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

+ + Example +

+

+ A full worked example using sequence_facade is provided in triple.cpp + in the extension examples. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html new file mode 100644 index 00000000..910a7b49 --- /dev/null +++ b/doc/html/fusion/functional.html @@ -0,0 +1,165 @@ + + + +Functional + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Components to call functions and function objects and to make Fusion code callable + through a function object interface. +

+

+ /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 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. + 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, + approximate solution to The + Forwarding Problem. Every generic variant has a corresponding generator + function template that returns an adapter instance for the given argument. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html new file mode 100644 index 00000000..f5f0ecce --- /dev/null +++ b/doc/html/fusion/functional/adapters.html @@ -0,0 +1,56 @@ + + + + Adapters + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Function object templates to transform a particular target function. +

+
+ + + +
+
+
+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..d2a50fc1 --- /dev/null +++ b/doc/html/fusion/functional/adapters/fused.html @@ -0,0 +1,249 @@ + + + +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 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 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). +

+

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

+

+ /functional/adapter/fused.hpp> +

+
+ + Synopsis +
+
+template <typename Function>
+class fused;
+
+
+ + Template + parameters +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Function +

+
+

+ A 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 +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ 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 +
+ +
+ + + +
+
+
+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..5cf15d21 --- /dev/null +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -0,0 +1,272 @@ + + + +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 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). +

+

+ /functional/adapter/fused_function_object.hpp> +

+
+ + Synopsis +
+
+template <class Function>
+class fused_function_object;
+
+
+ + Template + parameters +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

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

+ Expression +

+
+

+ Semantics +

+
+

+ 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 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
+    {
+        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 +
+ +
+ + + +
+
+
+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..add84069 --- /dev/null +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -0,0 +1,269 @@ + + + +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 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 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). +

+

+ 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 this + case is not implemented). +

+

+ /functional/adapter/fused_procedure.hpp> +

+
+ + Synopsis +
+
+template <typename Function>
+class fused_procedure;
+
+
+ + Template + parameters +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

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

+ Expression +

+
+

+ Semantics +

+
+

+ 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 +
+ +
+ + + +
+
+
+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..77d2aedc --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -0,0 +1,298 @@ + + + +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. +

+ +

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

+

+ /functional/adapter/unfused_generic.hpp> +

+
+ + Synopsis +
+
+template <class Function>
+class unfused_generic;
+
+
+ + Template + parameters +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Function +

+
+

+ An 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 +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+
+ + 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 <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< void(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 +
+ +
+ + + +
+
+
+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..e948ebc5 --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -0,0 +1,266 @@ + + + +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 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). +

+

+ /functional/adapter/unfused_lvalue_args.hpp> +

+
+ + Synopsis +
+
+template <class Function>
+class unfused_lvalue_args;
+
+
+ + Template + parameters +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Function +

+
+

+ A 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 +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+
+ + 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 +
+ +
+ + + +
+
+
+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..37e201ee --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -0,0 +1,266 @@ + + + +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 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). +

+

+ /functional/adapter/unfused_rvalue_args.hpp> +

+
+ + Synopsis +
+
+template <class Function>
+class unfused_rvalue_args;
+
+
+ + Template + parameters +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Function +

+
+

+ A 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 +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+
+ + 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 +
+ +
+ + + +
+
+
+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..48435701 --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -0,0 +1,347 @@ + + + +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 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. + 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). +

+ + +

+ /functional/adapter/unfused_typed.hpp> +

+
+ + Synopsis +
+
+template <class Function, class Sequence>
+class unfused_typed;
+
+
+ + Template + parameters +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Function +

+
+

+ A unary Polymorphic + Function Object +

+
+

+

+
+

+ Sequence +

+
+

+ A 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 +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+
+ + 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)
+    { }
+
+    typedef void result_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 <typename Sig>
+    struct result;
+
+    template <class Self, class Seq>
+    struct result< Self(Seq) >
+    {
+        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< void(Seq) >::type operator()(Seq const & tie)
+    {
+        return typename result< void(Seq) >::type(
+            fused_parallel_adder<Seq>(tie) );
+    }
+};
+unfused_lvalue_args<fused_parallel_adder_maker> parallel_add;
+
+void try_it()
+{
+    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');
+}
+
+
+ + See also +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html new file mode 100644 index 00000000..272e5858 --- /dev/null +++ b/doc/html/fusion/functional/concepts.html @@ -0,0 +1,52 @@ + + + +Concepts + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+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..5e7d0890 --- /dev/null +++ b/doc/html/fusion/functional/concepts/callable.html @@ -0,0 +1,84 @@ + + + + Callable Object + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+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 +
  • +
+
+ + Examples +
+
+& a_free_function
+& a_class::a_static_member_function
+& a_class::a_nonstatic_data_member
+& a_class::a_nonstatic_member_function
+std::less<int>()
+// using namespace boost;
+bind(std::less<int>(), _1, 5)
+lambda::_1 += lambda::_2;
+fusion::make_fused_function_object(std::less<int>())
+
+
+ + + +
+
+
+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..ae24e85d --- /dev/null +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -0,0 +1,166 @@ + + + + Deferred + Callable Object + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Callable Object + types that work with Boost.ResultOf + 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 +

+
+
+
+ + Expression + requirements +
+
++++ + + + + + + + + +
+

+ Expression +

+
+

+ Type +

+
+

+ boost::result_of< F(T1 + ...TN) >::type +

+
+

+ Result of a call with A1 + ...AN-typed + arguments +

+
+
+ + Models +
+
+
+ + Examples +
+
+& a_free_function
+& a_class::a_static_member_function
+& a_class::a_nonstatic_data_member
+& a_class::a_nonstatic_member_function
+std::less<int>()
+// using namespace boost;
+bind(std::less<int>(), _1, 5)
+// Note: Boost.Lambda expressions don't work with __boost_result_of__
+fusion::make_fused_function_object(std::less<int>())
+
+
+ + + +
+
+
+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..a567cd6b --- /dev/null +++ b/doc/html/fusion/functional/concepts/poly.html @@ -0,0 +1,178 @@ + + + + Polymorphic Function + Object + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A non-member-pointer Deferred + Callable Object type. +

+
+ + Refinement + of +
+ +
+

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 +

+
+
+
+ + Expression + requirements +
+
+++++ + + + + + + + + + + +
+

+ Expression +

+
+

+ Return Type +

+
+

+ Runtime Complexity +

+
+

+ f(a1, + ...aN) +

+
+

+ result_of< + F(T1, + ...TN) >::type +

+
+

+ Unspecified +

+
+
+ + Models +
+
    +
  • + function pointers +
  • +
  • + function objects of the Standard Library +
  • +
  • + all Fusion functional adapters +
  • +
+
+ + Examples +
+
+& a_free_function
+& a_class::a_static_member_function
+std::less<int>()
+// using namespace boost;
+bind(std::less<int>(), _1, 5)
+// Note: Boost.Lambda expressions don't work with __boost_result_of__
+fusion::make_fused_function_object(std::less<int>())
+
+
+ + + +
+
+
+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..9aa7b8da --- /dev/null +++ b/doc/html/fusion/functional/concepts/reg_callable.html @@ -0,0 +1,159 @@ + + + + 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 +
  • +
+
+ + Examples +
+
+& a_free_function
+& a_class::a_static_member_function
+std::less<int>()
+// using namespace boost;
+bind(std::less<int>(), _1, 5)
+lambda::_1 += lambda::_2;
+fusion::make_fused_function_object(std::less<int>())
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html new file mode 100644 index 00000000..3cea4633 --- /dev/null +++ b/doc/html/fusion/functional/generation.html @@ -0,0 +1,47 @@ + + + +Generation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+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..5deecb56 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions.html @@ -0,0 +1,58 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+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..041d8044 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -0,0 +1,163 @@ + + + + + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model 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>
+#include <boost/fusion/include/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 +
+ +
+ + + +
+
+
+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..111c4a0a --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -0,0 +1,179 @@ + + + + + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model 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>
+#include <boost/fusion/include/make_fused_function_object.hpp>
+
+
+ + Example +
+
+struct sub
+{
+    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
+    {
+        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 +
+ +
+ + + +
+
+
+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..8f539520 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -0,0 +1,159 @@ + + + + + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model 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>
+#include <boost/fusion/include/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 +
+ +
+ + + +
+
+
+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..c55eb731 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -0,0 +1,186 @@ + + + + + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model 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>
+#include <boost/fusion/include/make_unfused_generic.hpp>
+
+
+ + Example +
+
+struct bottles_song
+{
+    typedef void result_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 +
+ +
+ + + +
+
+
+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..38b9343a --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -0,0 +1,177 @@ + + + + + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model 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>
+#include <boost/fusion/include/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 +
+ +
+ + + +
+
+
+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..aa090ee3 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -0,0 +1,175 @@ + + + + + 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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model 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>
+#include <boost/fusion/include/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 +
+ +
+ + + +
+
+
+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..1dcc003f --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -0,0 +1,59 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+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..9837ccfc --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -0,0 +1,84 @@ + + + + + make_fused + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of make_fused. +

+
+ + Header +
+
+#include <boost/fusion/functional/generation/make_fused.hpp>
+#include <boost/fusion/include/make_fused.hpp>
+
+
+ + Synopsis +
+
+namespace result_of
+{
+    template<typename Function>
+    struct make_fused
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..639fc218 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -0,0 +1,85 @@ + + + + + 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>
+#include <boost/fusion/include/make_fused_function_object.hpp>
+
+
+ + Synopsis +
+
+namespace result_of
+{
+    template<typename Function>
+    struct make_fused_function_object
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..cdc1fc5d --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -0,0 +1,85 @@ + + + + + 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>
+#include <boost/fusion/include/make_fused_procedure.hpp>
+
+
+ + Synopsis +
+
+namespace result_of
+{
+    template<typename Function>
+    struct make_fused_procedure
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..44465808 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -0,0 +1,85 @@ + + + + + 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>
+#include <boost/fusion/include/make_unfused_generic.hpp>
+
+
+ + Synopsis +
+
+namespace result_of
+{
+    template<typename Function>
+    struct make_unfused_generic
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..896cb942 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -0,0 +1,85 @@ + + + + + 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>
+#include <boost/fusion/include/make_unfused_lvalue_args.hpp>
+
+
+ + Synopsis +
+
+namespace result_of
+{
+    template<typename Function>
+    struct make_unfused_lvalue_args
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..62ede2eb --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -0,0 +1,84 @@ + + + + + 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>
+#include <boost/fusion/include/make_unfused_rvalue_args.hpp>
+
+
+ + Synopsis +
+
+namespace result_of
+{
+    template<typename Function>
+    struct make_unfused_rvalue_args
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html new file mode 100644 index 00000000..107b46e1 --- /dev/null +++ b/doc/html/fusion/functional/invocation.html @@ -0,0 +1,48 @@ + + + +Invocation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+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..f2820769 --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions.html @@ -0,0 +1,50 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+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..a12fa9dc --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -0,0 +1,192 @@ + + + +invoke + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Calls a Deferred + Callable Object with the arguments from a 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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ A Deferred + Callable Object +

+
+

+ The function to call. +

+
+

+ s +

+
+

+ A 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. +

+

+ /functional/invocation/invoke.hpp> +

+
+ + Example +
+
+std::plus<int> add;
+assert(invoke(add,make_vector(1,1)) == 2);
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..44aabbcf --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -0,0 +1,209 @@ + + + + + invoke_function_object + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Calls a Polymorphic Function + Object with the arguments from a Sequence. +

+

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

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model of Polymorphic + Function Object +

+
+

+ The function object to call. +

+
+

+ s +

+
+

+ Model of Forward + Sequence +

+
+

+ The arguments. +

+
+
+ + Expression + Semantics +
+
+invoke_function_object(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. +

+

+ /functional/invocation/invoke_function_object.hpp> +

+
+ + Example +
+
+struct sub
+{
+    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
+    {
+        return lhs - rhs;
+    }
+};
+
+void try_it()
+{
+    sub f;
+    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..f9a36bbb --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -0,0 +1,201 @@ + + + + + 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 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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ f +

+
+

+ Model of Callable + Object +

+
+

+ The function to call. +

+
+

+ s +

+
+

+ Model of Forward + Sequence +

+
+

+ The arguments. +

+
+
+ + Expression + Semantics +
+
+invoke_procedure(f,s);
+
+

+ Return type: void +

+

+ Semantics: Invokes f + with the elements in s + as arguments. +

+

+ /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 +
+ +
+ + + +
+
+
+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..763b05f7 --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -0,0 +1,51 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+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..7cfd60fc --- /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. +

+
+ + Synopsis +
+
+namespace result_of
+{
+    template<
+        typename Function,
+        class Sequence
+        >
+    struct invoke
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..3c31c487 --- /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. +

+
+ + Synopsis +
+
+namespace result_of
+{
+    template<
+        class Function,
+        class Sequence
+        >
+    struct invoke_function_object
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+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..3d4f6f60 --- /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. +

+
+ + Synopsis +
+
+namespace result_of
+{
+    template<
+        typename Function,
+        class Sequence
+        >
+    struct invoke_procedure
+    {
+        typedef unspecified type;
+    };
+}
+
+
+ + See + also +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html new file mode 100644 index 00000000..5d454021 --- /dev/null +++ b/doc/html/fusion/introduction.html @@ -0,0 +1,145 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html new file mode 100644 index 00000000..041d7801 --- /dev/null +++ b/doc/html/fusion/iterator.html @@ -0,0 +1,94 @@ + + + +Iterator + + + + + + + + + + + + + + + +
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. +

+

+ /iterator.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html new file mode 100644 index 00000000..33096998 --- /dev/null +++ b/doc/html/fusion/iterator/concepts.html @@ -0,0 +1,65 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html new file mode 100644 index 00000000..358b3268 --- /dev/null +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -0,0 +1,323 @@ + + + +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: +

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Return type +

+
+

+ Runtime Complexity +

+
+

+ next(i) +

+
+

+ Bidirectional + Iterator +

+
+

+ Constant +

+
+

+ prior(i) +

+
+

+ Bidirectional + Iterator +

+
+

+ Constant +

+
+

+ advance_c<N>(i) +

+
+

+ Bidirectional + Iterator +

+
+

+ Constant +

+
+

+ advance<M>(i) +

+
+

+ Bidirectional + Iterator +

+
+

+ Constant +

+
+
+ + Meta + Expressions +
+
++++ + + + + + + + + +
+

+ Expression +

+
+

+ Compile Time Complexity +

+
+

+ result_of::prior<I>::type +

+
+

+ Amortized constant time +

+
+
+ + Expression + Semantics +
+

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

+
++++ + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ prior(i) +

+
+

+ An iterator to the element preceding i +

+
+
+ + Invariants +
+

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

+
+
+ + Models +
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html new file mode 100644 index 00000000..ac3d0f9d --- /dev/null +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -0,0 +1,580 @@ + + + +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: +

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Return type +

+
+

+ Runtime Complexity +

+
+

+ next(i) +

+
+

+ Forward + Iterator +

+
+

+ Constant +

+
+

+ i == + j +

+
+

+ Convertible to bool +

+
+

+ Constant +

+
+

+ i != + j +

+
+

+ Convertible to bool +

+
+

+ Constant +

+
+

+ advance_c<N>(i) +

+
+

+ Forward + Iterator +

+
+

+ Constant +

+
+

+ advance<M>(i) +

+
+

+ Forward + Iterator +

+
+

+ Constant +

+
+

+ distance(i, + j) +

+
+

+ result_of::distance<I, + J>::type +

+
+

+ Constant +

+
+

+ deref(i) +

+
+

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

+
+

+ Constant +

+
+

+ *i +

+
+

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

+
+

+ Constant +

+
+
+ + Meta + Expressions +
+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Compile Time Complexity +

+
+

+ result_of::next<I>::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<I ,M>::type +

+
+

+ Linear +

+
+

+ result_of::distance<I ,J>::type +

+
+

+ Linear +

+
+

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

+
+

+ Amortized constant time +

+
+

+ result_of::value_of<I>::type +

+
+

+ Amortized constant time +

+
+
+ + Expression + Semantics +
+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ next(i) +

+
+

+ An iterator to the element following i +

+
+

+ i == + j +

+
+

+ Iterator equality comparison +

+
+

+ i != + j +

+
+

+ Iterator 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 +

+
+

+ *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
  • +
  • + 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 +
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html new file mode 100644 index 00000000..2d30031a --- /dev/null +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -0,0 +1,301 @@ + + + +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: +

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Return type +

+
+

+ Runtime Complexity +

+
+

+ next(i) +

+
+

+ Random + Access Iterator +

+
+

+ Constant +

+
+

+ prior(i) +

+
+

+ Random + Access Iterator +

+
+

+ Constant +

+
+

+ advance_c<N>(i) +

+
+

+ Random + Access Iterator +

+
+

+ Constant +

+
+

+ advance<M>(i) +

+
+

+ Random + Access Iterator +

+
+

+ Constant +

+
+
+ + Meta + Expressions +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Compile Time Complexity +

+
+

+ result_of::advance_c<I, + N>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::advance<I, + M>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::distance<I ,J>::type +

+
+

+ Amortized constant time +

+
+
+ + Models +
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html new file mode 100644 index 00000000..71e3ab8f --- /dev/null +++ b/doc/html/fusion/iterator/functions.html @@ -0,0 +1,57 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

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

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html new file mode 100644 index 00000000..d11323c8 --- /dev/null +++ b/doc/html/fusion/iterator/functions/advance.html @@ -0,0 +1,161 @@ + + + +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);
+
+
+

Table 1.6. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i +

+
+

+ Model of Forward + Iterator +

+
+

+ Iterator to move relative to +

+
+

+ N +

+
+

+ An MPL + Integral Constant +

+
+

+ Number 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. +

+

+ /iterator/advance.hpp> +

+
+ + Example +
+
+typedef vector<int,int,int> vec;
+
+vec v(1,2,3);
+assert(deref(advance<mpl::int_<2> >(begin(v))) == 3);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html new file mode 100644 index 00000000..6a4f036c --- /dev/null +++ b/doc/html/fusion/iterator/functions/advance_c.html @@ -0,0 +1,160 @@ + + + +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);
+
+
+

Table 1.7. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i +

+
+

+ Model of Forward + Iterator +

+
+

+ Iterator to move relative to +

+
+

+ N +

+
+

+ Integer constant +

+
+

+ Number 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. +

+

+ /iterator/advance.hpp> +

+
+ + Example +
+
+typedef vector<int,int,int> vec;
+
+vec v(1,2,3);
+assert(deref(advance_c<2>(begin(v))) == 3);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html new file mode 100644 index 00000000..21a6c7ca --- /dev/null +++ b/doc/html/fusion/iterator/functions/deref.html @@ -0,0 +1,137 @@ + + + +deref + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Deferences an iterator. +

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

Table 1.2. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i +

+
+

+ Model of Forward + Iterator +

+
+

+ Operation's argument +

+
+
+
+ + Expression + Semantics +
+
+deref(i);
+
+

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

+

+ Semantics: Dereferences the iterator + i. +

+

+ /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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html new file mode 100644 index 00000000..6ed63921 --- /dev/null +++ b/doc/html/fusion/iterator/functions/distance.html @@ -0,0 +1,135 @@ + + + +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);
+
+
+

Table 1.5. 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 +

+
+
+
+ + Expression + Semantics +
+
+distance(i,j);
+
+

+ Return type: int +

+

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

+

+ /iterator/distance.hpp> +

+
+ + Example +
+
+typedef vector<int,int,int> vec;
+
+vec v(1,2,3);
+assert(distance(begin(v), next(next(begin(v)))) == 2);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html new file mode 100644 index 00000000..a4c20f8f --- /dev/null +++ b/doc/html/fusion/iterator/functions/next.html @@ -0,0 +1,137 @@ + + + +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);
+
+
+

Table 1.3. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i +

+
+

+ Model 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. +

+

+ /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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html new file mode 100644 index 00000000..ea5e28c4 --- /dev/null +++ b/doc/html/fusion/iterator/functions/prior.html @@ -0,0 +1,136 @@ + + + +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);
+
+
+

Table 1.4. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i +

+
+

+ Model 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. +

+

+ /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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html new file mode 100644 index 00000000..edae7021 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions.html @@ -0,0 +1,54 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html new file mode 100644 index 00000000..47137648 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -0,0 +1,165 @@ + + + +advance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Moves an iterator a specified distance. +

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

Table 1.17. 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 +

+
+
+
+ + 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html new file mode 100644 index 00000000..e84cc23e --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html @@ -0,0 +1,164 @@ + + + +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;
+};
+
+
+

Table 1.18. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ I +

+
+

+ Model of Forward + Iterator +

+
+

+ Iterator to move relative to +

+
+

+ N +

+
+

+ Integer constant +

+
+

+ Number 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html new file mode 100644 index 00000000..dd662d57 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/deref.html @@ -0,0 +1,143 @@ + + + +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;
+};
+
+
+

Table 1.12. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ I +

+
+

+ Model 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. +

+

+ /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&>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html new file mode 100644 index 00000000..ac79fa59 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/distance.html @@ -0,0 +1,143 @@ + + + +distance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the distance between two iterators. +

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

Table 1.16. 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 +

+
+
+
+ + 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. +

+

+ /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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html new file mode 100644 index 00000000..eeadcd86 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html @@ -0,0 +1,141 @@ + + + +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;
+};
+
+
+

Table 1.15. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ I, J +

+
+

+ Any fusion iterators +

+
+

+ Operation'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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html new file mode 100644 index 00000000..ee700313 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/next.html @@ -0,0 +1,138 @@ + + + +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;
+};
+
+
+

Table 1.13. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ I +

+
+

+ Model 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html new file mode 100644 index 00000000..aac06451 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/prior.html @@ -0,0 +1,141 @@ + + + +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;
+};
+
+
+

Table 1.14. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ I +

+
+

+ Model 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html new file mode 100644 index 00000000..b54e9777 --- /dev/null +++ b/doc/html/fusion/iterator/metafunctions/value_of.html @@ -0,0 +1,141 @@ + + + +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;
+};
+
+
+

Table 1.11. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ I +

+
+

+ Model 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. +

+

+ /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&>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html new file mode 100644 index 00000000..f2a8c05a --- /dev/null +++ b/doc/html/fusion/iterator/operator.html @@ -0,0 +1,56 @@ + + + +Operator + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

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

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html new file mode 100644 index 00000000..b36b5535 --- /dev/null +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -0,0 +1,129 @@ + + + + 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);
+
+
+

Table 1.9. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i, j +

+
+

+ Any fusion iterators +

+
+

+ Operation'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. +

+

+ /iterator/equal_to.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html new file mode 100644 index 00000000..12836d8d --- /dev/null +++ b/doc/html/fusion/iterator/operator/operator_inequality.html @@ -0,0 +1,125 @@ + + + + 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);
+
+
+

Table 1.10. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i, j +

+
+

+ Any fusion iterators +

+
+

+ Operation'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. +

+

+ /iterator/equal_to.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html new file mode 100644 index 00000000..416d0d35 --- /dev/null +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html @@ -0,0 +1,141 @@ + + + + Operator + * + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Dereferences an iterator. +

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

Table 1.8. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ i +

+
+

+ Model of Forward + Iterator +

+
+

+ Operation's argument +

+
+
+
+ + Expression + Semantics +
+
+*i
+
+

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

+

+ Semantics: Equivalent to deref(i). +

+

+ /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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html new file mode 100644 index 00000000..6066d71a --- /dev/null +++ b/doc/html/fusion/notes.html @@ -0,0 +1,262 @@ + + + +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). +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html new file mode 100644 index 00000000..bd98ce83 --- /dev/null +++ b/doc/html/fusion/organization.html @@ -0,0 +1,230 @@ + + + +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. +

+

+ There is also a "boost/fusion/include/" + directory that contains all the headers to all the components and modules. + If you are unsure where to find a specific component or module, or don't want + to fuss with hierarchy and nesting, use this. +

+

+ The library is header-only. There is no need to build object files to link + against. +

+

+ + Directory +

+
    +
  • + tuple +
  • +
  • + algorithm +
      +
    • + iteration +
    • +
    • + query +
    • +
    • + transformation +
    • +
    +
  • +
  • + adapted +
      +
    • + array +
    • +
    • + mpl +
    • +
    • + boost::tuple +
    • +
    • + std_pair +
    • +
    • + struct +
    • +
    • + variant +
    • +
    +
  • +
  • + view +
      +
    • + filter_view +
    • +
    • + iterator_range +
    • +
    • + joint_view +
    • +
    • + reverse_view +
    • +
    • + single_view +
    • +
    • + transform_view +
    • +
    • + zip_view +
    • +
    +
  • +
  • + container +
      +
    • + deque +
    • +
    • + list +
    • +
    • + map +
    • +
    • + set +
    • +
    • + vector +
    • +
    • + generation +
    • +
    +
  • +
  • + mpl +
  • +
  • + functional +
  • +
  • + sequence +
      +
    • + comparison +
    • +
    • + intrinsic +
    • +
    • + io +
    • +
    +
  • +
  • + 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/container.hpp>
+#include <boost/fusion/include/container.hpp>
+#include <boost/fusion/container/list.hpp>
+#include <boost/fusion/include/list.hpp>
+
+

+ The first includes all containers The second 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. +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html new file mode 100644 index 00000000..cf6c413d --- /dev/null +++ b/doc/html/fusion/preface.html @@ -0,0 +1,230 @@ + + + +Preface + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+

+

+

+ “Algorithms + Data Structures = Programs.” +

+

+

+
+
+

+

+

+ --Niklaus Wirth +

+

+

+
+

+ + Description +

+

+ 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 + 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: +

+
+

Table 1.1. 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. +

+

+ + 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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html new file mode 100644 index 00000000..f6aa9396 --- /dev/null +++ b/doc/html/fusion/quick_start.html @@ -0,0 +1,267 @@ + + + +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>
+#include <boost/fusion/include/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>
+#include <boost/fusion/include/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. +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html new file mode 100644 index 00000000..783cd2f8 --- /dev/null +++ b/doc/html/fusion/references.html @@ -0,0 +1,72 @@ + + + +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. +
+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html new file mode 100644 index 00000000..019ea590 --- /dev/null +++ b/doc/html/fusion/sequence.html @@ -0,0 +1,84 @@ + + + +Sequence + + + + + + + + + + + + + + + +
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. Container 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>
+#include <boost/fusion/include/sequence.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html new file mode 100644 index 00000000..0340f9a9 --- /dev/null +++ b/doc/html/fusion/sequence/concepts.html @@ -0,0 +1,85 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html new file mode 100644 index 00000000..6bc665f4 --- /dev/null +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -0,0 +1,332 @@ + + + +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: +

+
++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Return type +

+
+

+ Type Requirements +

+
+

+ Runtime Complexity +

+
+

+ has_key<K>(s) +

+
+

+ MPL + Boolean Constant. Convertible to bool. +

+
+

+

+
+

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

+
+
+ + Result + Type Expressions +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Compile Time Complexity +

+
+

+ result_of::has_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 +

+
+ +
+ + 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. +

+
+

+ at_key<K>(s) +

+
+

+ The element associated with the key K + in the sequence s; + see at. +

+
+
+ + Models +
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html new file mode 100644 index 00000000..cde3c9fd --- /dev/null +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -0,0 +1,348 @@ + + + +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: +

+
++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

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

+
+
+ + Result + Type Expressions +
+
++++ + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Compile Time Complexity +

+
+

+ result_of::begin<S>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::end<S>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::back<S>::type +

+
+

+ Amortized constant time +

+
+
+ + Expression + Semantics +
+

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

+
++++ + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ back(s) +

+
+

+ The last element in the sequence; see back. +

+
+
+ + Models +
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html new file mode 100644 index 00000000..8fd98917 --- /dev/null +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -0,0 +1,475 @@ + + + +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: +

+
++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

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

+
+
+ + Result + Type Expressions +
+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Compile Time Complexity +

+
+

+ result_of::begin<S>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::end<S>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::size<S>::type +

+
+

+ Unspecified +

+
+

+ result_of::empty<S>::type +

+
+

+ Constant time +

+
+

+ result_of::front<S>::type +

+
+

+ Amortized constant time +

+
+
+ + Expression + Semantics +
+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+
+ + 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 +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html new file mode 100644 index 00000000..8667db10 --- /dev/null +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -0,0 +1,377 @@ + + + +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 MPL + 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: +

+
++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

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

+ Expression +

+
+

+ Compile Time Complexity +

+
+

+ result_of::begin<S>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::end<S>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::at<S, + N>::type +

+
+

+ Amortized constant time +

+
+

+ result_of::value_at<S, + N>::type +

+
+

+ Amortized constant time +

+
+ +
+ + Expression + Semantics +
+

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

+
++++ + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ at<N>(s) +

+
+

+ The Nth element from the beginning of the sequence; see at. +

+
+
+ + Models +
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html new file mode 100644 index 00000000..ef98da14 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic.html @@ -0,0 +1,73 @@ + + + +Intrinsic + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

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

+

+ + Header +

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

+

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

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html new file mode 100644 index 00000000..850a95b6 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -0,0 +1,56 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html new file mode 100644 index 00000000..febaf74f --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -0,0 +1,174 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+
+ + 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>
+#include <boost/fusion/include/at.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(at<mpl::int_<1> >(v) == 2);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html new file mode 100644 index 00000000..6ed7d633 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html @@ -0,0 +1,174 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+
+ + 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>
+#include <boost/fusion/include/at_c.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(at_c<1>(v) == 2);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html new file mode 100644 index 00000000..4fae466d --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html @@ -0,0 +1,169 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model of Associative + Sequence +

+
+

+ The sequence we wish to investigate. +

+
+

+ Key +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/at_key.hpp>
+
+
+ + Example +
+
+set<int, char, bool> s(1, 'x', true);
+assert(at_key<char>(s) == 'x');
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html new file mode 100644 index 00000000..d08eedb6 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html @@ -0,0 +1,150 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model 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>
+#include <boost/fusion/include/back.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(back(v) == 3);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html new file mode 100644 index 00000000..d678e0c8 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html @@ -0,0 +1,156 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model 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>
+#include <boost/fusion/include/begin.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(deref(begin(v)) == 1);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html new file mode 100644 index 00000000..8665a591 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html @@ -0,0 +1,139 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model 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>
+#include <boost/fusion/include/empty.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(empty(v) == false);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html new file mode 100644 index 00000000..bdac3243 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html @@ -0,0 +1,156 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model 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>
+#include <boost/fusion/include/end.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(deref(prior(end(v))) == 3);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html new file mode 100644 index 00000000..730d2ae3 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html @@ -0,0 +1,150 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model 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>
+#include <boost/fusion/include/front.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(front(v) == 1);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html new file mode 100644 index 00000000..0dd8ac89 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html @@ -0,0 +1,159 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model of Associative + Sequence +

+
+

+ The sequence we wish to investigate. +

+
+

+ Key +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/has_key.hpp>
+
+
+ + Example +
+
+set<int, char, bool> s(1, 'x', true);
+assert(has_key<char>(s) == true);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html new file mode 100644 index 00000000..b39c2b24 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html @@ -0,0 +1,138 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ seq +

+
+

+ Model 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>
+#include <boost/fusion/include/size.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(size(v) == 3);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html new file mode 100644 index 00000000..af676b30 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/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. +

+

+ /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"));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html new file mode 100644 index 00000000..39bfd37b --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html @@ -0,0 +1,59 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html new file mode 100644 index 00000000..a46164c5 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -0,0 +1,166 @@ + + + +at + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+at
+
+ + Description +
+

+ Returns the result type of at + [5] + . +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    typename N>
+struct at
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.25. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Argument sequence +

+
+

+ N +

+
+

+ An MPL + Integral Constant +

+
+

+ Index 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. +

+

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

+

[5] + 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 +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html new file mode 100644 index 00000000..a393d214 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -0,0 +1,165 @@ + + + +at_c + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of at_c + [6] + . +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    int M>
+struct at_c
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.26. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Argument sequence +

+
+

+ M +

+
+

+ Positive integer index +

+
+

+ Index 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. +

+

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

+

[6] + 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 +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html new file mode 100644 index 00000000..4e4e59a4 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -0,0 +1,167 @@ + + + +at_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of at_key + [7] + . +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    typename Key>
+struct at_key
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.30. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Argument sequence +

+
+

+ Key +

+
+

+ Any type +

+
+

+ Key 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. +

+

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

+

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

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html new file mode 100644 index 00000000..e08e328a --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -0,0 +1,133 @@ + + + +back + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of back. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct back
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.23. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A 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. +

+

+ /sequence/intrinsic/back.hpp> +

+
+ + Example +
+
+typedef vector<int,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html new file mode 100644 index 00000000..31afe5cc --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html @@ -0,0 +1,135 @@ + + + +begin + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of begin. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct begin
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.19. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A 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. +

+

+ /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&>))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html new file mode 100644 index 00000000..caa2cb21 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html @@ -0,0 +1,138 @@ + + + +empty + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of empty. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct empty
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.21. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html new file mode 100644 index 00000000..1ff2e991 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html @@ -0,0 +1,135 @@ + + + +end + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+end
+
+ + Description +
+

+ Returns the result type of end. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct end
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.20. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A 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. +

+

+ /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>))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html new file mode 100644 index 00000000..7a6ffc03 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html @@ -0,0 +1,134 @@ + + + +front + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of front. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct front
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.22. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A 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. +

+

+ /sequence/intrinsic/front.hpp> +

+
+ + Example +
+
+typedef vector<int,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html new file mode 100644 index 00000000..666d5be3 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html @@ -0,0 +1,158 @@ + + + +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;
+};
+
+
+

Table 1.29. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Argument sequence +

+
+

+ Key +

+
+

+ Any type +

+
+

+ Key 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. +

+

+ /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*>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html new file mode 100644 index 00000000..be608b52 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html @@ -0,0 +1,135 @@ + + + +size + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of size. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct size
+{
+    typedef unspecified type;
+};
+
+
+

Table 1.24. Parameters

+ +++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A 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. +

+

+ /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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html new file mode 100644 index 00000000..487d52c8 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/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. +

+

+ /sequence/intrinsic/swap.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html new file mode 100644 index 00000000..dde3a635 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html @@ -0,0 +1,155 @@ + + + +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;
+};
+
+
+

Table 1.27. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Argument sequence +

+
+

+ N +

+
+

+ An MPL + Integral Constant +

+
+

+ Index 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html new file mode 100644 index 00000000..ddfee016 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html @@ -0,0 +1,154 @@ + + + +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;
+};
+
+
+

Table 1.28. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Argument sequence +

+
+

+ M +

+
+

+ Positive integer index +

+
+

+ Index 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html new file mode 100644 index 00000000..f2890ff8 --- /dev/null +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html @@ -0,0 +1,155 @@ + + + +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;
+};
+
+
+

Table 1.31. Parameters

+ +++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ Seq +

+
+

+ A model of Forward + Sequence +

+
+

+ Argument sequence +

+
+

+ Key +

+
+

+ Any type +

+
+

+ Key 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. +

+

+ /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>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator.html b/doc/html/fusion/sequence/operator.html new file mode 100644 index 00000000..1b52d062 --- /dev/null +++ b/doc/html/fusion/sequence/operator.html @@ -0,0 +1,52 @@ + + + +Operator + + + + + + + + + + + + + + + +
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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html new file mode 100644 index 00000000..9f5c536b --- /dev/null +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -0,0 +1,73 @@ + + + +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>
+#include <boost/fusion/include/comparison.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html new file mode 100644 index 00000000..e0c55ec8 --- /dev/null +++ b/doc/html/fusion/sequence/operator/comparison/equal.html @@ -0,0 +1,159 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ a, + b +

+
+

+ Instances 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>
+#include <boost/fusion/include/equal_to.hpp>
+
+
+ + Example +
+
+vector<int, char> v1(5, 'a');
+vector<int, char> v2(5, 'a');
+assert(v1 == v2);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html new file mode 100644 index 00000000..abd98ba6 --- /dev/null +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html @@ -0,0 +1,153 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ a, + b +

+
+

+ Instances 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>
+#include <boost/fusion/include/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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html new file mode 100644 index 00000000..6533dbf9 --- /dev/null +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html @@ -0,0 +1,152 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ a, + b +

+
+

+ Instances 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>
+#include <boost/fusion/include/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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html new file mode 100644 index 00000000..aa37d8ee --- /dev/null +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html @@ -0,0 +1,155 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ a, + b +

+
+

+ Instances 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>
+#include <boost/fusion/include/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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html new file mode 100644 index 00000000..d0c57fb5 --- /dev/null +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html @@ -0,0 +1,153 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ a, + b +

+
+

+ Instances 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>
+#include <boost/fusion/include/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);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html new file mode 100644 index 00000000..888c5a35 --- /dev/null +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html @@ -0,0 +1,155 @@ + + + +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 +
+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ a, + b +

+
+

+ Instances 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>
+#include <boost/fusion/include/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));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html new file mode 100644 index 00000000..57deee8e --- /dev/null +++ b/doc/html/fusion/sequence/operator/i_o.html @@ -0,0 +1,141 @@ + + + +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>
+#include <boost/fusion/include/io.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html new file mode 100644 index 00000000..f3d8bd62 --- /dev/null +++ b/doc/html/fusion/sequence/operator/i_o/in.html @@ -0,0 +1,156 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ is +

+
+

+ An input stream. +

+
+

+ Stream to extract information from. +

+
+

+ seq +

+
+

+ A 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>
+#include <boost/fusion/include/in.hpp>
+
+
+ + Example +
+
+vector<int, std::string, char> v;
+std::cin >> v;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html new file mode 100644 index 00000000..ff958594 --- /dev/null +++ b/doc/html/fusion/sequence/operator/i_o/out.html @@ -0,0 +1,155 @@ + + + +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 +
+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ os +

+
+

+ An output stream. +

+
+

+ Stream to write information to. +

+
+

+ seq +

+
+

+ A 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>
+#include <boost/fusion/include/out.hpp>
+
+
+ + Example +
+
+std::cout << make_vector(123, "Hello", 'x') << std::endl;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html new file mode 100644 index 00000000..949ca5d8 --- /dev/null +++ b/doc/html/fusion/support.html @@ -0,0 +1,55 @@ + + + +Support + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ A couple of classes and metafunctions provide basic support for Fusion. +

+
+ + + +
+
+
+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..be696fe3 --- /dev/null +++ b/doc/html/fusion/support/category_of.html @@ -0,0 +1,197 @@ + + + +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 +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T +

+
+

+ Any type +

+
+

+ The type to query. +

+
+

+ + Expression + Semantics +

+
+typedef traits::category_of<T>::type category;
+
+

+ Return type: +

+

+ For Iterators, the return type is derived from one of: +

+
+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: +

+
+namespace boost { namespace fusion
+{
+    struct incrementable_sequence_tag {};
+
+    struct single_pass_sequence_tag
+        : incrementable_sequence_tag {};
+
+    struct forward_traversal_tag
+        : single_pass_sequence_tag {};
+
+    struct bidirectional_traversal_tag
+        : forward_traversal_tag {};
+
+    struct random_access_traversal_tag
+        : bidirectional_traversal_tag {};
+}}
+
+

+ And optionally from: +

+
+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>
+#include <boost/fusion/include/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_traversal_tag, list_category> ));
+BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html new file mode 100644 index 00000000..322b1e23 --- /dev/null +++ b/doc/html/fusion/support/deduce.html @@ -0,0 +1,104 @@ + + + +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>
+#include <boost/fusion/include/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 +

+ +
+ + + +
+
+
+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..67e63b47 --- /dev/null +++ b/doc/html/fusion/support/deduce_sequence.html @@ -0,0 +1,106 @@ + + + +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>
+#include <boost/fusion/include/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 +

+ +
+ + + +
+
+
+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..c2decf52 --- /dev/null +++ b/doc/html/fusion/support/is_sequence.html @@ -0,0 +1,151 @@ + + + +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 +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/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> > ));
+
+
+ + + +
+
+
+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..b5a1b250 --- /dev/null +++ b/doc/html/fusion/support/is_view.html @@ -0,0 +1,155 @@ + + + +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 +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/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> ));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html new file mode 100644 index 00000000..4d79502a --- /dev/null +++ b/doc/html/fusion/support/pair.html @@ -0,0 +1,342 @@ + + + +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;
+
+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 +

+
++++ + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ First +

+
+

+ The first type. This is purely a type. No data is held. +

+
+

+ Second +

+
+

+ The 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 +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ P::first_type +

+
+

+ The type of the first template parameter, F, + equivalent to result_of::first<P>::type. +

+
+

+ P::second_type +

+
+

+ The type of the second template parameter, S, + equivalent to result_of::second<P>::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. +

+
+

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

+
+

+ 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. +

+
+

+ + Header +

+
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/include/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')));
+
+
+ + + +
+
+
+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..d29ac923 --- /dev/null +++ b/doc/html/fusion/support/tag_of.html @@ -0,0 +1,151 @@ + + + +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. +

+

+ This metafunction may be specialized to accomodate clients providing Fusion + conforming sequences. +

+

+ + Synopsis +

+
+namespace traits
+{
+    template<typename Sequence>
+    struct tag_of
+    {
+        typedef unspecified type;
+    };
+}
+
+

+ + Parameters +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Requirement +

+
+

+ Description +

+
+

+ T +

+
+

+ Any type +

+
+

+ The 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>
+#include <boost/fusion/include/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;
+
+BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
+BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html new file mode 100644 index 00000000..8319ff15 --- /dev/null +++ b/doc/html/fusion/tuple.html @@ -0,0 +1,69 @@ + + + +Tuple + + + + + + + + + + + + + + + +
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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html new file mode 100644 index 00000000..9a259637 --- /dev/null +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -0,0 +1,80 @@ + + + +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;
+
+

+ /tuple.hpp> +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html new file mode 100644 index 00000000..c4c70c4f --- /dev/null +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html @@ -0,0 +1,134 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html new file mode 100644 index 00000000..8d0a8a1c --- /dev/null +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -0,0 +1,99 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html new file mode 100644 index 00000000..3aec30f4 --- /dev/null +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html @@ -0,0 +1,211 @@ + + + +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). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html new file mode 100644 index 00000000..c37de3d0 --- /dev/null +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -0,0 +1,84 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html new file mode 100644 index 00000000..df0e8918 --- /dev/null +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html @@ -0,0 +1,91 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html new file mode 100644 index 00000000..dbd2bb11 --- /dev/null +++ b/doc/html/fusion/tuple/pairs.html @@ -0,0 +1,112 @@ + + + +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. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html new file mode 100644 index 00000000..3c535142 --- /dev/null +++ b/doc/html/fusion/view.html @@ -0,0 +1,69 @@ + + + +View + + + + + + + + + + + + + + + +
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/view.hpp>
+#include <boost/fusion/include/view.hpp>
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html new file mode 100644 index 00000000..eb410f4b --- /dev/null +++ b/doc/html/fusion/view/filter_view.html @@ -0,0 +1,246 @@ + + + +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/view/filter_view.hpp>
+#include <boost/fusion/include/filter_view.hpp>
+
+

+ + Synopsis +

+
+template <typename Sequence, typename Pred>
+struct filter_view;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Sequence +

+
+

+ A Forward + Sequence +

+
+

+

+
+

+ Pred +

+
+

+ Unary 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. +

+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + 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;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html new file mode 100644 index 00000000..62357d4e --- /dev/null +++ b/doc/html/fusion/view/iterator_range.html @@ -0,0 +1,261 @@ + + + +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/view/iterator_range.hpp>
+#include <boost/fusion/include/iterator_range.hpp>
+
+

+ + Synopsis +

+
+template <typename First, typename Last>
+struct iterator_range;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ First +

+
+

+ A fusion Iterator +

+
+

+

+
+

+ Last +

+
+

+ A 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. +

+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + 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;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html new file mode 100644 index 00000000..aef924a0 --- /dev/null +++ b/doc/html/fusion/view/joint_view.html @@ -0,0 +1,247 @@ + + + +joint_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ joint_view presents a view + which is a concatenation of two sequences. +

+

+ + Header +

+
+#include <boost/fusion/view/joint_view.hpp>
+#include <boost/fusion/include/joint_view.hpp>
+
+

+ + Synopsis +

+
+template <typename Sequence1, typename Sequence2>
+struct joint_view;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Sequence1 +

+
+

+ A Forward + Sequence +

+
+

+

+
+

+ Sequence2 +

+
+

+ A 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. +

+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + 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;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html new file mode 100644 index 00000000..8af6f29c --- /dev/null +++ b/doc/html/fusion/view/reverse_view.html @@ -0,0 +1,219 @@ + + + +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/view/reverse_view.hpp>
+#include <boost/fusion/include/reverse_view.hpp>
+
+

+ + Synopsis +

+
+template <typename Sequence>
+struct reverse_view;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Sequence +

+
+

+ A 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. +

+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + 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;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html new file mode 100644 index 00000000..0cad96c7 --- /dev/null +++ b/doc/html/fusion/view/single_view.html @@ -0,0 +1,211 @@ + + + +single_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ single_view is a view into + a value as a single element sequence. +

+

+ + Header +

+
+#include <boost/fusion/view/single_view.hpp>
+#include <boost/fusion/include/single_view.hpp>
+
+

+ + Synopsis +

+
+template <typename T>
+struct single_view;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ T +

+
+

+ Any 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. +

+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + Example +

+
+single_view<int> view(3);
+std::cout << view << std::endl;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html new file mode 100644 index 00000000..70434e88 --- /dev/null +++ b/doc/html/fusion/view/transform_view.html @@ -0,0 +1,382 @@ + + + +transform_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ 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 or sequences. +

+

+ + Header +

+
+#include <boost/fusion/view/transform_view.hpp>
+#include <boost/fusion/include/transform_view.hpp>
+
+

+ + Synopsis +

+

+ Unary Version +

+
+template <typename Sequence, typename F1>
+struct transform_view;
+
+

+ Binary Version +

+
+template <typename Sequence1, typename Sequence2, typename F2>
+struct transform_view;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Sequence +

+
+

+ A Forward + Sequence +

+
+

+

+
+

+ Sequence1 +

+
+

+ A Forward + Sequence +

+
+

+

+
+

+ Sequence2 +

+
+

+ A Forward + Sequence +

+
+

+

+
+

+ F1 +

+
+

+ 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. +

+
+

+

+
+

+ + Model of +

+
+
+

Notation

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

+

+ 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 or sequences. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ 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. +

+
+

+ + Example +

+
+struct square
+{
+    template<typename Sig>
+    struct result;
+
+    template<typename U>
+    struct result<square(U)>
+    : remove_reference<U>
+    {};
+
+    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;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html new file mode 100644 index 00000000..39d8d387 --- /dev/null +++ b/doc/html/fusion/view/zip_view.html @@ -0,0 +1,233 @@ + + + +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/view/zip_view.hpp>
+#include <boost/fusion/include/zip_view.hpp>
+
+

+ + Synopsis +

+
+template <typename Sequences>
+struct zip_view;
+
+

+ + Template parameters +

+
+++++ + + + + + + + + + + +
+

+ Parameter +

+
+

+ Description +

+
+

+ Default +

+
+

+ Sequences +

+
+

+ A 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. +

+
++++ + + + + + + + + + + + + + + + + + + +
+

+ 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. +

+
+

+ + 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))
+
+
+ + + +
+
+
+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..2ce13dde --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,253 @@ + + + +Chapter 1. Fusion 2.0 + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
Next
+
+
+

+Chapter 1. Fusion 2.0

+

+Joel de Guzman +

+

+Dan Marsden +

+

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

+
+
+
+

Table of Contents

+
+
Preface
+
Introduction
+
Quick Start
+
Organization
+
Support
+
+
is_sequence
+
is_view
+
tag_of
+
category_of
+
deduce
+
deduce_sequence
+
pair
+
+
Iterator
+
+
Concepts
+
+
Forward + Iterator
+
Bidirectional + Iterator
+
Random + Access Iterator
+
+
Functions
+
+
deref
+
next
+
prior
+
distance
+
advance
+
advance_c
+
+
Operator
+
+
Operator + *
+
Operator + ==
+
Operator + !=
+
+
Metafunctions
+
+
value_of
+
deref
+
next
+
prior
+
equal_to
+
distance
+
advance
+
advance_c
+
+
+
Sequence
+
+
Concepts
+
+
Forward + Sequence
+
Bidirectional + Sequence
+
Random + Access Sequence
+
Associative + Sequence
+
+
Intrinsic
+
+
Functions
+
Metafunctions
+
+
Operator
+
+
I/O
+
Comparison
+
+
+
Container
+
+
vector
+
cons
+
list
+
set
+
map
+
Generation
+
+
Functions
+
MetaFunctions
+
+
Conversion
+
+
Functions
+
Metafunctions
+
+
+
View
+
+
single_view
+
filter_view
+
iterator_range
+
joint_view
+
zip_view
+
transform_view
+
reverse_view
+
+
Adapted
+
+
std::pair
+
mpl sequence
+
boost::array
+
boost::tuple
+
boost::variant
+
+
Algorithm
+
+
Iteration
+
+
Functions
+
Metafunctions
+
+
Query
+
+
Functions
+
Metafunctions
+
+
Transformation
+
+
Functions
+
Metafunctions
+
+
+
Tuple
+
+
Class template tuple
+
+
Construction
+
Tuple + creation functions
+
Tuple + helper classes
+
Element + access
+
Relational + operators
+
+
Pairs
+
+
Extension
+
+
The Full Extension Mechanism
+
Sequence Facade
+
Iterator Facade
+
Macros
+
+
BOOST_FUSION_ADAPT_STRUCT
+
BOOST_FUSION_ADAPT_ASSOC_STRUCT
+
+
+
Functional
+
+
Concepts
+
+
Callable Object
+
Regular Callable + Object
+
Deferred + Callable Object
+
Polymorphic Function + Object
+
+
Invocation
+
+
Functions
+
Metafunctions
+
+
Adapters
+
+
fused
+
fused_procedure
+
fused_function_object
+
unfused_generic
+
unfused_lvalue_args
+
unfused_rvalue_args
+
unfused_typed
+
+
Generation
+
+
Functions
+
Metafunctions
+
+
+
Notes
+
Change log
+
Acknowledgements
+
References
+
+
+
+ + + +

Last revised: November 14, 2007 at 10:10:22 GMT

+
+
Next
+ + diff --git a/doc/introduction.qbk b/doc/introduction.qbk new file mode 100644 index 00000000..7bd7d786 --- /dev/null +++ b/doc/introduction.qbk @@ -0,0 +1,88 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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/iterator.qbk b/doc/iterator.qbk new file mode 100644 index 00000000..fb1553c6 --- /dev/null +++ b/doc/iterator.qbk @@ -0,0 +1,846 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Iterator] + +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__. + +/iterator.hpp> + +[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`. + +/iterator/deref.hpp> + +[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`. + +/iterator/next.hpp> + +[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`. + +/iterator/prior.hpp> + +[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`. + +/iterator/distance.hpp> + +[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. + +/iterator/advance.hpp> + +[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. + +/iterator/advance.hpp> + +[heading Example] + typedef __vector__ vec; + + vec v(1,2,3); + assert(__deref__(__advance_c__<2>(__begin__(v))) == 3); + +[endsect] + +[endsect] + +[section Operator] + +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)`. + +/iterator/deref.hpp> + +[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. + +/iterator/equal_to.hpp> + +[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. + +/iterator/equal_to.hpp> + +[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`. + +/iterator/value_of.hpp> + +[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`. + +/iterator/deref.hpp> + +[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`. + +/iterator/next.hpp> + +[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`. + +/iterator/prior.hpp> + +[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. + +/iterator/equal_to.hpp> + +[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`. + +/iterator/distance.hpp> + +[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. + +/iterator/advance.hpp> + +[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`. + +/iterator/advance.hpp> + +[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..e26eee6f --- /dev/null +++ b/doc/notes.qbk @@ -0,0 +1,153 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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..8b81fbfc --- /dev/null +++ b/doc/organization.qbk @@ -0,0 +1,87 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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. + +There is also a `"boost/fusion/include/"` directory that contains all the +headers to all the components and modules. If you are unsure where to +find a specific component or module, or don't want to fuss with +hierarchy and nesting, use this. + +The library is header-only. There is no need to build object files to +link against. + +[heading Directory] + +* tuple +* algorithm + * iteration + * query + * transformation +* adapted + * array + * mpl + * boost::tuple + * std_pair + * struct + * variant +* view + * filter_view + * iterator_range + * joint_view + * reverse_view + * single_view + * transform_view + * zip_view +* container + * deque + * list + * map + * set + * vector + * generation +* mpl +* functional +* sequence + * comparison + * intrinsic + * io +* 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 + #include + +The first includes all containers The second 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..5686642a --- /dev/null +++ b/doc/preface.qbk @@ -0,0 +1,75 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Preface] + +[:['["Algorithms + Data Structures = Programs.]]] +[:*--Niklaus Wirth*] + +[heading Description] + +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 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..c0d69f1e --- /dev/null +++ b/doc/quick_start.qbk @@ -0,0 +1,168 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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 + #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 + #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..5b6c21a1 --- /dev/null +++ b/doc/references.qbk @@ -0,0 +1,26 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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/sequence.qbk b/doc/sequence.qbk new file mode 100644 index 00000000..18d65191 --- /dev/null +++ b/doc/sequence.qbk @@ -0,0 +1,1825 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Sequence] + +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 + #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__ +* __zip_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__ +* __reverse_view__ +* __iterator_range__ (where adapted sequence is a Bidirectional Sequence) +* __transform_view__ (where adapted sequence is a Bidirectional Sequence) +* __zip_view__ (where adapted sequences are models Bidirectional Sequence) + +[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 __mpl_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__ +* __reverse_view__ +* __iterator_range__ (where adapted sequence is a Random Access Sequence) +* __transform_view__ (where adapted sequence is a Random Access Sequence) +* __zip_view__ (where adapted sequences are models Random Access Sequence) + +[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 Intrinsic] + +Intrinsic 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__[footnote In practice, many of intrinsic functions +have default implementations that will work in majority of cases]. + +[heading Header] + + #include + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #include + +[heading Example] + + __set__ s(1, 'x', true); + assert(at_key(s) == 'x'); + +[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`. + +/sequence/intrinsic/swap.hpp> + +[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] + +[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`. + +/sequence/intrinsic/begin.hpp> + +[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`. + +/sequence/intrinsic/end.hpp> + +[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. + +/sequence/intrinsic/empty.hpp> + +[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`. + +/sequence/intrinsic/front.hpp> + +[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`. + +/sequence/intrinsic/back.hpp> + +[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`. + +/sequence/intrinsic/size.hpp> + +[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`. + +/sequence/intrinsic/at.hpp> + +[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`. + +/sequence/intrinsic/at.hpp> + +[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`. + +/sequence/intrinsic/value_at.hpp> + +[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`. + +/sequence/intrinsic/value_at.hpp> + +[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. + +/sequence/intrinsic/has_key.hpp> + +[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`. + +/sequence/intrinsic/at_key.hpp> + +[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`. + +/sequence/intrinsic/value_at_key.hpp> + +[heading Example] + typedef __map__<__pair__, __pair__, __pair__ > mymap; + BOOST_MPL_ASSERT((boost::is_same<__result_of_at_key__::type, char>)); + +[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`. + +/sequence/intrinsic/swap.hpp> + +[endsect] + +[endsect] + +[endsect] + +[section Operator] + +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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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 + #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..0c078efa --- /dev/null +++ b/doc/support.qbk @@ -0,0 +1,441 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[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 + #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 + #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. + +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 + #include + +[heading Example] + + 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)); + +[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: + + 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: + + namespace boost { namespace fusion + { + struct incrementable_sequence_tag {}; + + struct single_pass_sequence_tag + : incrementable_sequence_tag {}; + + struct forward_traversal_tag + : single_pass_sequence_tag {}; + + struct bidirectional_traversal_tag + : forward_traversal_tag {}; + + struct random_access_traversal_tag + : bidirectional_traversal_tag {}; + }} + +And optionally from: + + namespace boost { namespace fusion + { + struct associative_sequence_tag {}; + }} + +[*Semantics]: Establishes the conceptual classification of a particular +__sequence__ or __iterator__. + +[heading Header] + + #include + #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 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 + #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 + #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] + +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; + + 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 + [[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`, 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`.]] + [[`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 + #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/tuple.qbk b/doc/tuple.qbk new file mode 100644 index 00000000..97a0aa46 --- /dev/null +++ b/doc/tuple.qbk @@ -0,0 +1,271 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section Tuple] + +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; + +/tuple.hpp> + +[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/doc/view.qbk b/doc/view.qbk new file mode 100644 index 00000000..8c614937 --- /dev/null +++ b/doc/view.qbk @@ -0,0 +1,476 @@ +[/============================================================================== + Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +===============================================================================/] +[section View] + +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 + #include + +[section single_view] + +`single_view` is a view into a value as a single element sequence. + +[heading Header] + + #include + #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 + #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 + #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__, __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]] + [[`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 + #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 + #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__, __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]] + [[`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] + +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] + + #include + #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__] []] + [[`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] + +* __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]] + [[`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`]] +] + +[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 or sequences. + +[table + [[Expression] [Semantics]] + [[`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`.]] +] + +[heading Example] + + struct square + { + template + struct result; + + template + struct result + : remove_reference + {}; + + 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 + #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] diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp new file mode 100644 index 00000000..33772383 --- /dev/null +++ b/example/cookbook/do_the_bind.cpp @@ -0,0 +1,237 @@ +/*============================================================================= + 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 + +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::_; + + // 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; + + template + struct result< Self (T) > + : 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 + { + typedef typename traits::deduce_sequence::type bound_args; + + bound_args fsq_bind_args; + public: + + fused_bound_function(BindArgs const & bind_args) + : fsq_bind_args(bind_args) + { } + + template + struct result; + + template + struct result_impl + : result_of::invoke< typename result_of::front::type, + typename result_of::transform< + typename result_of::pop_front::type, + argument_transform const + >::type + > + { }; + + template + struct result< Self (FinalArgs) > + : result_impl< typename boost::remove_reference::type > + { }; + + template + inline typename result_impl::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; + + template + struct result_impl + { + // We have to transform the arguments so they are held by-value + // in the returned function. + typedef fusion::unfused_generic< + fused_bound_function > type; + }; + + template + struct result< Self (BindArgs) > + : result_impl< typename boost::remove_reference::type > + { }; + + template + inline typename result_impl< BindArgs >::type + operator()(BindArgs & bind_args) const + { + return typename result< void(BindArgs) >::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; +} + diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp new file mode 100644 index 00000000..69576612 --- /dev/null +++ b/example/cookbook/fill_em_up.cpp @@ -0,0 +1,105 @@ +/*============================================================================= + Copyright (c) 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) + + 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 constructed. + + 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. + + Of course you want to be able to handle any type of I and R. + +==============================================================================*/ + +// We'll use these containers as examples +#include +#include + +// For doing I/O +#include + +// We'll use join and advance for processing +#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, 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 + // 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 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: + std::cout << r << std::endl; + + return 0; +} + diff --git a/example/extension/Jamfile b/example/extension/Jamfile new file mode 100644 index 00000000..aabe8302 --- /dev/null +++ b/example/extension/Jamfile @@ -0,0 +1,20 @@ +#============================================================================== +# 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 : : : : ] + [ run triple.cpp : : : : ] + ; +} + diff --git a/example/extension/detail/advance_impl.hpp b/example/extension/detail/advance_impl.hpp new file mode 100644 index 00000000..3d3691b2 --- /dev/null +++ b/example/extension/detail/advance_impl.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + 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_ADVANCE_IMPL_20060222_2150) +#define BOOST_FUSION_ADVANCE_IMPL_20060222_2150 + +namespace example +{ + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; +} + +namespace boost { namespace fusion { + + 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::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..c65650d1 --- /dev/null +++ b/example/extension/detail/at_impl.hpp @@ -0,0 +1,67 @@ +/*============================================================================= + 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_AT_IMPL_20060223_2017) +#define BOOST_FUSION_AT_IMPL_20060223_2017 + +#include +#include +#include +#include + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + 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..0af810e1 --- /dev/null +++ b/example/extension/detail/at_key_impl.hpp @@ -0,0 +1,72 @@ +/*============================================================================= + 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_AT_KEY_IMPL_20060223_2017) +#define BOOST_FUSION_AT_KEY_IMPL_20060223_2017 + +#include +#include +#include + +namespace fields +{ + struct name; + struct age; +} + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + 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..3e1f0802 --- /dev/null +++ b/example/extension/detail/begin_impl.hpp @@ -0,0 +1,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 + 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 example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + namespace extension + { + template + struct begin_impl; + + template<> + struct begin_impl + { + template + struct apply + { + typedef example::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..bbc8fe64 --- /dev/null +++ b/example/extension/detail/category_of_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + 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_CATEGORY_OF_IMPL_20060223_2037) +#define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037 + +#include + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + namespace extension + { + template<> + struct category_of_impl + { + template + struct apply + { + struct type : random_access_traversal_tag, associative_sequence_tag {}; + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/deref_impl.hpp b/example/extension/detail/deref_impl.hpp new file mode 100644 index 00000000..a65a7fae --- /dev/null +++ b/example/extension/detail/deref_impl.hpp @@ -0,0 +1,67 @@ +/*============================================================================= + 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_DEREF_IMPL_20060222_1952) +#define BOOST_FUSION_DEREF_IMPL_20060222_1952 + +#include +#include +#include + +#include + +namespace example +{ + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; +} + +namespace boost { namespace fusion { + + 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::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::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..5768ec5e --- /dev/null +++ b/example/extension/detail/distance_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + 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_DISTANCE_IMPL_20060223_0814) +#define BOOST_FUSION_DISTANCE_IMPL_20060223_0814 + +#include + +namespace example +{ + struct example_struct_iterator_tag; +} + +namespace boost { namespace fusion { + + 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..789e7c1b --- /dev/null +++ b/example/extension/detail/end_impl.hpp @@ -0,0 +1,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 + 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 example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + namespace extension + { + template + struct end_impl; + + template<> + struct end_impl + { + template + struct apply + { + typedef example::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..d5decf35 --- /dev/null +++ b/example/extension/detail/equal_to_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + 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_EQUAL_TO_IMPL_20060223_1941) +#define BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941 + +#include + +namespace example +{ + struct example_struct_iterator_tag; +} + +namespace boost { namespace fusion { + + 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..20c663d7 --- /dev/null +++ b/example/extension/detail/has_key_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(BOOST_FUSION_HAS_KEY_IMPL_20060223_2156) +#define BOOST_FUSION_HAS_KEY_IMPL_20060223_2156 + +#include +#include + +namespace fields +{ + struct name; + struct age; +} + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + 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_sequence_impl.hpp b/example/extension/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..e15c08a0 --- /dev/null +++ b/example/extension/detail/is_sequence_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + 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_IS_SEQUENCE_IMPL_20060228_1946) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946 + +#include + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion +{ + 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..a9b05657 --- /dev/null +++ b/example/extension/detail/is_view_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + 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_IS_VIEW_IMPL_200604227_2150) +#define BOOST_FUSION_IS_VIEW_IMPL_200604227_2150 + +#include + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion +{ + 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..b8aa3f0d --- /dev/null +++ b/example/extension/detail/next_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + 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_NEXT_IMPL_20060222_1859) +#define BOOST_FUSION_NEXT_IMPL_20060222_1859 + +namespace example +{ + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; +} + +namespace boost { namespace fusion { + + 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::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..3577485a --- /dev/null +++ b/example/extension/detail/prior_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + 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_PRIOR_IMPL_20060222_1944) +#define BOOST_FUSION_PRIOR_IMPL_20060222_1944 + +namespace example +{ + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; +} + +namespace boost { namespace fusion { + + 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::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..877b4847 --- /dev/null +++ b/example/extension/detail/size_impl.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + 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_SIZE_IMPL_20060223_2033) +#define BOOST_FUSION_SIZE_IMPL_20060223_2033 + +#include + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + 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..f2599dfd --- /dev/null +++ b/example/extension/detail/value_at_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + 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_VALUE_AT_IMPL_20060223_2025) +#define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025 + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + 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..e30ba9ba --- /dev/null +++ b/example/extension/detail/value_at_key_impl.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + 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_VALUE_AT_KEY_IMPL_20060223_2025) +#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025 + +namespace fields +{ + struct name; + struct age; +} + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + + 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..2d0b78aa --- /dev/null +++ b/example/extension/detail/value_of_impl.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + 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_VALUE_OF_IMPL_20060223_1905) +#define BOOST_FUSION_VALUE_OF_IMPL_20060223_1905 + +#include + +namespace example +{ + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; +} + +namespace boost { namespace fusion { + + 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..73e52d39 --- /dev/null +++ b/example/extension/example_struct.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + 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_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_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..064c0d74 --- /dev/null +++ b/example/extension/example_struct_iterator.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + 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_EXAMPLE_STRUCT_ITERATOR) +#define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR + +#include +#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 example +{ + struct example_struct_iterator_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 + : boost::fusion::iterator_base > + { + BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); + typedef Struct struct_type; + 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/example_struct_type.hpp b/example/extension/example_struct_type.hpp new file mode 100644 index 00000000..0e8abdfb --- /dev/null +++ b/example/extension/example_struct_type.hpp @@ -0,0 +1,27 @@ +/*============================================================================= + 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_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..55777bab --- /dev/null +++ b/example/extension/tag_of.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + 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_20060222_2052) +#define BOOST_FUSION_TAG_OF_20060222_2052 + +#include +#include "./example_struct_type.hpp" + +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { + +namespace traits { + + template<> + struct tag_of + { + typedef example::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..264d1854 --- /dev/null +++ b/example/extension/test_example.cpp @@ -0,0 +1,62 @@ +/*============================================================================= + 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 "./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_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); + 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); + + return boost::report_errors(); +} diff --git a/example/extension/triple.cpp b/example/extension/triple.cpp new file mode 100644 index 00000000..ee247439 --- /dev/null +++ b/example/extension/triple.cpp @@ -0,0 +1,319 @@ +/*============================================================================= + 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) +==============================================================================*/ + +/*============================================================================= + An implementation of a std::pair like triple + We use fusion::sequence_facade and fusion::iterator_facade + to make our triple a fully conforming Boost.Fusion random + traversal sequence. +==============================================================================*/ + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include + +namespace mpl = boost::mpl; +namespace fusion = boost::fusion; + +namespace demo +{ + template + struct triple_iterator + : fusion::iterator_facade, fusion::random_access_traversal_tag> + { + typedef mpl::int_ index; + typedef Seq sequence_type; + + triple_iterator(Seq& seq) + : seq_(seq) {} + + Seq& seq_; + + template + struct value_of; + + template + struct value_of > + : mpl::identity + {}; + + template + struct value_of > + : mpl::identity + {}; + + template + struct value_of > + : mpl::identity + {}; + + template + struct deref; + + template + struct deref > + { + typedef typename + mpl::if_< + boost::is_const + , typename Sq::t0_type const& + , typename Sq::t0_type& + >::type + type; + + static type + call(triple_iterator const& iter) + { + return iter.seq_.t0; + } + }; + + template + struct deref > + { + typedef typename + mpl::if_< + boost::is_const + , typename Sq::t1_type const& + , typename Sq::t1_type& + >::type + type; + + static type + call(triple_iterator const& iter) + { + return iter.seq_.t1; + } + }; + + template + struct deref > + { + typedef typename + mpl::if_< + boost::is_const + , typename Sq::t2_type const& + , typename Sq::t2_type& + >::type + type; + + static type + call(triple_iterator const& iter) + { + return iter.seq_.t2; + } + }; + + template + struct next + { + typedef triple_iterator< + typename It::sequence_type, It::index::value + 1> type; + + static type call(It const& it) + { + return type(it.seq_); + } + }; + + template + struct prior + { + typedef triple_iterator< + typename It::sequence_type, It::index::value - 1> type; + + static type call(It const& it) + { + return type(it.seq_); + } + }; + + template + struct distance + { + typedef typename mpl::minus::type type; + + static type call(It1 const& it1, It2 const& it2) + { + return type(); + } + }; + + template + struct advance + { + typedef triple_iterator< + typename It::sequence_type, + It::index::value + M::value> type; + + static type call(It const& it) + { + return type(it.seq_); + } + }; + }; + + template + struct triple + : fusion::sequence_facade, fusion::random_access_traversal_tag> + { + triple(T0 const& t0, T1 const& t1, T2 const& t2) + : t0(t0), t1(t1), t2(t2) + {} + + template + struct begin + { + typedef demo::triple_iterator< + Sq, 0> type; + + static type call(Sq& sq) + { + return type(sq); + } + }; + + template + struct end + { + typedef demo::triple_iterator< + Sq, 3> type; + + static type call(Sq& sq) + { + return type(sq); + } + }; + + template + struct size + : mpl::int_<3> + {}; + + template + struct value_at + : value_at > + {}; + + template + struct value_at > + { + typedef typename Sq::t0_type type; + }; + + template + struct value_at > + { + typedef typename Sq::t1_type type; + }; + + template + struct value_at > + { + typedef typename Sq::t2_type type; + }; + + template + struct at + : at > + {}; + + template + struct at > + { + typedef typename + mpl::if_< + boost::is_const + , typename Sq::t0_type const& + , typename Sq::t0_type& + >::type + type; + + static type call(Sq& sq) + { + return sq.t0; + } + }; + + template + struct at > + { + typedef typename + mpl::if_< + boost::is_const + , typename Sq::t1_type const& + , typename Sq::t1_type& + >::type + type; + + static type call(Sq& sq) + { + return sq.t1; + } + }; + + template + struct at > + { + typedef typename + mpl::if_< + boost::is_const + , typename Sq::t2_type const& + , typename Sq::t2_type& + >::type + type; + + static type call(Sq& sq) + { + return sq.t2; + } + }; + + typedef T0 t0_type; + typedef T1 t1_type; + typedef T2 t2_type; + + T0 t0; + T1 t1; + T2 t2; + }; +} + +int main() +{ + typedef demo::triple my_triple; + my_triple t(101, 'a', "hello"); + BOOST_TEST(*fusion::begin(t) == 101); + BOOST_TEST(*fusion::next(fusion::begin(t)) == 'a'); + BOOST_TEST(*fusion::prior(fusion::end(t)) == "hello"); + BOOST_TEST(fusion::distance(fusion::begin(t), fusion::end(t)) == 3); + BOOST_TEST(fusion::size(t) == 3); + BOOST_MPL_ASSERT((boost::is_same::type>)); + BOOST_MPL_ASSERT((boost::is_same::type>)); + BOOST_MPL_ASSERT((boost::is_same::type>)); + BOOST_TEST(fusion::at_c<0>(t) == 101); + BOOST_TEST(fusion::at_c<1>(t) == 'a'); + BOOST_TEST(fusion::at_c<2>(t) == "hello"); + return boost::report_errors(); +} diff --git a/example/performance/Jamfile b/example/performance/Jamfile new file mode 100644 index 00000000..3b8c8ffc --- /dev/null +++ b/example/performance/Jamfile @@ -0,0 +1,20 @@ +#============================================================================== +# 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 ; + +exe sequence_efficiency : sequence_efficiency.cpp ; + +exe functional : functional.cpp ; + diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp new file mode 100644 index 00000000..45aa1a11 --- /dev/null +++ b/example/performance/accumulate.cpp @@ -0,0 +1,357 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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 +{ + 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; + + template + struct result + : boost::remove_reference + {}; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs + rhs; + } + }; + + struct poly_mult + { + template + struct result; + + template + struct result + : boost::remove_reference + {}; + + 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/functional.cpp b/example/performance/functional.cpp new file mode 100644 index 00000000..e16d764d --- /dev/null +++ b/example/performance/functional.cpp @@ -0,0 +1,305 @@ +/*============================================================================= + 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()); + } + + typedef int result_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; + } + + typedef int result_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; + } + + typedef int result_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; + } + { + 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; + } + { + 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; +} diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp new file mode 100644 index 00000000..9b9937eb --- /dev/null +++ b/example/performance/inner_product.cpp @@ -0,0 +1,184 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#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; + + template + struct result + : boost::remove_reference + {}; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs + rhs; + } + }; + + struct poly_mult + { + template + struct result; + + template + struct result + : boost::remove_reference + {}; + + 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..3e952c07 --- /dev/null +++ b/example/performance/inner_product2.cpp @@ -0,0 +1,206 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#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; + + template + struct result + : boost::remove_reference + {}; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs + rhs; + } + }; + + struct poly_mult + { + template + struct result; + + template + struct result + : boost::remove_reference + {}; + + 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; + + template + struct result + : boost::remove_reference + {}; + + 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; +} diff --git a/example/performance/measure.hpp b/example/performance/measure.hpp new file mode 100644 index 00000000..72cd71ba --- /dev/null +++ b/example/performance/measure.hpp @@ -0,0 +1,85 @@ +// 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) + +#if !defined(LIVE_CODE_TYPE) +# define LIVE_CODE_TYPE int +#endif + +#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. + LIVE_CODE_TYPE 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..28b5ec82 --- /dev/null +++ b/example/performance/sequence_efficiency.cpp @@ -0,0 +1,248 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include "measure.hpp" + +#define FUSION_MAX_LIST_SIZE 30 +#define FUSION_MAX_VECTOR_SIZE 30 + +#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 + +// 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 + { + template + struct result; + + template + struct result + : boost::remove_reference + {}; + + 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; + }; + + // 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) + { + test::measure >(seq, 1); + std::cout << info << test::live_code << std::endl; + } + + template + void measure(T const& seq, char const* info, long const repeats, double base) + { + double t = test::measure >(seq, repeats); + std::cout + << info + << t + << " (" << int((t/base)*100) << "%)" + << 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 +// 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 boost::fusion; + std::cout.setf(std::ios::scientific); + + vector< + int, int, int + > + vsmall(BOOST_PP_ENUM(3, INIT, _)); + + list< + int, int, int + > + lsmall(BOOST_PP_ENUM(3, INIT, _)); + + vector< + int, int, int, int, int, int, int, int, int, int + > + vmedium(BOOST_PP_ENUM(10, INIT, _)); + + list< + int, int, int, int, int, int, int, int, int, int + > + 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(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(30, INIT, _)); + + // 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 >(0, 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(); + } + + 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: "); + check(lmedium, "medium list accumulated result: "); + check(vbig, "big vector accumulated result: "); + check(lbig, "big list accumulated result: "); + + 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); + + // 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; +} diff --git a/example/performance/timings.txt b/example/performance/timings.txt new file mode 100644 index 00000000..35549170 --- /dev/null +++ b/example/performance/timings.txt @@ -0,0 +1,57 @@ +=============================================================================== +Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +=============================================================================== + +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.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: 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) + + 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.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..36ded283 --- /dev/null +++ b/example/performance/zip_efficiency.cpp @@ -0,0 +1,155 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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; +} diff --git a/index.html b/index.html new file mode 100644 index 00000000..1eb81150 --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + + Automatic redirection failed, click this + 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 diff --git a/test/Jamfile b/test/Jamfile new file mode 100644 index 00000000..f70629b8 --- /dev/null +++ b/test/Jamfile @@ -0,0 +1,147 @@ +##============================================================================== +# 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 algorithm/zip2.cpp : : : : ] + [ run algorithm/zip_ignore.cpp : : : : ] + + [ run sequence/as_list.cpp : : : : ] + [ 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 : : : : ] + [ 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/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 : : : : ] + [ run sequence/map_tie.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/variant.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/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 : : : : ] + [ run sequence/zip_view_ignore.cpp : : : : ] + [ 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 : : : : ] + [ 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 : : : : ] + [ run sequence/swap.cpp : : : : ] + +# [ compile-fail xxx.cpp : : : : ] + + ; +} + +{ + # 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/all.cpp b/test/algorithm/all.cpp new file mode 100644 index 00000000..47c65e50 --- /dev/null +++ b/test/algorithm/all.cpp @@ -0,0 +1,58 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#include +#include +#include +#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() +{ + { + 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; + // 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 new file mode 100644 index 00000000..69f114f8 --- /dev/null +++ b/test/algorithm/any.cpp @@ -0,0 +1,57 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#include +#include +#include +#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() +{ + { + 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; + // 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/clear.cpp b/test/algorithm/clear.cpp new file mode 100644 index 00000000..9122af2c --- /dev/null +++ b/test/algorithm/clear.cpp @@ -0,0 +1,45 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..e87ff9d8 --- /dev/null +++ b/test/algorithm/count.cpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#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..d67e464c --- /dev/null +++ b/test/algorithm/count_if.cpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include +#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; + // 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(); +} + diff --git a/test/algorithm/erase.cpp b/test/algorithm/erase.cpp new file mode 100644 index 00000000..310c7260 --- /dev/null +++ b/test/algorithm/erase.cpp @@ -0,0 +1,63 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..56c64780 --- /dev/null +++ b/test/algorithm/erase_key.cpp @@ -0,0 +1,74 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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/ext_/find_if_s.cpp b/test/algorithm/ext_/find_if_s.cpp new file mode 100755 index 00000000..7f33ea45 --- /dev/null +++ b/test/algorithm/ext_/find_if_s.cpp @@ -0,0 +1,109 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..63ffed2c --- /dev/null +++ b/test/algorithm/ext_/for_each_s.cpp @@ -0,0 +1,82 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman, Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#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/algorithm/filter.cpp b/test/algorithm/filter.cpp new file mode 100644 index 00000000..5bca82bf --- /dev/null +++ b/test/algorithm/filter.cpp @@ -0,0 +1,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 + 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..f5f1b190 --- /dev/null +++ b/test/algorithm/filter_if.cpp @@ -0,0 +1,77 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..25a61e94 --- /dev/null +++ b/test/algorithm/find.cpp @@ -0,0 +1,79 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..2b402b9f --- /dev/null +++ b/test/algorithm/find_if.cpp @@ -0,0 +1,69 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..a890da67 --- /dev/null +++ b/test/algorithm/fold.cpp @@ -0,0 +1,222 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#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; + + template + struct result + { + typedef typename boost::remove_const< + typename boost::remove_reference::type>::type 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; + + 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 + , state + >::type + type; + }; + + template + typename result::type + operator()(T const&, CountT const&) const + { + typedef typename result::type result; + return result(); + } +}; + +struct appender +{ + typedef std::string result_type; + + std::string operator()(char c, std::string const& str) const + { + return str + c; + } +}; + +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 add(int lhs, int rhs) +{ + return lhs + rhs; +} + +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); + } + + { + BOOST_TEST(fusion::fold(fusion::make_vector('a','b','c','d','e'), std::string(""), appender()) + == "abcde"); + } + + { + vector vec(1,2); + 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); + 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); + } + + { + BOOST_TEST(fusion::accumulate(fusion::make_vector('a','b','c','d','e'), std::string(""), appender()) + == "abcde"); + } + + { + vector vec(1,2); + BOOST_TEST(fusion::accumulate(vec, 0, add) == 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..a0054fad --- /dev/null +++ b/test/algorithm/for_each.cpp @@ -0,0 +1,61 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..a489d630 --- /dev/null +++ b/test/algorithm/insert.cpp @@ -0,0 +1,67 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..f4dccb05 --- /dev/null +++ b/test/algorithm/insert_range.cpp @@ -0,0 +1,71 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..186876fb --- /dev/null +++ b/test/algorithm/join.cpp @@ -0,0 +1,28 @@ +/*============================================================================= + 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 + +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..ec5676b6 --- /dev/null +++ b/test/algorithm/none.cpp @@ -0,0 +1,58 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#include +#include +#include +#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() +{ + { + 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; + // 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(); +} + diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp new file mode 100644 index 00000000..3bd98248 --- /dev/null +++ b/test/algorithm/pop_back.cpp @@ -0,0 +1,46 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..1d187592 --- /dev/null +++ b/test/algorithm/pop_front.cpp @@ -0,0 +1,46 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..420ca3c4 --- /dev/null +++ b/test/algorithm/push_back.cpp @@ -0,0 +1,72 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..380ddc0c --- /dev/null +++ b/test/algorithm/push_front.cpp @@ -0,0 +1,55 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..479ed56a --- /dev/null +++ b/test/algorithm/remove.cpp @@ -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) +==============================================================================*/ +#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..aa7250d3 --- /dev/null +++ b/test/algorithm/remove_if.cpp @@ -0,0 +1,78 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..11525220 --- /dev/null +++ b/test/algorithm/replace.cpp @@ -0,0 +1,49 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..322c3028 --- /dev/null +++ b/test/algorithm/replace_if.cpp @@ -0,0 +1,52 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..3c06d21a --- /dev/null +++ b/test/algorithm/reverse.cpp @@ -0,0 +1,49 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..fac0c92a --- /dev/null +++ b/test/algorithm/transform.cpp @@ -0,0 +1,157 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct square +{ + template + struct result; + + template + struct result + { + typedef int type; + }; + + template + int operator()(T x) const + { + return x * x; + } +}; + +struct add +{ + template + struct result; + + template + struct result + { + typedef int type; + }; + + template + int operator()(A a, B b) const + { + return a + b; + } +}; + +struct unary_lvalue_transform +{ + template + struct result; + + template + struct result + { + typedef T* type; + }; + + template + T* operator()(T& t) const + { + return &t; + } +}; + +int twice(int v) +{ + return v*2; +} + +struct binary_lvalue_transform +{ + template + struct result; + + template + struct result + { + typedef T0* type; + }; + + template + T0* operator()(T0& t0, T1&) const + { + return &t0; + } +}; + +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))); + } + + { + // 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)); + } + + { + vector tup1(1, 2, 3); + BOOST_TEST(transform(tup1, twice) == make_vector(2,4,6)); + } + + + return boost::report_errors(); +} + diff --git a/test/algorithm/zip.cpp b/test/algorithm/zip.cpp new file mode 100644 index 00000000..df7eb599 --- /dev/null +++ b/test/algorithm/zip.cpp @@ -0,0 +1,30 @@ +/*============================================================================= + 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 + +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/algorithm/zip2.cpp b/test/algorithm/zip2.cpp new file mode 100644 index 00000000..c8007117 --- /dev/null +++ b/test/algorithm/zip2.cpp @@ -0,0 +1,30 @@ +/*============================================================================= + 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 + +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(); +} diff --git a/test/algorithm/zip_ignore.cpp b/test/algorithm/zip_ignore.cpp new file mode 100644 index 00000000..a12b5820 --- /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(); +} diff --git a/test/functional/fused.cpp b/test/functional/fused.cpp new file mode 100644 index 00000000..e2c89395 --- /dev/null +++ b/test/functional/fused.cpp @@ -0,0 +1,97 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +namespace fusion = boost::fusion; +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; + + 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); + 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..c8d4c590 --- /dev/null +++ b/test/functional/fused_function_object.cpp @@ -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). +==============================================================================*/ + +#include +#include + +#include +#include + +#include +#include + +namespace fusion = boost::fusion; +using boost::noncopyable; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(T0, T1) > + { + 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..57443c20 --- /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..3960af17 --- /dev/null +++ b/test/functional/invoke.cpp @@ -0,0 +1,394 @@ +/*============================================================================= + 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 +{ + // Handle nullary separately to exercise result_of support + template + struct result; + + template + struct result< Self(T0) > + { + typedef int type; + }; + + template + struct result< Self(T0, T1) > + { + typedef int type; + }; + + template + struct result< Self(T0, T1, T2) > + { + typedef int type; + }; + + 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 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< Self(T0)> + { + 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 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 + + nullary_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))); + + 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))); + + // 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::is_same; + + 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 )); +// disabled until boost::result_of supports it +// BOOST_TEST(( is_same< +// fusion::result_of::invoke >::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_function_object.cpp b/test/functional/invoke_function_object.cpp new file mode 100644 index 00000000..5f08f650 --- /dev/null +++ b/test/functional/invoke_function_object.cpp @@ -0,0 +1,234 @@ +/*============================================================================= + 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 +{ + // Handle nullary separately to exercise result_of support + template + struct result; + + template + struct result< Self(T0) > + { + typedef int type; + }; + + template + struct result< Self(T0, T1) > + { + typedef int type; + }; + + template + struct result< Self(T0, T1, T2) > + { + 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 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< Self(T0) > + { + 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; } +}; + + +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 + + 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))); + + 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))); +} + +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< 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 )); +} + + +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..810cb903 --- /dev/null +++ b/test/functional/invoke_procedure.cpp @@ -0,0 +1,284 @@ +/*============================================================================= + 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 + +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>()); +} + +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(); +} + diff --git a/test/functional/make_fused.cpp b/test/functional/make_fused.cpp new file mode 100644 index 00000000..aab7928a --- /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..dec2411a --- /dev/null +++ b/test/functional/make_fused_function_object.cpp @@ -0,0 +1,95 @@ +/*============================================================================= + 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 + { + }; + + + template + struct result< Self(T0, T1) > + { + 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..754c17bc --- /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..4dcc7449 --- /dev/null +++ b/test/functional/make_unfused_generic.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; + + template + struct result< Self(Seq &) > + : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, + boost::blank, mpl::identity >::type + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template < typename Seq > + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T const & elem, long value) const + { + return value + sizeof(T) * elem; + } + + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value; + } + }; +}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +int main() +{ + test_func<> f; + test_func f_nc; + + fusion::result_of::make_unfused_generic< test_func<> >::type unfused_func = + fusion::make_unfused_generic(f); + + fusion::result_of::make_unfused_generic< boost::reference_wrapper< + test_func > >::type unfused_func_ref = + fusion::make_unfused_generic(ref(f_nc)); + + fusion::result_of::make_unfused_generic< boost::reference_wrapper< + test_func const> >::type unfused_func_c_ref = + fusion::make_unfused_generic(cref(f_nc)); + + BOOST_TEST(unfused_func() == 100); + BOOST_TEST(const_(unfused_func)() == 0); + BOOST_TEST(unfused_func_ref() == 100); + BOOST_TEST(unfused_func_c_ref() == 0); + + long lvalue = 12; + static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); + BOOST_TEST(unfused_func(lvalue,lvalue,1,2l,'\007') == 100 + expected); + BOOST_TEST(lvalue == 12 + 2*sizeof(long)); + BOOST_TEST(const_(unfused_func)(lvalue,lvalue,1,2l,'\007') == 0 + expected); + BOOST_TEST(lvalue == 12 + 4*sizeof(long)); + BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); + BOOST_TEST(lvalue == 12 + 6*sizeof(long)); + BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); + BOOST_TEST(lvalue == 12 + 8*sizeof(long)); + + return boost::report_errors(); +} + diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused_lvalue_args.cpp new file mode 100644 index 00000000..af94256c --- /dev/null +++ b/test/functional/make_unfused_lvalue_args.cpp @@ -0,0 +1,126 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include + +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; + +using boost::noncopyable; +typedef mpl::true_ no_nullary_call; + +using boost::ref; +using boost::cref; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(Seq &) > + : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, + boost::blank, mpl::identity >::type + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template < typename Seq > + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value + elem; + } + }; +}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +int main() +{ + test_func<> f; + test_func f_nc; + + fusion::result_of::make_unfused_lvalue_args< test_func<> >::type unfused_func = + fusion::make_unfused_lvalue_args(f); + + fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< + test_func > >::type unfused_func_ref = + fusion::make_unfused_lvalue_args(ref(f_nc)); + + fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< + test_func const> >::type unfused_func_c_ref = + fusion::make_unfused_lvalue_args(cref(f_nc)); + + BOOST_TEST(unfused_func() == 100); + BOOST_TEST(const_(unfused_func)() == 0); + BOOST_TEST(unfused_func_ref() == 100); + BOOST_TEST(unfused_func_c_ref() == 0); + + long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; + long expected; + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); + BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(const_(unfused_func)(lv1,lv2,lv3) == 0 + expected); + BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); + BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); + BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); + + return boost::report_errors(); +} + diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp new file mode 100644 index 00000000..383fcc0b --- /dev/null +++ b/test/functional/make_unfused_rvalue_args.cpp @@ -0,0 +1,110 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; + +using boost::noncopyable; +typedef mpl::true_ no_nullary_call; + +using boost::ref; +using boost::cref; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(Seq &) > + : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, + boost::blank, mpl::identity >::type + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template < typename Seq > + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T const & elem, long value) const + { + return value + sizeof(T) * elem; + } + }; +}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +int main() +{ + test_func<> f; + test_func f_nc; + + fusion::result_of::make_unfused_rvalue_args< test_func<> >::type unfused_func = + fusion::make_unfused_rvalue_args(f); + + fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< + test_func > >::type unfused_func_ref = + fusion::make_unfused_rvalue_args(ref(f_nc)); + + fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< + test_func const> >::type unfused_func_c_ref = + fusion::make_unfused_rvalue_args(cref(f_nc)); + + BOOST_TEST(unfused_func() == 100); + BOOST_TEST(const_(unfused_func)() == 0); + BOOST_TEST(unfused_func_ref() == 100); + BOOST_TEST(unfused_func_c_ref() == 0); + + static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); + BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); + BOOST_TEST(const_(unfused_func)(1,2l,'\007') == 0 + expected); + BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); + BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); + + return boost::report_errors(); +} + diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp new file mode 100644 index 00000000..f1f86515 --- /dev/null +++ b/test/functional/unfused_generic.cpp @@ -0,0 +1,126 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include + +#include +#include + +#include + +#include + +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; + +using boost::noncopyable; +typedef mpl::true_ no_nullary_call; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self (Seq) > + : mpl::identity + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + template + long operator()(T const & elem, long value) const + { + return value + sizeof(T) * elem; + } + + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value; + } + + template + struct result; + + template struct result< Self(T0,T1) > + : mpl::identity + { }; + }; +}; + +void result_type_tests() +{ + using boost::is_same; + + typedef fusion::unfused_generic< test_func<> > t; + BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); +} + +int main() +{ + result_type_tests(); + + test_func f; + fusion::unfused_generic< test_func<> > unfused_func; + fusion::unfused_generic< test_func & > unfused_func_ref(f); + fusion::unfused_generic< test_func<> const > unfused_func_c; + fusion::unfused_generic< test_func<> > const unfused_func_c2; + fusion::unfused_generic< test_func const & > unfused_func_c_ref(f); + + BOOST_TEST(unfused_func() == 100); + BOOST_TEST(unfused_func_ref() == 100); + BOOST_TEST(unfused_func_c() == 0); + BOOST_TEST(unfused_func_c2() == 0); + BOOST_TEST(unfused_func_c_ref() == 0); + + long lvalue = 12; + // also test const lvalues to pick up compiler deficiencies in that area + int const clvalue_1 = 1; + long const clvalue_2 = 2; + + static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); + BOOST_TEST(unfused_func(lvalue,lvalue,clvalue_1,clvalue_2,'\007') == 100 + expected); + BOOST_TEST(lvalue == 12 + 2*sizeof(long)); + BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); + BOOST_TEST(lvalue == 12 + 4*sizeof(long)); + BOOST_TEST(unfused_func_c(lvalue,lvalue,1,2l,'\007') == 0 + expected); + BOOST_TEST(lvalue == 12 + 6*sizeof(long)); + BOOST_TEST(unfused_func_c2(lvalue,lvalue,1,2l,'\007') == 0 + expected); + BOOST_TEST(lvalue == 12 + 8*sizeof(long)); + BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); + BOOST_TEST(lvalue == 12 + 10*sizeof(long)); + + return boost::report_errors(); +} + diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp new file mode 100644 index 00000000..e7972499 --- /dev/null +++ b/test/functional/unfused_lvalue_args.cpp @@ -0,0 +1,119 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include +#include + +#include + +#include + +#include +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; + +using boost::noncopyable; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(Seq) > + : mpl::identity + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value + elem; + } + }; +}; + +void result_type_tests() +{ + using boost::is_same; + + typedef fusion::unfused_lvalue_args< test_func<> > t; + BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); +} + +int main() +{ + result_type_tests(); + + test_func f; + fusion::unfused_lvalue_args< test_func<> > unfused_func; + fusion::unfused_lvalue_args< test_func & > unfused_func_ref(f); + fusion::unfused_lvalue_args< test_func<> const > unfused_func_c; + fusion::unfused_lvalue_args< test_func<> > const unfused_func_c2; + fusion::unfused_lvalue_args< test_func const & > unfused_func_c_ref(f); + + BOOST_TEST(unfused_func() == 100); + BOOST_TEST(unfused_func_ref() == 100); + BOOST_TEST(unfused_func_c() == 0); + BOOST_TEST(unfused_func_c2() == 0); + BOOST_TEST(unfused_func_c_ref() == 0); + + long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; + long expected; + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); + BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); + BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func_c(lv1,lv2,lv3) == 0 + expected); + BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func_c2(lv1,lv2,lv3) == 0 + expected); + BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); + + expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); + BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); + BOOST_TEST(lv1 == 2+5*sizeof(lv1) && lv2 == 3+5*sizeof(lv2) && lv3 == 7+5*sizeof(lv3)); + + return boost::report_errors(); +} + diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp new file mode 100644 index 00000000..349bf7fa --- /dev/null +++ b/test/functional/unfused_rvalue_args.cpp @@ -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). +==============================================================================*/ + +#include +#include + +#include +#include + +#include + +#include + +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; + +using boost::noncopyable; +typedef mpl::true_ no_nullary_call; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(Seq) > + : mpl::identity + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template < typename Seq > + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T const & elem, long value) const + { + return value + sizeof(T) * elem; + } + }; +}; + +void result_type_tests() +{ + using boost::is_same; + + typedef fusion::unfused_rvalue_args< test_func<> > t; + BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); +} + +int main() +{ + result_type_tests(); + + test_func f; + fusion::unfused_rvalue_args< test_func<> > unfused_func; + fusion::unfused_rvalue_args< test_func & > unfused_func_ref(f); + fusion::unfused_rvalue_args< test_func<> const > unfused_func_c; + fusion::unfused_rvalue_args< test_func<> > const unfused_func_c2; + fusion::unfused_rvalue_args< test_func const & > unfused_func_c_ref(f); + + BOOST_TEST(unfused_func() == 100); + BOOST_TEST(unfused_func_ref() == 100); + BOOST_TEST(unfused_func_c() == 0); + BOOST_TEST(unfused_func_c2() == 0); + BOOST_TEST(unfused_func_c_ref() == 0); + + static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); + BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); + BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); + BOOST_TEST(unfused_func_c(1,2l,'\007') == 0 + expected); + BOOST_TEST(unfused_func_c2(1,2l,'\007') == 0 + expected); + BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); + + return boost::report_errors(); +} + diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp new file mode 100644 index 00000000..7c5fa856 --- /dev/null +++ b/test/functional/unfused_typed.cpp @@ -0,0 +1,166 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include +#include + +#include + +#include + +#include + +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; +using mpl::placeholders::_; + +using boost::noncopyable; + +typedef fusion::vector<> types0; +typedef fusion::vector types1; +typedef fusion::vector types3; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(Seq) > + : mpl::identity + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template < typename Seq > + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T const & elem, long value) const + { + return value + sizeof(T) * elem; + } + + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value; + } + }; +}; + +void result_type_tests() +{ + using boost::is_same; + + 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 +# define BOOST_TEST_NO_VC71(cond) (void)((cond)?0:1) +#else +# define BOOST_TEST_NO_VC71(cond) BOOST_TEST(cond) +#endif + +void nullary_tests() +{ + test_func 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); + 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)); +} + +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 + 1*sizeof(lvalue)); + BOOST_TEST(unfused_func_ref(lvalue,2,'\007') == 100 + expected); + BOOST_TEST(lvalue == 1 + 2*sizeof(lvalue)); + BOOST_TEST(unfused_func_c(lvalue,2,'\007') == 0 + expected); + BOOST_TEST(lvalue == 1 + 3*sizeof(lvalue)); + BOOST_TEST(unfused_func_c2(lvalue,2,'\007') == 0 + expected); + BOOST_TEST(lvalue == 1 + 4*sizeof(lvalue)); + BOOST_TEST(unfused_func_c_ref(lvalue,2,'\007') == 0 + expected); + BOOST_TEST(lvalue == 1 + 5*sizeof(lvalue)); +} + +int main() +{ + result_type_tests(); + nullary_tests(); + unary_tests(); + ternary_tests(); + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp new file mode 100644 index 00000000..acab2b97 --- /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(); +} + diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp new file mode 100644 index 00000000..c9c1d2db --- /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_FUSION_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(); +} + diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp new file mode 100644 index 00000000..0ca5255d --- /dev/null +++ b/test/sequence/array.cpp @@ -0,0 +1,41 @@ +/*============================================================================= + 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) +==============================================================================*/ + +#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..52846d9d --- /dev/null +++ b/test/sequence/as_list.cpp @@ -0,0 +1,53 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..32e3a420 --- /dev/null +++ b/test/sequence/as_map.cpp @@ -0,0 +1,61 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..12a3641c --- /dev/null +++ b/test/sequence/as_set.cpp @@ -0,0 +1,64 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..27905de5 --- /dev/null +++ b/test/sequence/as_vector.cpp @@ -0,0 +1,54 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp new file mode 100644 index 00000000..689709f9 --- /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 + + Distributed under the Boost Software 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; + { + 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/boost_tuple.cpp b/test/sequence/boost_tuple.cpp new file mode 100644 index 00000000..07e39695 --- /dev/null +++ b/test/sequence/boost_tuple.cpp @@ -0,0 +1,90 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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(); +} + diff --git a/test/sequence/comparison.hpp b/test/sequence/comparison.hpp new file mode 100644 index 00000000..429c93c6 --- /dev/null +++ b/test/sequence/comparison.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + 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 + 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..3bd6437f --- /dev/null +++ b/test/sequence/cons.cpp @@ -0,0 +1,87 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#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..d5c56664 --- /dev/null +++ b/test/sequence/construction.hpp @@ -0,0 +1,117 @@ +/*============================================================================= + 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 + 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 + +namespace test_detail +{ + // 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; + using namespace test_detail; + + nil empty; + + FUSION_SEQUENCE<> empty0; + + FUSION_SEQUENCE<> empty1(empty); + + 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..96edbc45 --- /dev/null +++ b/test/sequence/copy.hpp @@ -0,0 +1,98 @@ +/*============================================================================= + 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 + 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_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 test_detail +{ + // 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(); }; }; +} + +boost::fusion::FUSION_SEQUENCE +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() +{ + using namespace boost::fusion; + using namespace test_detail; + + 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); + + // returning a tuple with conversion + foo(2); + + test_mpl(); +} diff --git a/test/sequence/deduce_sequence.cpp b/test/sequence/deduce_sequence.cpp new file mode 100644 index 00000000..ea661662 --- /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(); +} diff --git a/test/sequence/deque_comparison.cpp b/test/sequence/deque_comparison.cpp new file mode 100644 index 00000000..229fd0e6 --- /dev/null +++ b/test/sequence/deque_comparison.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + 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 + +#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..bba8f09a --- /dev/null +++ b/test/sequence/deque_construction.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + 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 + +#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..f654277b --- /dev/null +++ b/test/sequence/deque_copy.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + 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 + +#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..baf6f827 --- /dev/null +++ b/test/sequence/deque_iterator.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + 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 + +#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..e06dea27 --- /dev/null +++ b/test/sequence/deque_make.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + 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 + +#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..53836bbc --- /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 + + Distributed under the Boost Software 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 "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..66ab1478 --- /dev/null +++ b/test/sequence/deque_mutate.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 + + Distributed under the Boost 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..e1d855ae --- /dev/null +++ b/test/sequence/deque_tie.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + 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 + +#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..c348d287 --- /dev/null +++ b/test/sequence/deque_value_at.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + 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 + +#define FUSION_SEQUENCE deque +#include "value_at.hpp" + +int +main() +{ + test(); + 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..02a49ad4 --- /dev/null +++ b/test/sequence/ext_/iterator_range_s.cpp @@ -0,0 +1,146 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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 fusion::result_of::find_if_s >::type short_iter; + typedef typename fusion::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(); +} + diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp new file mode 100644 index 00000000..a89abec2 --- /dev/null +++ b/test/sequence/filter_view.cpp @@ -0,0 +1,120 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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, 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. + +#ifndef __EDG_VERSION__ + 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); +#endif + } + + { + // 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/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp new file mode 100644 index 00000000..fc049618 --- /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 + + Distributed under the Boost Software 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; + { + 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(); +} diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp new file mode 100644 index 00000000..d896b88f --- /dev/null +++ b/test/sequence/io.cpp @@ -0,0 +1,116 @@ +/*============================================================================= + Copyright (C) 1999-2003 Jaakko Järvi + + Distributed under the Boost Software 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..118bb347 --- /dev/null +++ b/test/sequence/iterator.hpp @@ -0,0 +1,197 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..af42cadd --- /dev/null +++ b/test/sequence/iterator_range.cpp @@ -0,0 +1,81 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..8dc4eb3c --- /dev/null +++ b/test/sequence/joint_view.cpp @@ -0,0 +1,144 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..fcf213c5 --- /dev/null +++ b/test/sequence/list_comparison.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + 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 + 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..26d648fd --- /dev/null +++ b/test/sequence/list_construction.cpp @@ -0,0 +1,18 @@ +/*============================================================================= + 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 + 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..07078344 --- /dev/null +++ b/test/sequence/list_copy.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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 + 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..f7cc6e1d --- /dev/null +++ b/test/sequence/list_iterator.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..39d2a3c9 --- /dev/null +++ b/test/sequence/list_make.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + 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 + 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..2d8fe047 --- /dev/null +++ b/test/sequence/list_misc.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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 + 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..f8802b27 --- /dev/null +++ b/test/sequence/list_mutate.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + 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 + 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..d96bbf4a --- /dev/null +++ b/test/sequence/list_tie.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + 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 + 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..763cf265 --- /dev/null +++ b/test/sequence/list_value_at.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + 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 + 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..c6494474 --- /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 + + Distributed under the Boost Software 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 test_detail +{ + // 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; + using namespace test_detail; + + { + 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..39d2a3c9 --- /dev/null +++ b/test/sequence/make_list.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + 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 + 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..efd9f068 --- /dev/null +++ b/test/sequence/make_vector.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + 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 + 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..5f58b9dc --- /dev/null +++ b/test/sequence/map.cpp @@ -0,0 +1,72 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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/map_tie.cpp b/test/sequence/map_tie.cpp new file mode 100644 index 00000000..1232812d --- /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(); +} diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp new file mode 100644 index 00000000..d1fae03b --- /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 + + Distributed under the Boost Software 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(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..d50d84d0 --- /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 + + Distributed under the Boost Software 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 test_detail +{ + // 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; + using namespace test_detail; + + 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/repetitive_view.cpp b/test/sequence/repetitive_view.cpp new file mode 100644 index 00000000..54da37bc --- /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(); +} + diff --git a/test/sequence/reverse_view.cpp b/test/sequence/reverse_view.cpp new file mode 100644 index 00000000..3fb20e55 --- /dev/null +++ b/test/sequence/reverse_view.cpp @@ -0,0 +1,64 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..95c5b40d --- /dev/null +++ b/test/sequence/set.cpp @@ -0,0 +1,67 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..e3faa26a --- /dev/null +++ b/test/sequence/single_view.cpp @@ -0,0 +1,57 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..b5c18d17 --- /dev/null +++ b/test/sequence/std_pair.cpp @@ -0,0 +1,91 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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/swap.cpp b/test/sequence/swap.cpp new file mode 100644 index 00000000..7df7b822 --- /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(); +} diff --git a/test/sequence/tie.hpp b/test/sequence/tie.hpp new file mode 100644 index 00000000..6097ef8e --- /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 + + Distributed under the Boost Software 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 test_detail +{ + // 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; + using namespace test_detail; + + 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..b1a48073 --- /dev/null +++ b/test/sequence/transform_view.cpp @@ -0,0 +1,115 @@ +/*============================================================================= + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +struct square +{ + template + struct result; + + template + struct result + { + typedef int type; + }; + + template + int operator()(T x) const + { + return x * x; + } +}; + +struct add +{ + template + struct result; + + 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)); + BOOST_TEST((boost::fusion::at_c<2>(xform) == 49)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + } + + { + 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))); + BOOST_TEST((boost::fusion::at_c<2>(xform) == 19)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp new file mode 100644 index 00000000..8108256b --- /dev/null +++ b/test/sequence/tuple_comparison.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + 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 + 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..323c72ed --- /dev/null +++ b/test/sequence/tuple_construction.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + 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 + 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..9a4d80e1 --- /dev/null +++ b/test/sequence/tuple_copy.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + 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 + 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..496fd6e1 --- /dev/null +++ b/test/sequence/tuple_element.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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 + 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..77ff412f --- /dev/null +++ b/test/sequence/tuple_make.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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 + 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..daef0322 --- /dev/null +++ b/test/sequence/tuple_misc.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + 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 + 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 +#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..8770b520 --- /dev/null +++ b/test/sequence/tuple_mutate.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + 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 + 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..e91c47a3 --- /dev/null +++ b/test/sequence/tuple_tie.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + 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 + 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/value_at.hpp b/test/sequence/value_at.hpp new file mode 100644 index 00000000..d655f13e --- /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 + + Distributed under the Boost Software 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 test_detail +{ + // something to prevent warnings for unused variables + template void dummy(const T&) {} + + class A {}; +} + +void +test() +{ + using namespace boost::fusion; + using namespace test_detail; + + 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/variant.cpp b/test/sequence/variant.cpp new file mode 100644 index 00000000..bfbf6fd3 --- /dev/null +++ b/test/sequence/variant.cpp @@ -0,0 +1,56 @@ +/*============================================================================= + 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) +==============================================================================*/ + +#include + +#include +#include +#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_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"); + 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(); +} diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp new file mode 100644 index 00000000..7321820e --- /dev/null +++ b/test/sequence/vector_comparison.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + 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 + 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..d279c232 --- /dev/null +++ b/test/sequence/vector_construction.cpp @@ -0,0 +1,18 @@ +/*============================================================================= + 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 + 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..a4c8a3af --- /dev/null +++ b/test/sequence/vector_copy.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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 + 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..bcf15c69 --- /dev/null +++ b/test/sequence/vector_iterator.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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..efd9f068 --- /dev/null +++ b/test/sequence/vector_make.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + 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 + 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..25d3ecfc --- /dev/null +++ b/test/sequence/vector_misc.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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 + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include +#include +#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..610c0c18 --- /dev/null +++ b/test/sequence/vector_mutate.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + 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 + 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..b051ca89 --- /dev/null +++ b/test/sequence/vector_n.cpp @@ -0,0 +1,232 @@ +/*============================================================================= + 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) +==============================================================================*/ +#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; + + { + vector0 vec; + (void) vec; + cout << "(): " << sizeof(vec) << endl; + cout << (boost::is_empty::value ? "is empty" : "is not empty") << 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..43895000 --- /dev/null +++ b/test/sequence/vector_tie.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + 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 + 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..8a99da5b --- /dev/null +++ b/test/sequence/vector_value_at.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + 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 + 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..7f88f52a --- /dev/null +++ b/test/sequence/zip_view.cpp @@ -0,0 +1,87 @@ +/*============================================================================= + 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 +#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..8a07aa88 --- /dev/null +++ b/test/sequence/zip_view2.cpp @@ -0,0 +1,64 @@ +/*============================================================================= + 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 +#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/test/sequence/zip_view_ignore.cpp b/test/sequence/zip_view_ignore.cpp new file mode 100644 index 00000000..2a300809 --- /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(); +} diff --git a/todo.txt b/todo.txt new file mode 100644 index 00000000..d164d6ae --- /dev/null +++ b/todo.txt @@ -0,0 +1,173 @@ +=============================================================================== +Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) +=============================================================================== + +* Improve extension docs + +* Document sequence/convert + +* 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 + +* Improved motivation section + +* Expand details of view concept + +* Examples, examples, examples + +* 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() + +* mpl, fusion, container type preserving operations incompatible + -- 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? - Dan: done now! + +* 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. + +* Why do we need to set FUSION_MAX_VECTOR_SIZE when we set + FUSION_MAX_MAP_SIZE? Setting FUSION_MAX_MAP_SIZE should be enough. + +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... + +* 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): + +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. + + 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 + functionality. + From 7bd2fd716daa93c8c13980fb832f4168fcc4d6b8 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 21 Dec 2007 02:45:20 +0000 Subject: [PATCH 03/82] merge from trunk [SVN r42225] --- include/boost/fusion/adapted.hpp | 4 +- include/boost/fusion/adapted/struct.hpp | 17 ++- .../adapted/struct/adapt_assoc_struct.hpp | 6 +- .../fusion/adapted/struct/detail/end_impl.hpp | 10 +- .../boost/fusion/adapted/struct/extension.hpp | 2 +- include/boost/fusion/adapted/variant.hpp | 20 --- .../adapted/variant/detail/begin_impl.hpp | 45 ------- .../variant/detail/category_of_impl.hpp | 33 ----- .../adapted/variant/detail/end_impl.hpp | 45 ------- .../variant/detail/is_sequence_impl.hpp | 31 ----- .../adapted/variant/detail/is_view_impl.hpp | 31 ----- .../adapted/variant/detail/size_impl.hpp | 32 ----- .../boost/fusion/adapted/variant/tag_of.hpp | 32 ----- .../adapted/variant/variant_iterator.hpp | 117 ------------------ include/boost/fusion/include/accumulate.hpp | 2 +- include/boost/fusion/include/utility.hpp | 12 -- include/boost/fusion/include/variant.hpp | 12 -- include/boost/fusion/sequence/utility.hpp | 14 --- include/boost/fusion/support/deduce.hpp | 18 +++ 19 files changed, 45 insertions(+), 438 deletions(-) delete mode 100644 include/boost/fusion/adapted/variant.hpp delete mode 100644 include/boost/fusion/adapted/variant/detail/begin_impl.hpp delete mode 100644 include/boost/fusion/adapted/variant/detail/category_of_impl.hpp delete mode 100644 include/boost/fusion/adapted/variant/detail/end_impl.hpp delete mode 100644 include/boost/fusion/adapted/variant/detail/is_sequence_impl.hpp delete mode 100644 include/boost/fusion/adapted/variant/detail/is_view_impl.hpp delete mode 100644 include/boost/fusion/adapted/variant/detail/size_impl.hpp delete mode 100644 include/boost/fusion/adapted/variant/tag_of.hpp delete mode 100644 include/boost/fusion/adapted/variant/variant_iterator.hpp delete mode 100644 include/boost/fusion/include/utility.hpp delete mode 100644 include/boost/fusion/include/variant.hpp delete mode 100644 include/boost/fusion/sequence/utility.hpp diff --git a/include/boost/fusion/adapted.hpp b/include/boost/fusion/adapted.hpp index 23693645..c343405c 100644 --- a/include/boost/fusion/adapted.hpp +++ b/include/boost/fusion/adapted.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_ADAPTED_30122005_1420) @@ -12,6 +12,6 @@ #include #include #include -#include +#include #endif diff --git a/include/boost/fusion/adapted/struct.hpp b/include/boost/fusion/adapted/struct.hpp index 063f8f32..c3c24e0b 100644 --- a/include/boost/fusion/adapted/struct.hpp +++ b/include/boost/fusion/adapted/struct.hpp @@ -10,14 +10,19 @@ #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/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index e621187f..c355d4b3 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -53,7 +53,7 @@ namespace boost { namespace fusion { namespace extension { // 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) \ +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_I(name, seq) \ namespace boost { namespace fusion { namespace traits \ { \ template <> \ @@ -66,11 +66,11 @@ 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) \ + 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) \ +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C(r, name, i, xy) \ template <> \ struct struct_member \ { \ diff --git a/include/boost/fusion/adapted/struct/detail/end_impl.hpp b/include/boost/fusion/adapted/struct/detail/end_impl.hpp index 42d7f394..514f7f58 100644 --- a/include/boost/fusion/adapted/struct/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/end_impl.hpp @@ -19,13 +19,21 @@ namespace boost { namespace fusion template struct end_impl; + template + struct struct_size; + template <> struct end_impl { template struct apply { - typedef struct_iterator type; + typedef + struct_iterator< + Sequence + , struct_size::value + > + type; static type call(Sequence& v) diff --git a/include/boost/fusion/adapted/struct/extension.hpp b/include/boost/fusion/adapted/struct/extension.hpp index da084498..071b11e9 100644 --- a/include/boost/fusion/adapted/struct/extension.hpp +++ b/include/boost/fusion/adapted/struct/extension.hpp @@ -50,7 +50,7 @@ namespace boost { namespace fusion { namespace extension struct struct_assoc_member { typedef typename - add_const::type>::type + add_const::type>::type type; static type& 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/adapted/variant/detail/begin_impl.hpp b/include/boost/fusion/adapted/variant/detail/begin_impl.hpp deleted file mode 100644 index dc9e2e7f..00000000 --- a/include/boost/fusion/adapted/variant/detail/begin_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(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/adapted/variant/detail/category_of_impl.hpp b/include/boost/fusion/adapted/variant/detail/category_of_impl.hpp deleted file mode 100644 index d81d9b3b..00000000 --- a/include/boost/fusion/adapted/variant/detail/category_of_impl.hpp +++ /dev/null @@ -1,33 +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_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/adapted/variant/detail/end_impl.hpp b/include/boost/fusion/adapted/variant/detail/end_impl.hpp deleted file mode 100644 index 622df47f..00000000 --- a/include/boost/fusion/adapted/variant/detail/end_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(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/adapted/variant/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/variant/detail/is_sequence_impl.hpp deleted file mode 100644 index 132f88a1..00000000 --- a/include/boost/fusion/adapted/variant/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,31 +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_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/adapted/variant/detail/is_view_impl.hpp b/include/boost/fusion/adapted/variant/detail/is_view_impl.hpp deleted file mode 100644 index d58dbd3c..00000000 --- a/include/boost/fusion/adapted/variant/detail/is_view_impl.hpp +++ /dev/null @@ -1,31 +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_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 diff --git a/include/boost/fusion/adapted/variant/detail/size_impl.hpp b/include/boost/fusion/adapted/variant/detail/size_impl.hpp deleted file mode 100644 index 379bac32..00000000 --- a/include/boost/fusion/adapted/variant/detail/size_impl.hpp +++ /dev/null @@ -1,32 +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_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/adapted/variant/tag_of.hpp b/include/boost/fusion/adapted/variant/tag_of.hpp deleted file mode 100644 index fcaa894e..00000000 --- a/include/boost/fusion/adapted/variant/tag_of.hpp +++ /dev/null @@ -1,32 +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_TAG_OF_12112006_1704) -#define BOOST_FUSION_VARIANT_TAG_OF_12112006_1704 - -#include -#include - -namespace boost { namespace fusion -{ - struct variant_tag; - - namespace traits - { - template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) - struct tag_of, void > -#else - struct tag_of > -#endif - { - typedef variant_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/variant/variant_iterator.hpp b/include/boost/fusion/adapted/variant/variant_iterator.hpp deleted file mode 100644 index 9372002c..00000000 --- a/include/boost/fusion/adapted/variant/variant_iterator.hpp +++ /dev/null @@ -1,117 +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_ITERATOR_12112006_1617) -#define BOOST_FUSION_VARIANT_ITERATOR_12112006_1617 - -#include - -#include -#include -#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 MPLIterator 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 - , add_const::type> - , mpl::deref - >::type - value_type; - - 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) - { - typedef typename mpl::deref::type type; - if (type* result = boost::get(&it.var_)) - return *result; - it.var_ = type(); // prime the variant - return *boost::get(&it.var_); // no-throw! - } -#endif - }; - }; -}} - -#endif diff --git a/include/boost/fusion/include/accumulate.hpp b/include/boost/fusion/include/accumulate.hpp index e3532dc0..b9ca6526 100644 --- a/include/boost/fusion/include/accumulate.hpp +++ b/include/boost/fusion/include/accumulate.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_ACCUMULATE) #define FUSION_INCLUDE_ACCUMULATE -#include +#include #endif diff --git a/include/boost/fusion/include/utility.hpp b/include/boost/fusion/include/utility.hpp deleted file mode 100644 index 915d8b16..00000000 --- a/include/boost/fusion/include/utility.hpp +++ /dev/null @@ -1,12 +0,0 @@ -/*============================================================================= - 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_UTILITY) -#define FUSION_INCLUDE_UTILITY - -#include - -#endif diff --git a/include/boost/fusion/include/variant.hpp b/include/boost/fusion/include/variant.hpp deleted file mode 100644 index 3d013b8e..00000000 --- a/include/boost/fusion/include/variant.hpp +++ /dev/null @@ -1,12 +0,0 @@ -/*============================================================================= - 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 diff --git a/include/boost/fusion/sequence/utility.hpp b/include/boost/fusion/sequence/utility.hpp deleted file mode 100644 index 35a17af9..00000000 --- a/include/boost/fusion/sequence/utility.hpp +++ /dev/null @@ -1,14 +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_SEQUENCE_UTILITY_HPP_INCLUDED) -#define BOOST_FUSION_SEQUENCE_UTILITY_HPP_INCLUDED - -# include - -#endif // include guard diff --git a/include/boost/fusion/support/deduce.hpp b/include/boost/fusion/support/deduce.hpp index 846fbc4d..37710ec1 100644 --- a/include/boost/fusion/support/deduce.hpp +++ b/include/boost/fusion/support/deduce.hpp @@ -25,6 +25,24 @@ namespace boost { namespace fusion { namespace traits typedef T type; }; + template + struct deduce + { + typedef T type; + }; + + template + struct deduce + { + typedef T type; + }; + + template + struct deduce + { + typedef T type; + }; + // Keep references on mutable LValues template From 4a29dd2a7cabdbe7f855cf226de5953553333dbd Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 21 Dec 2007 03:13:31 +0000 Subject: [PATCH 04/82] merge from trunk [SVN r42226] --- doc/adapted.qbk | 115 +++++++++++++--- doc/changelog.qbk | 15 ++- doc/extension.qbk | 119 +--------------- doc/html/fusion/adapted.html | 13 +- doc/html/fusion/adapted/adapt_assoc.html | 123 +++++++++++++++++ doc/html/fusion/adapted/adapt_struct.html | 110 +++++++++++++++ doc/html/fusion/adapted/boost__array.html | 8 +- doc/html/fusion/adapted/boost__tuple.html | 14 +- doc/html/fusion/adapted/boost__variant.html | 84 ------------ doc/html/fusion/adapted/mpl_sequence.html | 8 +- doc/html/fusion/adapted/std__pair.html | 8 +- doc/html/fusion/algorithm.html | 12 +- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 +- .../algorithm/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/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 +- .../fusion/algorithm/query/functions/any.html | 14 +- .../algorithm/query/functions/count.html | 14 +- .../algorithm/query/functions/count_if.html | 14 +- .../algorithm/query/functions/find.html | 14 +- .../algorithm/query/functions/find_if.html | 12 +- .../algorithm/query/functions/none.html | 14 +- .../algorithm/query/metafunctions/all.html | 12 +- .../algorithm/query/metafunctions/any.html | 12 +- .../algorithm/query/metafunctions/count.html | 12 +- .../query/metafunctions/count_if.html | 12 +- .../algorithm/query/metafunctions/find.html | 12 +- .../query/metafunctions/find_if.html | 12 +- .../algorithm/query/metafunctions/none.html | 12 +- doc/html/fusion/algorithm/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 | 10 +- .../metafunctions/push_back.html | 10 +- .../metafunctions/push_front.html | 10 +- .../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 | 18 +-- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/change_log.html | 21 ++- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 +- doc/html/fusion/container/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/container/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 +- .../generation/functions/map_tie.html | 12 +- .../container/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/map_tie.html | 12 +- .../generation/metafunctions/vector_tie.html | 12 +- doc/html/fusion/container/list.html | 14 +- doc/html/fusion/container/map.html | 14 +- doc/html/fusion/container/set.html | 14 +- doc/html/fusion/container/vector.html | 14 +- doc/html/fusion/extension.html | 5 - doc/html/fusion/extension/ext_full.html | 16 +-- .../fusion/extension/iterator_facade.html | 22 +-- .../fusion/extension/macros/adapt_assoc.html | 127 ------------------ .../fusion/extension/macros/adapt_struct.html | 113 ---------------- .../fusion/extension/sequence_facade.html | 16 +-- doc/html/fusion/functional.html | 12 +- .../fusion/functional/adapters/fused.html | 14 +- .../adapters/fused_function_object.html | 14 +- .../functional/adapters/fused_procedure.html | 14 +- .../functional/adapters/unfused_generic.html | 14 +- .../adapters/unfused_lvalue_args.html | 14 +- .../adapters/unfused_rvalue_args.html | 14 +- .../functional/adapters/unfused_typed.html | 14 +- .../fusion/functional/concepts/callable.html | 6 +- .../functional/concepts/def_callable.html | 10 +- doc/html/fusion/functional/concepts/poly.html | 10 +- .../functional/concepts/reg_callable.html | 10 +- .../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 | 12 +- .../invocation/functions/invoke_fobj.html | 12 +- .../invocation/functions/invoke_proc.html | 12 +- .../invocation/metafunctions/invoke.html | 6 +- .../invocation/metafunctions/invoke_fobj.html | 6 +- .../invocation/metafunctions/invoke_proc.html | 6 +- doc/html/fusion/iterator.html | 11 +- .../concepts/bidirectional_iterator.html | 14 +- .../iterator/concepts/forward_iterator.html | 12 +- .../concepts/random_access_iterator.html | 10 +- .../fusion/iterator/functions/advance.html | 21 +-- .../fusion/iterator/functions/advance_c.html | 21 +-- doc/html/fusion/iterator/functions/deref.html | 21 +-- .../fusion/iterator/functions/distance.html | 21 +-- doc/html/fusion/iterator/functions/next.html | 21 +-- doc/html/fusion/iterator/functions/prior.html | 21 +-- .../iterator/metafunctions/advance.html | 21 +-- .../iterator/metafunctions/advance_c.html | 21 +-- .../fusion/iterator/metafunctions/deref.html | 21 +-- .../iterator/metafunctions/distance.html | 21 +-- .../iterator/metafunctions/equal_to.html | 21 +-- .../fusion/iterator/metafunctions/next.html | 21 +-- .../fusion/iterator/metafunctions/prior.html | 21 +-- .../iterator/metafunctions/value_of.html | 21 +-- .../iterator/operator/operator_equality.html | 19 ++- .../operator/operator_inequality.html | 19 ++- .../operator/operator_unary_star.html | 21 +-- 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/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 +- .../concepts/associative_sequence.html | 10 +- .../concepts/bidirectional_sequence.html | 12 +- .../sequence/concepts/forward_sequence.html | 12 +- .../concepts/random_access_sequence.html | 12 +- doc/html/fusion/sequence/intrinsic.html | 6 +- .../sequence/intrinsic/functions/at.html | 12 +- .../sequence/intrinsic/functions/at_c.html | 12 +- .../sequence/intrinsic/functions/at_key.html | 12 +- .../sequence/intrinsic/functions/back.html | 12 +- .../sequence/intrinsic/functions/begin.html | 12 +- .../sequence/intrinsic/functions/empty.html | 12 +- .../sequence/intrinsic/functions/end.html | 12 +- .../sequence/intrinsic/functions/front.html | 12 +- .../sequence/intrinsic/functions/has_key.html | 12 +- .../sequence/intrinsic/functions/size.html | 12 +- .../sequence/intrinsic/functions/swap.html | 10 +- .../sequence/intrinsic/metafunctions/at.html | 14 +- .../intrinsic/metafunctions/at_c.html | 14 +- .../intrinsic/metafunctions/at_key.html | 14 +- .../intrinsic/metafunctions/back.html | 10 +- .../intrinsic/metafunctions/begin.html | 10 +- .../intrinsic/metafunctions/empty.html | 10 +- .../sequence/intrinsic/metafunctions/end.html | 10 +- .../intrinsic/metafunctions/front.html | 10 +- .../intrinsic/metafunctions/has_key.html | 10 +- .../intrinsic/metafunctions/size.html | 10 +- .../intrinsic/metafunctions/swap.html | 8 +- .../intrinsic/metafunctions/value_at.html | 10 +- .../intrinsic/metafunctions/value_at_c.html | 10 +- .../intrinsic/metafunctions/value_at_key.html | 10 +- .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 12 +- .../operator/comparison/greater_than.html | 10 +- .../comparison/greater_than_equal.html | 10 +- .../operator/comparison/less_than.html | 10 +- .../operator/comparison/less_than_equal.html | 10 +- .../operator/comparison/not_equal.html | 10 +- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 +- .../fusion/sequence/operator/i_o/out.html | 12 +- doc/html/fusion/support/category_of.html | 12 +- doc/html/fusion/support/deduce.html | 10 +- doc/html/fusion/support/deduce_sequence.html | 10 +- doc/html/fusion/support/is_sequence.html | 12 +- doc/html/fusion/support/is_view.html | 12 +- doc/html/fusion/support/pair.html | 112 ++++++--------- doc/html/fusion/support/tag_of.html | 12 +- .../fusion/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 +- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 +- doc/html/fusion/view/iterator_range.html | 14 +- doc/html/fusion/view/joint_view.html | 14 +- doc/html/fusion/view/reverse_view.html | 12 +- doc/html/fusion/view/single_view.html | 12 +- doc/html/fusion/view/transform_view.html | 12 +- doc/html/fusion/view/zip_view.html | 14 +- doc/html/index.html | 12 +- doc/iterator.qbk | 72 +++++++--- doc/support.qbk | 3 +- test/Jamfile | 1 - test/sequence/adapt_struct.cpp | 13 ++ test/sequence/variant.cpp | 56 -------- todo.txt | 16 +++ 239 files changed, 1875 insertions(+), 1915 deletions(-) create mode 100644 doc/html/fusion/adapted/adapt_assoc.html create mode 100644 doc/html/fusion/adapted/adapt_struct.html delete mode 100644 doc/html/fusion/adapted/boost__variant.html delete mode 100644 doc/html/fusion/extension/macros/adapt_assoc.html delete mode 100644 doc/html/fusion/extension/macros/adapt_struct.html delete mode 100644 test/sequence/variant.cpp diff --git a/doc/adapted.qbk b/doc/adapted.qbk index 3645fcc9..991918c9 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -16,6 +16,9 @@ they will be regarded as first-class, fully conforming fusion sequences sequences (see __intrinsics__). That way, we can have 2-way adaptation to and from __mpl__ and Fusion]. +Fusion also provides various schemes to make it easy for the user to adapt +various data structures, non-intrusively, as full fledged Fusion sequences. + [heading Header] #include @@ -136,32 +139,108 @@ __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. +[section:adapt_struct BOOST_FUSION_ADAPT_STRUCT] + +[heading Description] +BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the +necessary boilerplate to make an arbitrary struct into a __random_access_sequence__. + +[heading Synopsis] + BOOST_FUSION_ADAPT_STRUCT( + struct_name + (member_type0, member_name0) + (member_type1, member_name1) + ... + ) + +[heading Semantics] + +The above macro generates the necessary code to adapt `struct_name` +as a model of __random_access_sequence__. The sequence of `(member_typeN, member_nameN)` +pairs declare the type and names of each of the struct members that will be +part of the sequence. + +The macro should be used at global scope, and `struct_name` should be the fully +namespace qualified name of the struct to be converted. [heading Header] - #include - #include - -[heading Model of] - -* __forward_sequence__ + #include + #include [heading Example] + namespace demo + { + struct employee + { + std::string name; + int age; + }; + } - boost::variant example_variant = 101; - std::cout << example_variant << '\n'; - *boost::fusion::find(example_variant) = "hello"; - std::cout << example_variant << '\n'; + // demo::employee is now a Fusion sequence + BOOST_FUSION_ADAPT_STRUCT( + demo::employee + (std::string, name) + (int, age)) -[heading See also] +[endsect] + +[section:adapt_assoc BOOST_FUSION_ADAPT_ASSOC_STRUCT] + +[heading Description] +BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all the +necessary boilerplate to make an arbitrary struct into a model of __random_access_sequence__ +and __associative_sequence__. + +[heading Synopsis] + BOOST_FUSION_ADAPT_ASSOC_STRUCT( + struct_name + (member_type0, member_name0, key_type0) + (member_type1, member_name1, key_type1) + ... + ) + +[heading Semantics] + +The above macro generates the necessary code to adapt `struct_name` +as a model of __random_access_sequence__ and __associative_sequence__. +The sequence of `(member_typeN, member_nameN, key_typeN)` +triples declare the type, name and key type of each of the struct members +that will be part of the sequence. + +The macro should be used at global scope, and `struct_name` should be the fully +namespace qualified name of the struct to be converted. + +[heading Header] + + #include + #include + +[heading Example] + namespace demo + { + struct employee + { + std::string name; + int age; + }; + } + + namespace keys + { + struct name; + struct age; + } + + // demo::employee is now a Fusion sequence + // It is also an associative sequence with + // keys keys::name and keys::age present. + BOOST_FUSION_ADAPT_ASSOC_STRUCT( + demo::employee + (std::string, name, keys::name) + (int, age, keys::age)) -__boost_variant_library__ [endsect] diff --git a/doc/changelog.qbk b/doc/changelog.qbk index c7da9f07..d3e953ce 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -9,8 +9,17 @@ 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. +* Sep 27, 2006: Added `boost::tuple` support. (Joel de Guzman) +* Nov 17, 2006: Added `boost::variant` support. (Joel de Guzman) +* Feb 15, 2007: Added functional module. (Tobias Schwinger) +* APRIL 2, 2007: Added struct adapter. (Joel de Guzman) +* May 8, 2007: Added associative struct adapter. (Dan Marsden) +* Dec 20, 2007: Removed `boost::variant` support. After thorough + investigation, I think now that the move to make variant a + fusion sequence is rather quirky. A variant will always + have a size==1 regardless of the number of types it can contain + and there's no way to know at compile time what it contains. + Iterating over its types is simply wrong. All these imply that + the variant is *not* a fusion sequence. (Joel de Guzman) [endsect] diff --git a/doc/extension.qbk b/doc/extension.qbk index c10dc273..b840259f 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -426,7 +426,7 @@ The user must the implement the key expressions required by their sequence type. #include [heading Example] -A full worked example using __sequence_facade__ is provided in triple.cpp in the extension examples. +A full working example using __sequence_facade__ is provided in triple.cpp in the extension examples. [endsect] @@ -475,122 +475,7 @@ The user must the implement the key expressions required by their iterator type. #include [heading Example] -A full worked example using __iterator_facade__ is provided in triple.cpp in the extension examples. - -[endsect] - -[section Macros] - -[section:adapt_struct BOOST_FUSION_ADAPT_STRUCT] - -[heading Description] -BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the -necessary boilerplate to make an arbitrary struct into a __random_access_sequence__. - -[heading Synopsis] - BOOST_FUSION_ADAPT_STRUCT( - struct_name - (member_type0, member_name0) - (member_type1, member_name1) - ... - ) - -[heading Semantics] - BOOST_FUSION_ADAPT_STRUCT( - struct_name, - (member_type0, member_name0) - (member_type1, member_name1) - ... - ) - -The above macro generates the necessary code to adapt `struct_name` -as a model of __random_access_sequence__. The sequence of `(member_typeN, member_nameN)` -pairs declare the type and names of each of the struct members that will be -part of the sequence. - -The macro should be used at global scope, and `struct_name` should be the fully -namespace qualified name of the struct to be converted. - -/adapted/struct/adapt_struct.hpp> - -[heading Example] - namespace demo - { - struct employee - { - std::string name; - int age; - }; - } - - // demo::employee is now a Fusion sequence - BOOST_FUSION_ADAPT_STRUCT( - demo::employee - (std::string, name) - (int, age)) - -[endsect] - -[section:adapt_assoc BOOST_FUSION_ADAPT_ASSOC_STRUCT] - -[heading Description] -BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all the -necessary boilerplate to make an arbitrary struct into a model of __random_access_sequence__ -and __associative_sequence__. - -[heading Synopsis] - BOOST_FUSION_ADAPT_ASSOC_STRUCT( - struct_name - (member_type0, member_name0, key_type0) - (member_type1, member_name1, key_type1) - ... - ) - -[heading Semantics] - BOOST_FUSION_ADAPT_ASSOC_STRUCT( - struct_name - (member_type0, member_name0, key_type0) - (member_type1, member_name1, key_type1) - ... - ) - -The above macro generates the necessary code to adapt `struct_name` -as a model of __random_access_sequence__ and __associative_sequence__. -The sequence of `(member_typeN, member_nameN, key_typeN)` -triples declare the type, name and key type of each of the struct members -that will be part of the sequence. - -The macro should be used at global scope, and `struct_name` should be the fully -namespace qualified name of the struct to be converted. - -/adapted/struct/adapt_assoc_struct.hpp> - -[heading Example] - namespace demo - { - struct employee - { - std::string name; - int age; - }; - } - - namespace keys - { - struct name; - struct age; - } - - // demo::employee is now a Fusion sequence - // It is also an associative sequence with - // keys keys::name and keys::age present. - BOOST_FUSION_ADAPT_ASSOC_STRUCT( - demo::employee - (std::string, name, keys::name) - (int, age, keys::age)) - - -[endsect] +A full working example using __iterator_facade__ is provided in triple.cpp in the extension examples. [endsect] diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 0a9121e6..2d5c7a20 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -30,7 +30,8 @@
mpl sequence
boost::array
boost::tuple
-
boost::variant
+
BOOST_FUSION_ADAPT_STRUCT
+
BOOST_FUSION_ADAPT_ASSOC_STRUCT

Fusion provides a couple of adapters for other sequences such as std::pair, @@ -39,11 +40,15 @@ 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 - [13] + [13] .

+

+ Fusion also provides various schemes to make it easy for the user to adapt + various data structures, non-intrusively, as full fledged Fusion sequences. +

- + Header

@@ -52,7 +57,7 @@
 


-

[13] +

[13] 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/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html new file mode 100644 index 00000000..d5fde8a6 --- /dev/null +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -0,0 +1,123 @@ + + + + BOOST_FUSION_ADAPT_ASSOC_STRUCT + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+


+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all + the necessary boilerplate to make an arbitrary struct into a model of Random Access Sequence + and Associative + Sequence. +

+

+ + Synopsis +

+
+BOOST_FUSION_ADAPT_ASSOC_STRUCT(
+    struct_name
+    (member_type0, member_name0, key_type0)
+    (member_type1, member_name1, key_type1)
+    ...
+    )
+
+

+ + Semantics +

+

+ The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence and Associative + Sequence. The sequence of (member_typeN, + member_nameN, + key_typeN) + triples declare the type, name and key type of each of the struct members + that will be part of the sequence. +

+

+ The macro should be used at global scope, and struct_name + should be the fully namespace qualified name of the struct to be converted. +

+

+ + Header +

+
+#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
+#include <boost/fusion/include/adapt_assoc_struct.hpp>
+
+

+ + Example +

+
+namespace demo
+{
+    struct employee
+    {
+        std::string name;
+        int age;
+    };
+}
+
+namespace keys
+{
+    struct name;
+    struct age;
+}
+
+// demo::employee is now a Fusion sequence
+// It is also an associative sequence with
+// keys keys::name and keys::age present.
+BOOST_FUSION_ADAPT_ASSOC_STRUCT(
+    demo::employee
+    (std::string, name, keys::name)
+    (int, age, keys::age))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html new file mode 100644 index 00000000..640267cf --- /dev/null +++ b/doc/html/fusion/adapted/adapt_struct.html @@ -0,0 +1,110 @@ + + + + BOOST_FUSION_ADAPT_STRUCT + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the + necessary boilerplate to make an arbitrary struct into a Random + Access Sequence. +

+

+ + Synopsis +

+
+BOOST_FUSION_ADAPT_STRUCT(
+    struct_name
+    (member_type0, member_name0)
+    (member_type1, member_name1)
+    ...
+    )
+
+

+ + Semantics +

+

+ The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence. The sequence of (member_typeN, + member_nameN) + pairs declare the type and names of each of the struct members that will + be part of the sequence. +

+

+ The macro should be used at global scope, and struct_name + should be the fully namespace qualified name of the struct to be converted. +

+

+ + Header +

+
+#include <boost/fusion/adapted/struct/adapt_struct.hpp>
+#include <boost/fusion/include/adapt_struct.hpp>
+
+

+ + Example +

+
+namespace demo
+{
+    struct employee
+    {
+        std::string name;
+        int age;
+    };
+}
+
+// demo::employee is now a Fusion sequence
+BOOST_FUSION_ADAPT_STRUCT(
+    demo::employee
+    (std::string, name)
+    (int, age))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html index b36302b5..3925b1b0 100644 --- a/doc/html/fusion/adapted/boost__array.html +++ b/doc/html/fusion/adapted/boost__array.html @@ -33,7 +33,7 @@ Access Sequence.

- + Header

@@ -41,14 +41,14 @@
 #include <boost/fusion/include/array.hpp>
 

- + Model of

- + Example

@@ -61,7 +61,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 

- + See also

diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index 43d5f773..fb65d1ec 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext

@@ -33,7 +33,7 @@ Sequence.

- + Header

@@ -41,13 +41,13 @@
 #include <boost/fusion/include/boost_tuple.hpp>
 

- + Model of

- + Example

@@ -56,7 +56,7 @@
 std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
 

- + See also

@@ -75,7 +75,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/adapted/boost__variant.html b/doc/html/fusion/adapted/boost__variant.html deleted file mode 100644 index 55dff32e..00000000 --- a/doc/html/fusion/adapted/boost__variant.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -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/adapted/variant.hpp>
-#include <boost/fusion/include/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 -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 5ba8af24..b960669c 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -31,7 +31,7 @@ sequences fully conforming fusion sequences.

- + Header

@@ -39,7 +39,7 @@
 #include <boost/fusion/include/mpl.hpp>
 

- + Model of

    @@ -63,7 +63,7 @@

- + Example

@@ -77,7 +77,7 @@
 std::cout << at_c<1>(v) << std::endl;
 

- + See also

diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 50693588..f3ca5a54 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,7 +33,7 @@ Access Sequence.

- + Header

@@ -41,14 +41,14 @@
 #include <boost/fusion/include/std_pair.hpp>
 

- + Model of

- + Example

@@ -58,7 +58,7 @@
 std::cout << p << std::endl;
 

- + See also

diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 25330b6a..ea7053b2 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext

@@ -43,7 +43,7 @@

- + Lazy Evaluation

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

- + Sequence Extension

@@ -89,7 +89,7 @@ functions to convert back to the original sequence type.

- + Header

@@ -108,7 +108,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html index 4782c651..1ea968a1 100644 --- a/doc/html/fusion/algorithm/iteration.html +++ b/doc/html/fusion/algorithm/iteration.html @@ -34,7 +34,7 @@ a sequence repeatedly applying an operation to its elements.

- + Header

diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
index 8a0c5a80..1eb774cf 100644
--- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
+++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ and the previous state.

- + Synopsis
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -137,7 +137,7 @@
- + Expression Semantics
@@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
@@ -167,7 +167,7 @@
 #include <boost/fusion/include/accumulate.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
index 00cfa7ae..c1e05d1d 100644
--- a/doc/html/fusion/algorithm/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ and the previous state.

- + Synopsis
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -137,7 +137,7 @@
- + Expression Semantics
@@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
@@ -167,7 +167,7 @@
 #include <boost/fusion/include/fold.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
index 2bf3b1ea..4b6265b3 100644
--- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithm/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.35. Parameters

+

Table 1.35. Parameters

@@ -114,7 +114,7 @@
- + Expression Semantics
@@ -129,14 +129,14 @@ in seq.

- + Complexity

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

- + Header
@@ -144,7 +144,7 @@
 #include <boost/fusion/include/for_each.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
index 059cb10d..6a74d790 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of accumulate.

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

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -131,7 +131,7 @@
- + Expression Semantics
@@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
index 997dc099..c79e8b6d 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of fold.

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

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -131,7 +131,7 @@
- + Expression Semantics
@@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
index 1629f640..1cedc9bb 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithm/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.38. Parameters

+

Table 1.38. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -131,14 +131,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
index dd910180..83d1b667 100644
--- a/doc/html/fusion/algorithm/query.html
+++ b/doc/html/fusion/algorithm/query.html
@@ -33,7 +33,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header

diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
index e1017b27..5370bcb3 100644
--- a/doc/html/fusion/algorithm/query/functions/all.html
+++ b/doc/html/fusion/algorithm/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.40. Parameters

+

Table 1.40. Parameters

@@ -116,7 +116,7 @@
- + Expression Semantics
@@ -133,14 +133,14 @@ element e in seq.

- + Complexity

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

- + Header
@@ -148,7 +148,7 @@
 #include <boost/fusion/include/all.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
index 698ad724..9766fb16 100644
--- a/doc/html/fusion/algorithm/query/functions/any.html
+++ b/doc/html/fusion/algorithm/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.39. Parameters

+

Table 1.39. Parameters

@@ -116,7 +116,7 @@
- + Expression semantics
@@ -133,14 +133,14 @@ element e in seq.

- + Complexity

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

- + Header
@@ -148,7 +148,7 @@
 #include <boost/fusion/include/any.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
index de84d0dd..2a276254 100644
--- a/doc/html/fusion/algorithm/query/functions/count.html
+++ b/doc/html/fusion/algorithm/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.44. Parameters

+

Table 1.44. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -129,14 +129,14 @@ t in seq.

- + Complexity

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

- + Header
@@ -144,7 +144,7 @@
 #include <boost/fusion/include/count.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
index c87d265c..ffa0422d 100644
--- a/doc/html/fusion/algorithm/query/functions/count_if.html
+++ b/doc/html/fusion/algorithm/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.45. Parameters

+

Table 1.45. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -128,14 +128,14 @@ in seq where f evaluates to true.

- + Complexity

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

- + Header
@@ -143,7 +143,7 @@
 #include <boost/fusion/include/count_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
index a9c4cb50..7c2499ca 100644
--- a/doc/html/fusion/algorithm/query/functions/find.html
+++ b/doc/html/fusion/algorithm/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.42. Parameters

+

Table 1.42. Parameters

@@ -115,7 +115,7 @@
- + Expression Semantics
@@ -133,14 +133,14 @@ to find_if<boost::is_same<_, T> >(seq)

- + Complexity

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

- + Header
@@ -148,7 +148,7 @@
 #include <boost/fusion/include/find.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
index 13a68b8f..20b74c2b 100644
--- a/doc/html/fusion/algorithm/query/functions/find_if.html
+++ b/doc/html/fusion/algorithm/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.43. Parameters

+

Table 1.43. Parameters

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

- + Complexity

@@ -147,7 +147,7 @@ /algorithm/query/find_if.hpp>

- + Example
diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
index 2502ca6f..9f613a5a 100644
--- a/doc/html/fusion/algorithm/query/functions/none.html
+++ b/doc/html/fusion/algorithm/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.41. Parameters

+

Table 1.41. Parameters

@@ -116,7 +116,7 @@
- + Expression Semantics
@@ -133,14 +133,14 @@ element e in seq. Result equivalent to !any(seq, f).

- + Complexity

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

- + Header
@@ -148,7 +148,7 @@
 #include <boost/fusion/include/none.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
index 3065c286..bcd98c6a 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/all.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of all.

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

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -114,7 +114,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
index 3d3cfb21..d7eb4548 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of any.

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

Table 1.46. Parameters

+

Table 1.46. Parameters

@@ -114,7 +114,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
index 7eaee591..8716f4a2 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithm/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.51. Parameters

+

Table 1.51. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -129,14 +129,14 @@ int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
index 00398d26..27402618 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithm/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.52. Parameters

+

Table 1.52. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -129,14 +129,14 @@ always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
index 4d219b73..642f7077 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithm/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.49. Parameters

+

Table 1.49. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -131,14 +131,14 @@ if there is no such element.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
index ac850be5..0883d34c 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithm/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.50. Parameters

+

Table 1.50. Parameters

@@ -114,7 +114,7 @@
- + Expression Semantics
@@ -132,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/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
index 0da5e523..775bb347 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of none.

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

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -114,7 +114,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
index f7a3481f..3b792522 100644
--- a/doc/html/fusion/algorithm/transformation.html
+++ b/doc/html/fusion/algorithm/transformation.html
@@ -46,7 +46,7 @@
         

- + Header

diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
index 173037b8..6a4b5581 100644
--- a/doc/html/fusion/algorithm/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithm/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.62. Parameters

+

Table 1.62. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ with no elements.

- + Complexity

Constant.

- + Header
@@ -121,7 +121,7 @@
 #include <boost/fusion/include/clear.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
index 6f7c111e..cd28e649 100644
--- a/doc/html/fusion/algorithm/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithm/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.63. Parameters

+

Table 1.63. Parameters

@@ -141,7 +141,7 @@
- + Expression Semantics
@@ -172,14 +172,14 @@ in their original order, except those in the range [first,last).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -187,7 +187,7 @@
 #include <boost/fusion/include/erase.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
index 6ba6a695..15803534 100644
--- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithm/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.64. Parameters

+

Table 1.64. Parameters

@@ -115,7 +115,7 @@
- + Expression Semantics
@@ -133,14 +133,14 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -148,7 +148,7 @@
 #include <boost/fusion/include/erase_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
index a332c3d3..72e7c175 100644
--- a/doc/html/fusion/algorithm/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithm/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.53. Parameters

+

Table 1.53. Parameters

@@ -110,7 +110,7 @@
- + Expression Semantics
@@ -129,14 +129,14 @@ to filter_if<boost::same_type<_, T> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -144,7 +144,7 @@
 #include <boost/fusion/include/filter.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
index 69d113cc..d0c7000f 100644
--- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithm/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.54. Parameters

+

Table 1.54. Parameters

@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -132,14 +132,14 @@ is the same as in the original sequence.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -147,7 +147,7 @@
 #include <boost/fusion/include/filter_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
index 9f96a928..ac20b5bc 100644
--- a/doc/html/fusion/algorithm/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithm/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.65. Parameters

+

Table 1.65. Parameters

@@ -130,7 +130,7 @@
- + Expression Semantics
@@ -150,14 +150,14 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -165,7 +165,7 @@
 #include <boost/fusion/include/insert.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
index a722101d..ed877215 100644
--- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithm/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.66. Parameters

+

Table 1.66. Parameters

@@ -133,7 +133,7 @@
- + Expression Semantics
@@ -153,14 +153,14 @@ All elements retaining their ordering from the orignal sequences.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -168,7 +168,7 @@
 #include <boost/fusion/include/insert_range.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
index 97e6b27b..52804fef 100644
--- a/doc/html/fusion/algorithm/transformation/functions/join.html
+++ b/doc/html/fusion/algorithm/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.67. Parameters

+

Table 1.67. Parameters

@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -130,14 +130,14 @@ The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -145,7 +145,7 @@
 #include <boost/fusion/include/join.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
index 469ccdb1..f82f9ed2 100644
--- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithm/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.69. Parameters

+

Table 1.69. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -108,14 +108,14 @@ same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -123,7 +123,7 @@
 #include <boost/fusion/include/pop_back.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
index e35b7b96..526e745b 100644
--- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithm/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.70. Parameters

+

Table 1.70. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -108,14 +108,14 @@ same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -123,7 +123,7 @@
 #include <boost/fusion/include/pop_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
index 45e5c236..ea79a915 100644
--- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithm/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.71. Parameters

+

Table 1.71. Parameters

@@ -110,7 +110,7 @@
- + Expression Semantics
@@ -129,14 +129,14 @@ 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
@@ -144,7 +144,7 @@
 #include <boost/fusion/include/push_back.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
index 968235c8..3528ce78 100644
--- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithm/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.72. Parameters

+

Table 1.72. Parameters

@@ -110,7 +110,7 @@
- + Expression Semantics
@@ -130,14 +130,14 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -145,7 +145,7 @@
 #include <boost/fusion/include/push_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
index 73274cbb..259c052f 100644
--- a/doc/html/fusion/algorithm/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithm/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.59. Parameters

+

Table 1.59. Parameters

@@ -110,7 +110,7 @@
- + Expression Semantics
@@ -129,14 +129,14 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -144,7 +144,7 @@
 #include <boost/fusion/include/remove.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
index fbefda13..1d875723 100644
--- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithm/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.60. Parameters

+

Table 1.60. Parameters

@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -131,14 +131,14 @@ >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -146,7 +146,7 @@
 #include <boost/fusion/include/remove_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
index f3b6ee15..a7c7c7e0 100644
--- a/doc/html/fusion/algorithm/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithm/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.57. Parameters

+

Table 1.57. Parameters

@@ -132,7 +132,7 @@
- + Expression Semantics
@@ -151,14 +151,14 @@ to elements with the same type and equal to old_value.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -166,7 +166,7 @@
 #include <boost/fusion/include/replace.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
index 3e3fe678..2345f1d5 100644
--- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithm/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.58. Parameters

+

Table 1.58. Parameters

@@ -131,7 +131,7 @@
- + Expression Semantics
@@ -151,14 +151,14 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -166,7 +166,7 @@
 #include <boost/fusion/include/replace_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
index e9b86fd2..6360f6ae 100644
--- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithm/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.61. Parameters

+

Table 1.61. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -107,14 +107,14 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -122,7 +122,7 @@
 #include <boost/fusion/include/reverse.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
index 24029b65..72062220 100644
--- a/doc/html/fusion/algorithm/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.55. Parameters

+

Table 1.55. Parameters

@@ -118,7 +118,7 @@
- + Expression Semantics
@@ -136,7 +136,7 @@ within seq.

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

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -263,7 +263,7 @@
 #include <boost/fusion/include/transform.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
index ac8f1653..ed367e99 100644
--- a/doc/html/fusion/algorithm/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithm/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.68. Parameters

+

Table 1.68. Parameters

@@ -94,7 +94,7 @@
- + Expression Semantics
@@ -117,14 +117,14 @@ 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -132,7 +132,7 @@
 #include <boost/fusion/include/zip.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
index 1b0a6c9a..a4487787 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -107,14 +107,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
index 1a729e51..b09ce582 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           

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

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -134,7 +134,7 @@
- + Expression Semantics
@@ -164,14 +164,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
index 7daef275..c063d91f 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -131,14 +131,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
index 840630cc..22688844 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.73. Parameter

+

Table 1.73. Parameter

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
index 223bdff6..2d696bc8 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithm/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.74. Parameter

+

Table 1.74. Parameter

@@ -115,7 +115,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
index 2325c2b6..9f1bc538 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithm/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.85. Parameters

+

Table 1.85. Parameters

@@ -133,7 +133,7 @@
- + Expression Semantics
@@ -152,14 +152,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
index 3ed32a9d..b70d3a87 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithm/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.86. Parameters

+

Table 1.86. Parameters

@@ -135,7 +135,7 @@
- + Expression Semantics
@@ -154,14 +154,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
index d5161a7f..93f693ed 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithm/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/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
index d721679b..ad364d9c 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
index cf63ad2e..11a37984 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -111,7 +111,7 @@ except the first element.

- + Complexity

diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 89823b4e..8e276645 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/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.89. Parameters

+

Table 1.89. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -132,7 +132,7 @@ added to the end.

- + Complexity

diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index 1b200171..ad67daff 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/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.90. Parameters

+

Table 1.90. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -132,7 +132,7 @@ added to the beginning.

- + Complexity

diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index 703673e0..9a3acace 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -26,7 +26,7 @@

- + Description

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

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

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
index 1ea7739c..44468eb4 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithm/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.80. Parameters

+

Table 1.80. Parameters

@@ -115,7 +115,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
index d6d9c35d..af240b9d 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithm/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.77. Parameters

+

Table 1.77. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -130,14 +130,14 @@ replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
index dcded614..26ac64bb 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithm/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.78. Parameters

+

Table 1.78. Parameters

@@ -134,7 +134,7 @@
- + Expression Semantics
@@ -151,14 +151,14 @@ replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
index 17bc9674..84a08e9f 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -110,14 +110,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
index 2e12466d..9f9c7e0f 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -118,7 +118,7 @@
- + Expression Semantics
@@ -136,7 +136,7 @@ within seq.

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

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
@@ -263,7 +263,7 @@
 #include <boost/fusion/include/transform.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
index e97c4f37..2cb12b87 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithm/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 dda2f704..8c356fee 100644
--- a/doc/html/fusion/change_log.html
+++ b/doc/html/fusion/change_log.html
@@ -31,14 +31,29 @@
 
  • Sep 27, 2006: Added boost::tuple - support. + support. (Joel de Guzman)
  • Nov 17, 2006: Added boost::variant - support. + support. (Joel de Guzman)
  • - Feb 15, 2007: Added functional module. + Feb 15, 2007: Added functional module. (Tobias Schwinger) +
  • +
  • + APRIL 2, 2007: Added struct adapter. (Joel de Guzman) +
  • +
  • + May 8, 2007: Added associative struct adapter. (Dan Marsden) +
  • +
  • + Dec 20, 2007: Removed boost::variant + support. After thorough investigation, I think now that the move to make + variant a fusion sequence is rather quirky. A variant will always have a + size==1 regardless of the number of types it can contain and there's no way + to know at compile time what it contains. Iterating over its types is simply + wrong. All these imply that the variant is not + a fusion sequence. (Joel de Guzman)
diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index cbf78d3b..a08ca223 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -49,7 +49,7 @@ These containers are more or less counterparts of those in STL.

- + Header

diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
index 9aae9e4a..c98541f8 100644
--- a/doc/html/fusion/container/cons.html
+++ b/doc/html/fusion/container/cons.html
@@ -26,7 +26,7 @@
 
 

- + Description

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

- + Header

@@ -50,7 +50,7 @@
 #include <boost/fusion/include/cons.hpp>
 

- + Synopsis

@@ -58,7 +58,7 @@
 struct cons;
 

- + Template parameters

@@ -121,7 +121,7 @@

- + Model of

- + Example

diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
index 7dce3bc0..7b0a4c9d 100644
--- a/doc/html/fusion/container/conversion.html
+++ b/doc/html/fusion/container/conversion.html
@@ -34,7 +34,7 @@
         types using one of these conversion functions.
       

- + Header

diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
index c1c01063..1c0c7a3d 100644
--- a/doc/html/fusion/container/conversion/functions/as_list.html
+++ b/doc/html/fusion/container/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
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,7 +106,7 @@ seq, to a list.

- + Header
@@ -114,7 +114,7 @@
 #include <boost/fusion/include/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
index 96970ed9..19299e93 100644
--- a/doc/html/fusion/container/conversion/functions/as_map.html
+++ b/doc/html/fusion/container/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
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,7 +111,7 @@ There may be no duplicate fusion::pair key types.

- + Header
@@ -119,7 +119,7 @@
 #include <boost/fusion/include/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
index 07f13e38..edede9ee 100644
--- a/doc/html/fusion/container/conversion/functions/as_set.html
+++ b/doc/html/fusion/container/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
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -110,7 +110,7 @@ key types.

- + Header
@@ -118,7 +118,7 @@
 #include <boost/fusion/include/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
index cf2ffebf..d390bd72 100644
--- a/doc/html/fusion/container/conversion/functions/as_vector.html
+++ b/doc/html/fusion/container/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
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,7 +106,7 @@ seq, to a vector.

- + Header
@@ -114,7 +114,7 @@
 #include <boost/fusion/include/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
index b38529ce..ffe16a67 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
+++ b/doc/html/fusion/container/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
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -102,7 +102,7 @@ Sequence, to a list.

- + Header
@@ -110,7 +110,7 @@
 #include <boost/fusion/include/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
index 1cf61ca1..674cd94a 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/container/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
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -107,7 +107,7 @@ There may be no duplicate fusion::pair key types.

- + Header
@@ -115,7 +115,7 @@
 #include <boost/fusion/include/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
index bbc19d38..a1df58c6 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/container/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
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -106,7 +106,7 @@ key types.

- + Header
@@ -114,7 +114,7 @@
 #include <boost/fusion/include/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
index a2d812b3..785ce953 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/container/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
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -102,7 +102,7 @@ Sequence, to a vector.

- + Header
@@ -110,7 +110,7 @@
 #include <boost/fusion/include/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
index 6a4fbfde..45d6a9c1 100644
--- a/doc/html/fusion/container/generation.html
+++ b/doc/html/fusion/container/generation.html
@@ -33,7 +33,7 @@
         These are the functions that you can use to generate various forms of Container from elemental values.
       

- + Header

diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
index 9e5795df..1d9ab235 100644
--- a/doc/html/fusion/container/generation/functions/list_tie.html
+++ b/doc/html/fusion/container/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
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -115,7 +115,7 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
@@ -123,7 +123,7 @@
 #include <boost/fusion/include/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
index 7563364d..f010150f 100644
--- a/doc/html/fusion/container/generation/functions/make_cons.html
+++ b/doc/html/fusion/container/generation/functions/make_cons.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -128,7 +128,7 @@ (tail).

- + Header
@@ -136,14 +136,14 @@
 #include <boost/fusion/include/make_cons.hpp>
 
- + Example
 make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index fc5d03fe..e0746a10 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -26,7 +26,7 @@
- + Description

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

- + Synopsis
@@ -54,7 +54,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -101,7 +101,7 @@
- + Expression Semantics
@@ -115,7 +115,7 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
@@ -123,14 +123,14 @@
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
 make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index b7ef105f..a274b9b2 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -26,7 +26,7 @@
- + Description

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

- + Synopsis
@@ -47,7 +47,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 @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -125,7 +125,7 @@
- + Expression Semantics
@@ -146,7 +146,7 @@ key types.

- + Header
@@ -154,7 +154,7 @@
 #include <boost/fusion/include/make_map.hpp>
 
- + Example
@@ -163,7 +163,7 @@
   , make_pair<double>("Men"))
 
- + See also
@@ -173,7 +173,7 @@



-

[9] +

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

diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 1eb34948..a1e64608 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -26,7 +26,7 @@
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [8] + [8] 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
@@ -102,7 +102,7 @@
- + Expression Semantics
@@ -120,7 +120,7 @@ key types.

- + Header
@@ -128,14 +128,14 @@
 #include <boost/fusion/include/make_set.hpp>
 
- + Example
 make_set(123, "hello", 12.5)
 
- + See also
@@ -144,7 +144,7 @@



-

[8] +

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

diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index 436fa1d2..f0999784 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -26,7 +26,7 @@
- + Description

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

- + Synopsis
@@ -54,7 +54,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -101,7 +101,7 @@
- + Expression Semantics
@@ -115,7 +115,7 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
@@ -123,14 +123,14 @@
 #include <boost/fusion/include/make_vector.hpp>
 
- + Example
 make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 9e6807c9..02c64edd 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a map sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -122,7 +122,7 @@
- + Expression Semantics
@@ -138,7 +138,7 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

- + Header
@@ -146,7 +146,7 @@
 #include <boost/fusion/include/map_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
index c38d969c..5f852ba9 100644
--- a/doc/html/fusion/container/generation/functions/tiers.html
+++ b/doc/html/fusion/container/generation/functions/tiers.html
@@ -49,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))
-            [10]
+            [10]
             .
           

@@ -67,7 +67,7 @@ when calling functions which return sequences.

- + Ignore

@@ -82,7 +82,7 @@



-

[10] +

[10] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index a03733df..0d816ce5 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/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
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -115,7 +115,7 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
@@ -123,7 +123,7 @@
 #include <boost/fusion/include/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
index fca47734..97396d3a 100644
--- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
+++ b/doc/html/fusion/container/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
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -114,7 +114,7 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
@@ -122,7 +122,7 @@
 #include <boost/fusion/include/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
index efe89f27..92a31faa 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/container/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
@@ -105,7 +105,7 @@
- + Expression Semantics
@@ -123,7 +123,7 @@ (tail).

- + Header
@@ -131,7 +131,7 @@
 #include <boost/fusion/include/make_cons.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
index 8491ec4a..1442913b 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/container/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
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -115,7 +115,7 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
@@ -123,7 +123,7 @@
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
index 6b4c5e24..72ba51af 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/container/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 - [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 @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -123,7 +123,7 @@
- + Expression Semantics
@@ -143,7 +143,7 @@ key types.

- + Header
@@ -151,14 +151,14 @@
 #include <boost/fusion/include/make_map.hpp>
 
- + Example
 result_of::make_map<int, double, char, double>::type
 
- + See also
@@ -167,7 +167,7 @@



-

[12] +

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

diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index f9d5e46b..284be2e8 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/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 - [11] + [11] 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
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -120,7 +120,7 @@ key types.

- + Header
@@ -128,7 +128,7 @@
 #include <boost/fusion/include/make_set.hpp>
 
- + Example
@@ -136,7 +136,7 @@
 


-

[11] +

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

diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index 621caedc..920036ae 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/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
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -115,7 +115,7 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
@@ -123,7 +123,7 @@
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
index d1c26928..4e8f0c13 100644
--- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of map_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -120,7 +120,7 @@
- + Expression Semantics
@@ -136,7 +136,7 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

- + Header
@@ -144,7 +144,7 @@
 #include <boost/fusion/include/map_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
index 8885304f..e4a40918 100644
--- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/container/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
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -114,7 +114,7 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
@@ -122,7 +122,7 @@
 #include <boost/fusion/include/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
index a9ef2e9d..8cfac083 100644
--- a/doc/html/fusion/container/list.html
+++ b/doc/html/fusion/container/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

@@ -48,7 +48,7 @@
 #include <boost/fusion/include/list_fwd.hpp>
 

- + Synopsis

@@ -79,7 +79,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 

- + Template parameters

@@ -124,7 +124,7 @@

- + Model of

- + Example

diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
index 38216d2d..c0f6098c 100644
--- a/doc/html/fusion/container/map.html
+++ b/doc/html/fusion/container/map.html
@@ -26,7 +26,7 @@
 
 

- + Description

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

- + Header

@@ -50,7 +50,7 @@
 #include <boost/fusion/include/map_fwd.hpp>
 

- + Synopsis

@@ -81,7 +81,7 @@
 #define FUSION_MAX_MAP_SIZE 20
 

- + Template parameters

@@ -126,7 +126,7 @@

- + Model of

    @@ -159,7 +159,7 @@

- + Expression Semantics

@@ -246,7 +246,7 @@

- + Example

diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
index f78005b6..8c062479 100644
--- a/doc/html/fusion/container/set.html
+++ b/doc/html/fusion/container/set.html
@@ -26,7 +26,7 @@
 
 

- + Description

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

- + Header

@@ -49,7 +49,7 @@
 #include <boost/fusion/include/set_fwd.hpp>
 

- + Synopsis

@@ -80,7 +80,7 @@
 #define FUSION_MAX_SET_SIZE 20
 

- + Template parameters

@@ -125,7 +125,7 @@

- + Model of

    @@ -158,7 +158,7 @@

- + Expression Semantics

@@ -245,7 +245,7 @@

- + Example

diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
index 91947a94..954a2592 100644
--- a/doc/html/fusion/container/vector.html
+++ b/doc/html/fusion/container/vector.html
@@ -26,7 +26,7 @@
 
 

- + Description

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

- + Header

@@ -61,7 +61,7 @@
 #include <boost/fusion/include/vector50.hpp>
 

- + Synopsis

@@ -122,7 +122,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Template parameters

@@ -167,7 +167,7 @@

- + Model of

- + Example

diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index ec3d1f4e..b7c413cd 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -29,11 +29,6 @@
 
The Full Extension Mechanism
Sequence Facade
Iterator Facade
-
Macros
-
-
BOOST_FUSION_ADAPT_STRUCT
-
BOOST_FUSION_ADAPT_ASSOC_STRUCT
-
diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index a47aabcf..013c0e10 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -48,7 +48,7 @@

- + Our example

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

- + Enabling Tag Dispatching

@@ -124,7 +124,7 @@ #include<boost/fusion/include/tag_of.hpp>

- + Designing a suitable iterator

@@ -187,7 +187,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features

@@ -331,7 +331,7 @@

- + Implementing the remaining iterator functionality

@@ -386,7 +386,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence

@@ -445,7 +445,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative container

@@ -513,7 +513,7 @@ of is_associative_impl.

- + Summary

diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 89e46421..3403e178 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -7,7 +7,7 @@ - + @@ -20,13 +20,13 @@


-PrevUpHomeNext +PrevUpHomeNext

- + Description

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

- + Synopsis

@@ -43,7 +43,7 @@
 struct iterator_facade;
 

- + Usage

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

-

Table 1.93. Parameters

+

Table 1.93. Parameters

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

Table 1.94. Key Expressions

+

Table 1.94. Key Expressions

@@ -365,7 +365,7 @@

- + Header

@@ -373,11 +373,11 @@
 #include <boost/fusion/include/iterator_facade.hpp>
 

- + Example

- A full worked example using iterator_facade is provided in triple.cpp + A full working example using iterator_facade is provided in triple.cpp in the extension examples.

@@ -392,7 +392,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/extension/macros/adapt_assoc.html b/doc/html/fusion/extension/macros/adapt_assoc.html deleted file mode 100644 index 67ee2275..00000000 --- a/doc/html/fusion/extension/macros/adapt_assoc.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - BOOST_FUSION_ADAPT_ASSOC_STRUCT - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate - all the necessary boilerplate to make an arbitrary struct into a model - of Random - Access Sequence and Associative - Sequence. -

-
- - Synopsis -
-
-BOOST_FUSION_ADAPT_ASSOC_STRUCT(
-    struct_name
-    (member_type0, member_name0, key_type0)
-    (member_type1, member_name1, key_type1)
-    ...
-    )
-
-
- - Semantics -
-
-BOOST_FUSION_ADAPT_ASSOC_STRUCT(
-    struct_name
-    (member_type0, member_name0, key_type0)
-    (member_type1, member_name1, key_type1)
-    ...
-    )
-
-

- The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence and Associative - Sequence. The sequence of (member_typeN, - member_nameN, - key_typeN) - triples declare the type, name and key type of each of the struct members - that will be part of the sequence. -

-

- The macro should be used at global scope, and struct_name - should be the fully namespace qualified name of the struct to be converted. -

-

- /adapted/struct/adapt_assoc_struct.hpp> -

-
- - Example -
-
-namespace demo
-{
-    struct employee
-    {
-        std::string name;
-        int age;
-    };
-}
-
-namespace keys
-{
-    struct name;
-    struct age;
-}
-
-// demo::employee is now a Fusion sequence
-// It is also an associative sequence with
-// keys keys::name and keys::age present.
-BOOST_FUSION_ADAPT_ASSOC_STRUCT(
-    demo::employee
-    (std::string, name, keys::name)
-    (int, age, keys::age))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/macros/adapt_struct.html b/doc/html/fusion/extension/macros/adapt_struct.html deleted file mode 100644 index 7fe39093..00000000 --- a/doc/html/fusion/extension/macros/adapt_struct.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - BOOST_FUSION_ADAPT_STRUCT - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the - necessary boilerplate to make an arbitrary struct into a Random - Access Sequence. -

-
- - Synopsis -
-
-BOOST_FUSION_ADAPT_STRUCT(
-    struct_name
-    (member_type0, member_name0)
-    (member_type1, member_name1)
-    ...
-    )
-
-
- - Semantics -
-
-BOOST_FUSION_ADAPT_STRUCT(
-    struct_name,
-    (member_type0, member_name0)
-    (member_type1, member_name1)
-    ...
-    )
-
-

- The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence. The sequence of (member_typeN, - member_nameN) - pairs declare the type and names of each of the struct members that will - be part of the sequence. -

-

- The macro should be used at global scope, and struct_name - should be the fully namespace qualified name of the struct to be converted. -

-

- /adapted/struct/adapt_struct.hpp> -

-
- - Example -
-
-namespace demo
-{
-    struct employee
-    {
-        std::string name;
-        int age;
-    };
-}
-
-// demo::employee is now a Fusion sequence
-BOOST_FUSION_ADAPT_STRUCT(
-    demo::employee
-    (std::string, name)
-    (int, age))
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 30bad880..38c49e7d 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -26,7 +26,7 @@

- + Description

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

- + Synopsis

@@ -43,7 +43,7 @@
 struct sequence_facade;
 

- + Usage

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

-

Table 1.91. Parameters

+

Table 1.91. Parameters

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

Table 1.92. Key Expressions

+

Table 1.92. Key Expressions

@@ -243,7 +243,7 @@

- + Include

@@ -251,11 +251,11 @@
 #include <boost/fusion/include/sequence_facade.hpp>
 

- + Example

- A full worked example using sequence_facade is provided in triple.cpp + A full working example using sequence_facade is provided in triple.cpp in the extension examples.

diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 910a7b49..c71c6ec8 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext

@@ -65,7 +65,7 @@ /functional.hpp>

- + Fused and unfused forms

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

- + Calling functions and function objects

@@ -130,7 +130,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/fused.html b/doc/html/fusion/functional/adapters/fused.html index d2a50fc1..28492b6c 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -26,7 +26,7 @@
- + Description

@@ -59,7 +59,7 @@ /functional/adapter/fused.hpp>

- + Synopsis
@@ -67,7 +67,7 @@
 class fused;
 
- + Template parameters
@@ -114,7 +114,7 @@
- + Model of
    @@ -150,7 +150,7 @@
- + Expression Semantics
@@ -214,7 +214,7 @@
- + Example
@@ -222,7 +222,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 5cf15d21..ea01cb4e 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

    @@ -49,7 +49,7 @@ /functional/adapter/fused_function_object.hpp>

    - + Synopsis
    @@ -57,7 +57,7 @@
     class fused_function_object;
     
    - + Template parameters
    @@ -104,7 +104,7 @@
- + Model of
@@ -141,7 +141,7 @@
- + Expression Semantics
@@ -205,7 +205,7 @@
- + Example
@@ -243,7 +243,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index add84069..32fa9c5b 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -26,7 +26,7 @@
- + Description

@@ -66,7 +66,7 @@ /functional/adapter/fused_procedure.hpp>

- + Synopsis
@@ -74,7 +74,7 @@
 class fused_procedure;
 
- + Template parameters
@@ -120,7 +120,7 @@
- + Model of
@@ -156,7 +156,7 @@
- + Expression Semantics
@@ -220,7 +220,7 @@
- + Example
@@ -241,7 +241,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 77d2aedc..2466e19f 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -26,7 +26,7 @@
- + Description

@@ -58,7 +58,7 @@ /functional/adapter/unfused_generic.hpp>

- + Synopsis
@@ -66,7 +66,7 @@
 class unfused_generic;
 
- + Template parameters
@@ -113,7 +113,7 @@
- + Model of
@@ -154,7 +154,7 @@
- + Expression Semantics
@@ -218,7 +218,7 @@
- + Example
@@ -269,7 +269,7 @@
 }
 
- + 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 e948ebc5..6e2511b5 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

@@ -51,7 +51,7 @@ /functional/adapter/unfused_lvalue_args.hpp>

- + Synopsis
@@ -59,7 +59,7 @@
 class unfused_lvalue_args;
 
- + Template parameters
@@ -106,7 +106,7 @@
- + Model of
@@ -147,7 +147,7 @@
- + Expression Semantics
@@ -211,7 +211,7 @@
- + Example
@@ -239,7 +239,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 37e201ee..b43863b9 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

@@ -51,7 +51,7 @@ /functional/adapter/unfused_rvalue_args.hpp>

- + Synopsis
@@ -59,7 +59,7 @@
 class unfused_rvalue_args;
 
- + Template parameters
@@ -106,7 +106,7 @@
- + Model of
@@ -147,7 +147,7 @@
- + Expression Semantics
@@ -211,7 +211,7 @@
- + Example
@@ -237,7 +237,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 48435701..d7e4e349 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -26,7 +26,7 @@
- + Description

@@ -65,7 +65,7 @@ /functional/adapter/unfused_typed.hpp>

- + Synopsis
@@ -73,7 +73,7 @@
 class unfused_typed;
 
- + Template parameters
@@ -138,7 +138,7 @@
- + Model of
@@ -184,7 +184,7 @@
- + Expression Semantics
@@ -250,7 +250,7 @@
- + Example
@@ -319,7 +319,7 @@
 }
 
- + See also
    diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 5e7d0890..eba6689d 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@
    - + Description

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

    - + Models
      @@ -51,7 +51,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
    index ae24e85d..0e8e17e9 100644
    --- a/doc/html/fusion/functional/concepts/def_callable.html
    +++ b/doc/html/fusion/functional/concepts/def_callable.html
    @@ -31,7 +31,7 @@
             Callable Object"> Deferred
             Callable Object
- + Description

@@ -40,7 +40,7 @@ to determine the result of a call.

- + Refinement of
@@ -81,7 +81,7 @@
- + Expression requirements
@@ -119,7 +119,7 @@
- + Models
    @@ -133,7 +133,7 @@
- + Examples
diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
index a567cd6b..3f79e4e7 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 @@ Callable Object type.

- + Refinement of
@@ -83,7 +83,7 @@
- + Expression requirements
@@ -132,7 +132,7 @@
- + Models
    @@ -147,7 +147,7 @@
- + Examples
diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
index 9aa7b8da..d0273cb5 100644
--- a/doc/html/fusion/functional/concepts/reg_callable.html
+++ b/doc/html/fusion/functional/concepts/reg_callable.html
@@ -30,7 +30,7 @@
         Object"> Regular Callable
         Object
 
- + Description

@@ -39,7 +39,7 @@ can appear immediately to the left of a function call operator.

- + Refinement of
@@ -69,7 +69,7 @@
- + Expression requirements
@@ -116,7 +116,7 @@
- + Models
    @@ -128,7 +128,7 @@
- + Examples
diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
index 041d8044..899edc04 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,7 +111,7 @@ Semantics: Returns a fused adapter for f.

- + Header
@@ -119,7 +119,7 @@
 #include <boost/fusion/include/make_fused.hpp>
 
- + Example
@@ -135,7 +135,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 111c4a0a..136548c9 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,7 +114,7 @@ for f.

- + Header
@@ -122,7 +122,7 @@
 #include <boost/fusion/include/make_fused_function_object.hpp>
 
- + Example
@@ -151,7 +151,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 8f539520..44ae9d6c 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,7 +113,7 @@ f.

- + Header
@@ -121,7 +121,7 @@
 #include <boost/fusion/include/make_fused_procedure.hpp>
 
- + Example
@@ -131,7 +131,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 c55eb731..f11a9d87 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,7 +114,7 @@ f.

- + Header
@@ -122,7 +122,7 @@
 #include <boost/fusion/include/make_unfused_generic.hpp>
 
- + Example
@@ -158,7 +158,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 38b9343a..82876105 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,7 +114,7 @@ for f.

- + Header
@@ -122,7 +122,7 @@
 #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
 
- + Example
@@ -149,7 +149,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 aa090ee3..138b6e7b 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,7 +113,7 @@ for f.

- + Header
@@ -121,7 +121,7 @@
 #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
 
- + Example
@@ -147,7 +147,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 9837ccfc..d31f3854 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,7 +38,7 @@ make_fused">make_fused.

- + Header
@@ -46,7 +46,7 @@
 #include <boost/fusion/include/make_fused.hpp>
 
- + Synopsis
@@ -60,7 +60,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 639fc218..dde99913 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,7 +39,7 @@ make_fused_function_object">make_fused_function_object.

- + Header
@@ -47,7 +47,7 @@
 #include <boost/fusion/include/make_fused_function_object.hpp>
 
- + Synopsis
@@ -61,7 +61,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 cdc1fc5d..bed50f2f 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,7 +39,7 @@ make_fused_procedure">make_fused_procedure.

- + Header
@@ -47,7 +47,7 @@
 #include <boost/fusion/include/make_fused_procedure.hpp>
 
- + Synopsis
@@ -61,7 +61,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 44465808..f065e18d 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,7 +39,7 @@ make_unfused_generic">make_unfused_generic.

- + Header
@@ -47,7 +47,7 @@
 #include <boost/fusion/include/make_unfused_generic.hpp>
 
- + Synopsis
@@ -61,7 +61,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 896cb942..77172343 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,7 +39,7 @@ make_unfused_lvalue_args">make_unfused_lvalue_args.

- + Header
@@ -47,7 +47,7 @@
 #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
 
- + Synopsis
@@ -61,7 +61,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 62ede2eb..90d1841a 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,7 +38,7 @@ make_unfused_rvalue_args">make_unfused_rvalue_args.

- + Header
@@ -46,7 +46,7 @@
 #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
 
- + Synopsis
@@ -60,7 +60,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index a12fa9dc..e16842b1 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@
- + Description

@@ -47,7 +47,7 @@ and boost::shared_ptr).

- + Synopsis
@@ -66,7 +66,7 @@
 invoke(Function f, Sequence const & s);
 
- + Parameters
@@ -134,7 +134,7 @@
- + Expression Semantics
@@ -154,7 +154,7 @@ /functional/invocation/invoke.hpp>

- + Example
@@ -162,7 +162,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 44aabbcf..f58d50cd 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

@@ -43,7 +43,7 @@ and/or to control the const qualification of a function object.

- + Synopsis
@@ -64,7 +64,7 @@
 invoke_function_object(Function f, Sequence const & s);
 
- + Parameters
@@ -132,7 +132,7 @@
- + Expression Semantics
@@ -152,7 +152,7 @@ /functional/invocation/invoke_function_object.hpp>

- + Example
@@ -179,7 +179,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 f9a36bbb..04dd70b2 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

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

- + Synopsis
@@ -75,7 +75,7 @@
 invoke_procedure(Function f, Sequence const & s);
 
- + Parameters
@@ -142,7 +142,7 @@
- + Expression Semantics
@@ -161,7 +161,7 @@ /functional/invocation/invoke_procedure.hpp>

- + Example
@@ -171,7 +171,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 7cfd60fc..f91eb6d2 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@
- + Description

Returns the result type of invoke.

- + Synopsis
@@ -51,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 3c31c487..f63eb321 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -30,7 +30,7 @@ invoke_function_object"> invoke_function_object
- + Description

@@ -38,7 +38,7 @@ invoke_function_object">invoke_function_object.

- + Synopsis
@@ -55,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 3d4f6f60..54452d8d 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
- + Description

@@ -38,7 +38,7 @@ invoke_procedure">invoke_procedure.

- + Synopsis
@@ -55,7 +55,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 041d7801..d28a765e 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -73,9 +73,14 @@ iterators describe positions, and provide access to data within an underlying Sequence.

-

- /iterator.hpp> -

+

+ + Header +

+
+#include <boost/fusion/iterator.hpp>
+#include <boost/fusion/include/iterator.hpp>
+
diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 358b3268..048d5c1c 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/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
@@ -182,7 +182,7 @@
- + Meta Expressions
@@ -217,7 +217,7 @@
- + Expression Semantics
@@ -258,7 +258,7 @@
- + Invariants

@@ -275,7 +275,7 @@

- + Models
    diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index ac3d0f9d..d26df336 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -244,7 +244,7 @@
- + Meta Expressions
@@ -355,7 +355,7 @@
- + Expression Semantics
@@ -481,7 +481,7 @@
- + Invariants

@@ -505,7 +505,7 @@

- + Models
    diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 2d30031a..10060527 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/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
@@ -185,7 +185,7 @@
- + Meta Expressions
@@ -248,7 +248,7 @@
- + Models
    diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index d11323c8..ba2cf230 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/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

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -130,11 +130,16 @@ Iterator then M may be negative.

    -

    - /iterator/advance.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/advance.hpp>
    +#include <boost/fusion/include/advance.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
    index 6a4f036c..39b87e3d 100644
    --- a/doc/html/fusion/iterator/functions/advance_c.html
    +++ b/doc/html/fusion/iterator/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

    @@ -109,7 +109,7 @@
    - + Expression Semantics
    @@ -129,11 +129,16 @@ Iterator then N may be negative.

    -

    - /iterator/advance.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/advance.hpp>
    +#include <boost/fusion/include/advance.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
    index 21a6c7ca..af8ff882 100644
    --- a/doc/html/fusion/iterator/functions/deref.html
    +++ b/doc/html/fusion/iterator/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

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -103,11 +103,16 @@ Semantics: Dereferences the iterator i.

    -

    - /iterator/deref.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/deref.hpp>
    +#include <boost/fusion/include/deref.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
    index 6ed63921..65186c5c 100644
    --- a/doc/html/fusion/iterator/functions/distance.html
    +++ b/doc/html/fusion/iterator/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -104,11 +104,16 @@ Semantics: Returns the distance between iterators i and j.

    -

    - /iterator/distance.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/distance.hpp>
    +#include <boost/fusion/include/distance.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
    index a4c20f8f..dc248b3d 100644
    --- a/doc/html/fusion/iterator/functions/next.html
    +++ b/doc/html/fusion/iterator/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

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -104,11 +104,16 @@ Semantics: Returns an iterator to the next element after i.

    -

    - /iterator/next.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/next.hpp>
    +#include <boost/fusion/include/next.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
    index ea5e28c4..707453ea 100644
    --- a/doc/html/fusion/iterator/functions/prior.html
    +++ b/doc/html/fusion/iterator/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

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -104,11 +104,16 @@ Semantics: Returns an iterator to the element prior to i.

    -

    - /iterator/prior.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/prior.hpp>
    +#include <boost/fusion/include/prior.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
    index 47137648..45827c81 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance.html
    +++ b/doc/html/fusion/iterator/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

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -132,11 +132,16 @@ Iterator then M may be negative.

    -

    - /iterator/advance.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/advance.hpp>
    +#include <boost/fusion/include/advance.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
    index e84cc23e..8132124c 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterator/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

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -131,11 +131,16 @@ Iterator then N may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    -

    - /iterator/advance.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/advance.hpp>
    +#include <boost/fusion/include/advance.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
    index dd662d57..594ad5e3 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref.html
    +++ b/doc/html/fusion/iterator/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

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -106,11 +106,16 @@ Semantics: Returns the result of dereferencing an iterator of type I.

    -

    - /iterator/deref.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/deref.hpp>
    +#include <boost/fusion/include/deref.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
    index ac79fa59..4c2abeca 100644
    --- a/doc/html/fusion/iterator/metafunctions/distance.html
    +++ b/doc/html/fusion/iterator/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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -109,11 +109,16 @@ iterators of types I and J.

    -

    - /iterator/distance.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/distance.hpp>
    +#include <boost/fusion/include/distance.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
    index eeadcd86..6c5ae850 100644
    --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterator/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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -109,11 +109,16 @@ if I and J are iterators to the same position. Returns boost::mpl::false_ otherwise.

    -

    - /iterator/equal_to.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/equal_to.hpp>
    +#include <boost/fusion/include/equal_to.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
    index ee700313..20f63e19 100644
    --- a/doc/html/fusion/iterator/metafunctions/next.html
    +++ b/doc/html/fusion/iterator/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

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -107,11 +107,16 @@ Semantics: Returns an iterator to the next element in the sequence after I.

    -

    - /iterator/next.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/next.hpp>
    +#include <boost/fusion/include/next.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
    index aac06451..e76eacb4 100644
    --- a/doc/html/fusion/iterator/metafunctions/prior.html
    +++ b/doc/html/fusion/iterator/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

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -107,11 +107,16 @@ Semantics: Returns an iterator to the previous element in the sequence before I.

    -

    - /iterator/prior.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/prior.hpp>
    +#include <boost/fusion/include/prior.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
    index b54e9777..91d72481 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterator/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

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -106,11 +106,16 @@ Semantics: Returns the type stored in a sequence at iterator position I.

    -

    - /iterator/value_of.hpp> -

    +
    + + Header +
    +
    +#include <boost/fusion/iterator/value_of.hpp>
    +#include <boost/fusion/include/value_of.hpp>
    +
    - + Example
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
    index b36b5535..8e1c7e0f 100644
    --- a/doc/html/fusion/iterator/operator/operator_equality.html
    +++ b/doc/html/fusion/iterator/operator/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

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -108,9 +108,14 @@ where I and J are the types of i and j respectively.

-

- /iterator/equal_to.hpp> -

+
+ + Header +
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/include/equal_to.hpp>
+
diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html index 12836d8d..848af738 100644 --- a/doc/html/fusion/iterator/operator/operator_inequality.html +++ b/doc/html/fusion/iterator/operator/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

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -104,9 +104,14 @@ where I and J are the types of i and j respectively.

-

- /iterator/equal_to.hpp> -

+
+ + Header +
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/include/equal_to.hpp>
+
diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html index 416d0d35..8aee90c3 100644 --- a/doc/html/fusion/iterator/operator/operator_unary_star.html +++ b/doc/html/fusion/iterator/operator/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

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -107,11 +107,16 @@

Semantics: Equivalent to deref(i).

-

- /iterator/deref.hpp> -

+
+ + Header +
+
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/include/deref.hpp>
+
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 6066d71a..6633e462 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -27,7 +27,7 @@
 
 

- + Recursive Inlined Functions

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

- + Overloaded Functions

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

- + Tag Dispatching

@@ -103,7 +103,7 @@

- + Extensibility

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

- + Element Conversion

@@ -161,7 +161,7 @@

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

@@ -194,7 +194,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -237,7 +237,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 bd98ce83..f8b81d23 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

@@ -65,7 +65,7 @@ against.

- + Directory

    @@ -186,7 +186,7 @@

- + Example

@@ -202,12 +202,12 @@

The first includes all containers The second 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 cf6c413d..dd0d2c31 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -44,7 +44,7 @@

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

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index f6aa9396..5ddda68f 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] :

@@ -42,7 +42,7 @@
 

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

@@ -60,7 +60,7 @@
       Let's see some examples.
     

- + Print the vector as XML

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

- + Print only pointers

@@ -152,7 +152,7 @@ Easy, right?

- + Associative tuples

@@ -227,7 +227,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -238,12 +238,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/sequence.html b/doc/html/fusion/sequence.html index 019ea590..2153c0d1 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -59,7 +59,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
index 0340f9a9..b0e6586e 100644
--- a/doc/html/fusion/sequence/concepts.html
+++ b/doc/html/fusion/sequence/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/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 6bc665f4..52601047 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,7 +71,7 @@

- + Valid Expressions
@@ -180,7 +180,7 @@
- + Result Type Expressions
@@ -252,7 +252,7 @@ result_of::value_at_key<S, N>.

- + Expression Semantics
@@ -307,7 +307,7 @@
- + Models
    diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index cde3c9fd..29873750 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/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
@@ -207,7 +207,7 @@
- + Result Type Expressions
@@ -268,7 +268,7 @@
- + Expression Semantics
@@ -309,7 +309,7 @@
- + Models
    diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 8fd98917..72234679 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,7 +62,7 @@

- + Valid Expressions
@@ -239,7 +239,7 @@
- + Result Type Expressions
@@ -324,7 +324,7 @@
- + Expression Semantics
@@ -412,7 +412,7 @@
- + Invariants

@@ -438,7 +438,7 @@

- + Models
    diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 8667db10..3ac377a8 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

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

- + Refinement of
@@ -79,7 +79,7 @@
- + Valid Expressions
@@ -214,7 +214,7 @@
- + Result Type Expressions
@@ -297,7 +297,7 @@ result_of::value_at<S, N>.

- + Expression Semantics
@@ -338,7 +338,7 @@
- + Models
    diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index ef98da14..c52186f1 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -37,11 +37,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [4] + [4] .

    - + Header

    @@ -50,7 +50,7 @@
     


    -

    [4] +

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

    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index febaf74f..0da653e0 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
- + Header
@@ -149,7 +149,7 @@
 #include <boost/fusion/include/at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
index 6ed7d633..2a3fa109 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
- + Header
@@ -149,7 +149,7 @@
 #include <boost/fusion/include/at_c.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
index 4fae466d..7bb0c710 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -136,7 +136,7 @@ with Key.

- + Header
@@ -144,7 +144,7 @@
 #include <boost/fusion/include/at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
index d08eedb6..6628b362 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/back.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -117,7 +117,7 @@ in the sequence.

- + Header
@@ -125,7 +125,7 @@
 #include <boost/fusion/include/back.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
index d678e0c8..65f3d483 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -123,7 +123,7 @@ to the first element in the sequence.

- + Header
@@ -131,7 +131,7 @@
 #include <boost/fusion/include/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
index 8665a591..6123710a 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,7 +106,7 @@ to false.

- + Header
@@ -114,7 +114,7 @@
 #include <boost/fusion/include/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
index bdac3243..7b203fdf 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/end.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -123,7 +123,7 @@ to one element past the end of the sequence.

- + Header
@@ -131,7 +131,7 @@
 #include <boost/fusion/include/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
index 730d2ae3..a65fecac 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/front.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -117,7 +117,7 @@ in the sequence.

- + Header
@@ -125,7 +125,7 @@
 #include <boost/fusion/include/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
index 0dd8ac89..28343c9f 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -126,7 +126,7 @@ associated with Key, else, evaluates to false.

- + Header
@@ -134,7 +134,7 @@
 #include <boost/fusion/include/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
index b39c2b24..5e14fe96 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/size.html
+++ b/doc/html/fusion/sequence/intrinsic/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
@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -105,7 +105,7 @@ in the sequence.

- + Header
@@ -113,7 +113,7 @@
 #include <boost/fusion/include/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
index af676b30..fdc17831 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
@@ -26,14 +26,14 @@
 
 
- + Description

Performs an element by element swap of the elements in 2 sequences.

- + Synopsis
@@ -41,7 +41,7 @@
 void swap(Seq1& seq1, Seq2& seq2);
 
- + Parameters
@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -108,7 +108,7 @@ /sequence/intrinsic/swap.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
index a46164c5..f64d3635 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
@@ -26,16 +26,16 @@
 
 
- + Description

Returns the result type of at - [5] + [5] .

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

Table 1.25. Parameters

+

Table 1.25. Parameters

@@ -114,7 +114,7 @@
- + Expression Semantics
@@ -132,7 +132,7 @@ /sequence/intrinsic/at.hpp>

- + Example
@@ -141,7 +141,7 @@
 


-

[5] +

[5] 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/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index a393d214..9a1467cf 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_c - [6] + [6] .

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

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -131,7 +131,7 @@ /sequence/intrinsic/at.hpp>

- + Example
@@ -140,7 +140,7 @@
 


-

[6] +

[6] 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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 4e4e59a4..616c7e69 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_key - [7] + [7] .

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

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -113,7 +113,7 @@
- + Expression Semantics
@@ -133,7 +133,7 @@ /sequence/intrinsic/at_key.hpp>

- + Example
@@ -142,7 +142,7 @@
 


-

[7] +

[7] 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/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index e08e328a..0c036000 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/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

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -108,7 +108,7 @@ /sequence/intrinsic/back.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
index 31afe5cc..01959372 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,7 +109,7 @@ /sequence/intrinsic/begin.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
index caa2cb21..46b6ecd6 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -110,7 +110,7 @@ /sequence/intrinsic/empty.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
index 1ff2e991..9996629f 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,7 +109,7 @@ /sequence/intrinsic/end.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
index 7a6ffc03..e7ac5200 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,7 +109,7 @@ /sequence/intrinsic/front.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
index 666d5be3..ec2f92cc 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -132,7 +132,7 @@ /sequence/intrinsic/has_key.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
index be608b52..d1406503 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,7 +109,7 @@ /sequence/intrinsic/size.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
index 487d52c8..0311007f 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the return type of swap.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -90,7 +90,7 @@
- + Expression Semantics
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index dde3a635..2c526a2e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/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

@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -130,7 +130,7 @@ /sequence/intrinsic/value_at.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
index ddfee016..ce8f269d 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -129,7 +129,7 @@ /sequence/intrinsic/value_at.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
index f2890ff8..1e59c484 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequence/intrinsic/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

@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -130,7 +130,7 @@ /sequence/intrinsic/value_at_key.hpp>

- + Example
diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
index 9f5c536b..d672ae90 100644
--- a/doc/html/fusion/sequence/operator/comparison.html
+++ b/doc/html/fusion/sequence/operator/comparison.html
@@ -48,7 +48,7 @@
           only until the result is clear.
         

- + Header
diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
index e0c55ec8..ac58ba16 100644
--- a/doc/html/fusion/sequence/operator/comparison/equal.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -125,7 +125,7 @@ true.

- + Header
@@ -133,7 +133,7 @@
 #include <boost/fusion/include/equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
index abd98ba6..2220a666 100644
--- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -117,7 +117,7 @@ Semantics: Returns b < a.

- + Header
@@ -125,7 +125,7 @@
 #include <boost/fusion/include/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
index 6533dbf9..821bbe24 100644
--- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -116,7 +116,7 @@ Semantics: Returns !(a < b).

- + Header
@@ -124,7 +124,7 @@
 #include <boost/fusion/include/greater_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
index aa37d8ee..be1cc13c 100644
--- a/doc/html/fusion/sequence/operator/comparison/less_than.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -119,7 +119,7 @@ and b.

- + Header
@@ -127,7 +127,7 @@
 #include <boost/fusion/include/less.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
index d0c57fb5..fbd644ff 100644
--- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -117,7 +117,7 @@ Semantics: Returns !(b < a).

- + Header
@@ -125,7 +125,7 @@
 #include <boost/fusion/include/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
index 888c5a35..df6ff637 100644
--- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -119,7 +119,7 @@ Returns !(a == b).

- + Header
@@ -127,7 +127,7 @@
 #include <boost/fusion/include/not_equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
index 57deee8e..7a89ecfb 100644
--- a/doc/html/fusion/sequence/operator/i_o.html
+++ b/doc/html/fusion/sequence/operator/i_o.html
@@ -116,7 +116,7 @@
           representation may not be unambiguously parseable.
         

- + Header
diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
index f3d8bd62..cf361fb6 100644
--- a/doc/html/fusion/sequence/operator/i_o/in.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -107,7 +107,7 @@
- + Expression Semantics
@@ -123,7 +123,7 @@ e.

- + Header
@@ -131,7 +131,7 @@
 #include <boost/fusion/include/in.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
index ff958594..dc94b7e4 100644
--- a/doc/html/fusion/sequence/operator/i_o/out.html
+++ b/doc/html/fusion/sequence/operator/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
@@ -107,7 +107,7 @@
- + Expression Semantics
@@ -123,7 +123,7 @@ e.

- + Header
@@ -131,7 +131,7 @@
 #include <boost/fusion/include/out.hpp>
 
- + Example
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
index be696fe3..4aa7854c 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

@@ -95,7 +95,7 @@

- + Expression Semantics

@@ -161,7 +161,7 @@ of a particular Sequence or Iterator.

- + Header

@@ -169,7 +169,7 @@
 #include <boost/fusion/include/category_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
index 322b1e23..e38e4188 100644
--- a/doc/html/fusion/support/deduce.html
+++ b/doc/html/fusion/support/deduce.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -39,7 +39,7 @@ Reference wrappers are removed (see boost::ref).

- + Header

@@ -47,7 +47,7 @@
 #include <boost/fusion/include/deduce.hpp>
 

- + Synopsis

@@ -61,7 +61,7 @@
 }
 

- + Example

@@ -82,7 +82,7 @@
 }
 

- + See also

diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 67e63b47..19498df8 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -26,7 +26,7 @@

- + Description

@@ -39,7 +39,7 @@ original type as its argument.

- + Header

@@ -47,7 +47,7 @@
 #include <boost/fusion/include/deduce_sequence.hpp>
 

- + Synopsis

@@ -61,7 +61,7 @@
 }
 

- + Example

@@ -84,7 +84,7 @@
 }
 

- + See also

diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index c2decf52..ff60883a 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

@@ -96,7 +96,7 @@

- + Expression Semantics

@@ -114,7 +114,7 @@ otherwise.

- + Header

@@ -122,7 +122,7 @@
 #include <boost/fusion/include/is_sequence.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index b5a1b250..b9183d07 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

@@ -99,7 +99,7 @@

- + Expression Semantics

@@ -116,7 +116,7 @@
         otherwise.
       

- + Header

@@ -124,7 +124,7 @@
 #include <boost/fusion/include/is_view.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index 4d79502a..9ebf447f 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

@@ -140,13 +140,14 @@

- + Expression Semantics

+ + @@ -173,6 +175,7 @@ equivalent to result_of::first<P>::type.

+ + + + + - - - - - - - - - - - - - - - - - - -
@@ -159,6 +160,7 @@ Semantics

 
 
@@ -186,6 +189,7 @@ equivalent to result_of::second<P>::type.

 
@@ -198,6 +202,7 @@ Default construction.

 
@@ -210,6 +215,7 @@ Construct a pair given value for the second type, s.

 
@@ -222,80 +228,42 @@ Copy constructs a pair from another pair, p2.

 

- p = - p2 + p.second

- 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 -

-
-

- 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 + Get the data from p1.]] [[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]] + [[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`

@@ -307,7 +275,7 @@

- + Header

@@ -315,7 +283,7 @@
 #include <boost/fusion/include/pair.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index d29ac923..5c2438c8 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

@@ -99,7 +99,7 @@

- + Expression Semantics

@@ -113,7 +113,7 @@
         with T.
       

- + Header

@@ -121,7 +121,7 @@
 #include <boost/fusion/include/tag_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
index 9a259637..64119b29 100644
--- a/doc/html/fusion/tuple/class_template_tuple.html
+++ b/doc/html/fusion/tuple/class_template_tuple.html
@@ -48,7 +48,7 @@
         in future releases of fusion.
       

- + Synopsis

diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
index c4c70c4f..9b1cb593 100644
--- a/doc/html/fusion/tuple/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
@@ -27,7 +27,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 8d0a8a1c..450afe7c 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/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/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
index 3aec30f4..c0ae67bd 100644
--- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuple/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/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index c37de3d0..d9dccb61 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -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/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
index df0e8918..0b7368bc 100644
--- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
@@ -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/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
index dbd2bb11..9e5d1283 100644
--- a/doc/html/fusion/tuple/pairs.html
+++ b/doc/html/fusion/tuple/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/fusion/view.html b/doc/html/fusion/view.html
index 3c535142..180b732b 100644
--- a/doc/html/fusion/view.html
+++ b/doc/html/fusion/view.html
@@ -44,7 +44,7 @@
       to copy and be passed around by value.
     

- + Header

diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
index eb410f4b..734b5ffe 100644
--- a/doc/html/fusion/view/filter_view.html
+++ b/doc/html/fusion/view/filter_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header

@@ -45,7 +45,7 @@
 #include <boost/fusion/include/filter_view.hpp>
 

- + Synopsis

@@ -53,7 +53,7 @@
 struct filter_view;
 

- + Template parameters

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

- + Model of

- + Example

diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
index 62357d4e..68a3b260 100644
--- a/doc/html/fusion/view/iterator_range.html
+++ b/doc/html/fusion/view/iterator_range.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -34,7 +34,7 @@ sub-range of its underlying sequence delimited by a pair of iterators.

- + Header

@@ -42,7 +42,7 @@
 #include <boost/fusion/include/iterator_range.hpp>
 

- + Synopsis

@@ -50,7 +50,7 @@
 struct iterator_range;
 

- + Template parameters

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

- + Model of

  • @@ -149,7 +149,7 @@

- + Expression Semantics

@@ -224,7 +224,7 @@

- + Example

diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
index aef924a0..1d617e57 100644
--- a/doc/html/fusion/view/joint_view.html
+++ b/doc/html/fusion/view/joint_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -34,7 +34,7 @@ which is a concatenation of two sequences.

- + Header

@@ -42,7 +42,7 @@
 #include <boost/fusion/include/joint_view.hpp>
 

- + Synopsis

@@ -50,7 +50,7 @@
 struct joint_view;
 

- + Template parameters

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

- + Model of

- + Example

diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
index 8af6f29c..bc1ea08e 100644
--- a/doc/html/fusion/view/reverse_view.html
+++ b/doc/html/fusion/view/reverse_view.html
@@ -31,7 +31,7 @@
         element will be its first.
       

- + Header

@@ -39,7 +39,7 @@
 #include <boost/fusion/include/reverse_view.hpp>
 

- + Synopsis

@@ -47,7 +47,7 @@
 struct reverse_view;
 

- + Template parameters

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

- + Model of

- + Example

diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
index 0cad96c7..f302a863 100644
--- a/doc/html/fusion/view/single_view.html
+++ b/doc/html/fusion/view/single_view.html
@@ -30,7 +30,7 @@
         a value as a single element sequence.
       

- + Header

@@ -38,7 +38,7 @@
 #include <boost/fusion/include/single_view.hpp>
 

- + Synopsis

@@ -46,7 +46,7 @@
 struct single_view;
 

- + Template parameters

@@ -90,7 +90,7 @@

- + Model of

- + Example

diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
index 70434e88..6baac9f9 100644
--- a/doc/html/fusion/view/transform_view.html
+++ b/doc/html/fusion/view/transform_view.html
@@ -35,7 +35,7 @@
         Traversal Concept) of its underlying sequence or sequences.
       

- + Header

@@ -43,7 +43,7 @@
 #include <boost/fusion/include/transform_view.hpp>
 

- + Synopsis

@@ -61,7 +61,7 @@ struct transform_view;

- + Template parameters

@@ -183,7 +183,7 @@

- + Model of

  • @@ -242,7 +242,7 @@

- + Expression Semantics

@@ -337,7 +337,7 @@

- + Example

diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
index 39d8d387..fe54d444 100644
--- a/doc/html/fusion/view/zip_view.html
+++ b/doc/html/fusion/view/zip_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ to the component _sequence_s.

- + Header

@@ -45,7 +45,7 @@
 #include <boost/fusion/include/zip_view.hpp>
 

- + Synopsis

@@ -53,7 +53,7 @@
 struct zip_view;
 

- + Template parameters

@@ -99,7 +99,7 @@

- + Model of

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

- + Expression Semantics

@@ -204,7 +204,7 @@

- + Example

diff --git a/doc/html/index.html b/doc/html/index.html
index 2ce13dde..2cfc827a 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -34,7 +34,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)

@@ -156,7 +156,8 @@
mpl sequence
boost::array
boost::tuple
-
boost::variant
+
BOOST_FUSION_ADAPT_STRUCT
+
BOOST_FUSION_ADAPT_ASSOC_STRUCT
Algorithm
@@ -197,11 +198,6 @@
The Full Extension Mechanism
Sequence Facade
Iterator Facade
-
Macros
-
-
BOOST_FUSION_ADAPT_STRUCT
-
BOOST_FUSION_ADAPT_ASSOC_STRUCT
-
Functional
@@ -244,7 +240,7 @@
- +

Last revised: November 14, 2007 at 10:10:22 GMT

Last revised: December 20, 2007 at 05:09:32 GMT


diff --git a/doc/iterator.qbk b/doc/iterator.qbk index fb1553c6..b057513c 100644 --- a/doc/iterator.qbk +++ b/doc/iterator.qbk @@ -11,7 +11,9 @@ 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__. -/iterator.hpp> +[heading Header] + #include + #include [section Concepts] @@ -237,7 +239,9 @@ Deferences an iterator. [*Semantics]: Dereferences the iterator `i`. -/iterator/deref.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -273,7 +277,9 @@ Moves an iterator 1 position forwards. [*Semantics]: Returns an iterator to the next element after `i`. -/iterator/next.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -308,7 +314,9 @@ Moves an iterator 1 position backwards. [*Semantics]: Returns an iterator to the element prior to `i`. -/iterator/prior.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -343,7 +351,9 @@ Returns the distance between 2 iterators. [*Semantics]: Returns the distance between iterators `i` and `j`. -/iterator/distance.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -378,7 +388,9 @@ Moves an iterator by a specified distance. [*Semantics]: Returns an iterator to the element `M` positions from `i`. If `i` is a __bidirectional_iterator__ then `M` may be negative. -/iterator/advance.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -413,7 +425,9 @@ Moves an iterator by a specified distance. [*Semantics]: Returns an iterator to the element `N` positions from `i`. If `i` is a __bidirectional_iterator__ then `N` may be negative. -/iterator/advance.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -452,7 +466,9 @@ Dereferences an iterator. [*Semantics]: Equivalent to `__deref__(i)`. -/iterator/deref.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -489,7 +505,9 @@ Compares 2 iterators for equality. [*Semantics]: Equivalent to `__result_of_equal_to__::value` where `I` and `J` are the types of `i` and `j` respectively. -/iterator/equal_to.hpp> +[heading Header] + #include + #include [endsect] @@ -516,7 +534,9 @@ Compares 2 iterators for inequality. [*Semantics]: Equivalent to `!__result_of_equal_to__::value` where `I` and `J` are the types of `i` and `j` respectively. -/iterator/equal_to.hpp> +[heading Header] + #include + #include [endsect] @@ -551,7 +571,9 @@ Returns the type stored at the position of an iterator. [*Semantics]: Returns the type stored in a sequence at iterator position `I`. -/iterator/value_of.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -591,7 +613,9 @@ Returns the type that will be returned by dereferencing an iterator. [*Semantics]: Returns the result of dereferencing an iterator of type `I`. -/iterator/deref.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -633,7 +657,9 @@ Returns the type of the next iterator in a sequence. [*Semantics]: Returns an iterator to the next element in the sequence after `I`. -/iterator/next.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -669,7 +695,9 @@ Returns the type of the previous iterator in a sequence. [*Semantics]: Returns an iterator to the previous element in the sequence before `I`. -/iterator/prior.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -709,7 +737,9 @@ Returns a true-valued __mpl_integral_constant__ if `I` and `J` are equal. [*Semantics]: Returns `boost::mpl::true_` if `I` and `J` are iterators to the same position. Returns `boost::mpl::false_` otherwise. -/iterator/equal_to.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -747,7 +777,9 @@ Returns the distance between two iterators. [*Semantics]: Returns the distance between iterators of types `I` and `J`. -/iterator/distance.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -788,7 +820,9 @@ Moves an iterator a specified distance. [*Semantics]: Returns an iterator a distance `M` from `I`. If `I` is a __bidirectional_iterator__ then `M` may be negative. -/iterator/advance.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; @@ -828,7 +862,9 @@ Moves an iterator by a specified distance. [*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`. -/iterator/advance.hpp> +[heading Header] + #include + #include [heading Example] typedef __vector__ vec; diff --git a/doc/support.qbk b/doc/support.qbk index 0c078efa..cb5d9b1d 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -414,7 +414,8 @@ It is used as elements in __map__s, for example. [[`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`.]] + [[`p.second`] [Get the data from `p1.]] + [[`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`.]] diff --git a/test/Jamfile b/test/Jamfile index f70629b8..b6101e3d 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -81,7 +81,6 @@ 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/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index c9c1d2db..2d208b57 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -42,6 +42,9 @@ BOOST_FUSION_ADAPT_STRUCT( (int, y) ) +struct s { int m; }; +BOOST_FUSION_ADAPT_STRUCT(s, (int, m)) + int main() { @@ -101,6 +104,16 @@ main() l = p; } + { // begin/end + using namespace boost::fusion; + using boost::is_same; + + typedef result_of::begin::type b; + typedef result_of::end::type e; + // this fails + BOOST_MPL_ASSERT((is_same::type, e>)); + } + return boost::report_errors(); } diff --git a/test/sequence/variant.cpp b/test/sequence/variant.cpp deleted file mode 100644 index bfbf6fd3..00000000 --- a/test/sequence/variant.cpp +++ /dev/null @@ -1,56 +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) -==============================================================================*/ - -#include - -#include -#include -#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_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"); - 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(); -} diff --git a/todo.txt b/todo.txt index d164d6ae..e4f49f61 100644 --- a/todo.txt +++ b/todo.txt @@ -6,6 +6,22 @@ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================== +* Provide macros for adapting classes, similar to BOOST_FUSION_ADAPT_STRUCT + and BOOST_FUSION_ADAPT_ASSOC_STRUCT, but with with user control over + member accessors (e.g. get and set free functions). + +* Document extension::struct_size, extension::struct_member and + extension::struct_assoc_member in extension section. + +* Document rationale behind at and value_at and how to choose which + to use. + +* Reinstate the function object algorithms + +* Break all dependency cycles if there are some more + +* Break the view<-->algorithm dependency cycle + * Improve extension docs * Document sequence/convert From 9e8d8b18715c2e90ebaaa72663e37f15788a7f7d Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 10 Feb 2008 16:39:38 +0000 Subject: [PATCH 05/82] Merged revisions 43206,43208-43213 via svnmerge from https://svn.boost.org/svn/boost/trunk ........ r43206 | danieljames | 2008-02-10 09:55:03 +0000 (Sun, 10 Feb 2008) | 1 line Fix some broken links. ........ r43209 | danieljames | 2008-02-10 14:56:22 +0000 (Sun, 10 Feb 2008) | 1 line Link to people pages on the website, as they've been removed from the download. ........ r43210 | danieljames | 2008-02-10 15:02:17 +0000 (Sun, 10 Feb 2008) | 1 line Point links to the pages that used to be in 'more' to the site. ........ r43212 | danieljames | 2008-02-10 16:10:16 +0000 (Sun, 10 Feb 2008) | 1 line Fix links on the home page as well. ........ r43213 | danieljames | 2008-02-10 16:21:22 +0000 (Sun, 10 Feb 2008) | 1 line Generated documentation which is no longer generated. ........ [SVN r43214] --- doc/html/fusion/extension/macros.html | 47 --------------------------- 1 file changed, 47 deletions(-) delete mode 100644 doc/html/fusion/extension/macros.html diff --git a/doc/html/fusion/extension/macros.html b/doc/html/fusion/extension/macros.html deleted file mode 100644 index 3f34c28f..00000000 --- a/doc/html/fusion/extension/macros.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Macros - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - From 813930aee62b9e39913c70dca100af5e74d3b347 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 16 Mar 2008 11:38:32 +0000 Subject: [PATCH 06/82] Rebuild a lot of documentation. [SVN r43650] --- doc/html/fusion/acknowledgements.html | 11 +- doc/html/fusion/adapted.html | 31 +-- doc/html/fusion/adapted/adapt_assoc.html | 75 +++--- doc/html/fusion/adapted/adapt_struct.html | 69 +++-- doc/html/fusion/adapted/boost__array.html | 63 +++-- doc/html/fusion/adapted/boost__tuple.html | 55 ++-- doc/html/fusion/adapted/mpl_sequence.html | 60 ++--- doc/html/fusion/adapted/std__pair.html | 63 +++-- doc/html/fusion/algorithm.html | 69 ++--- doc/html/fusion/algorithm/iteration.html | 19 +- .../fusion/algorithm/iteration/functions.html | 11 +- .../iteration/functions/accumulate.html | 88 +++--- .../algorithm/iteration/functions/fold.html | 88 +++--- .../iteration/functions/for_each.html | 77 +++--- .../algorithm/iteration/metafunctions.html | 11 +- .../iteration/metafunctions/accumulate.html | 74 ++--- .../iteration/metafunctions/fold.html | 74 ++--- .../iteration/metafunctions/for_each.html | 64 ++--- doc/html/fusion/algorithm/query.html | 19 +- .../fusion/algorithm/query/functions.html | 11 +- .../fusion/algorithm/query/functions/all.html | 86 +++--- .../fusion/algorithm/query/functions/any.html | 86 +++--- .../algorithm/query/functions/count.html | 76 +++--- .../algorithm/query/functions/count_if.html | 74 ++--- .../algorithm/query/functions/find.html | 72 ++--- .../algorithm/query/functions/find_if.html | 70 ++--- .../algorithm/query/functions/none.html | 86 +++--- .../fusion/algorithm/query/metafunctions.html | 11 +- .../algorithm/query/metafunctions/all.html | 68 +++-- .../algorithm/query/metafunctions/any.html | 68 +++-- .../algorithm/query/metafunctions/count.html | 58 ++-- .../query/metafunctions/count_if.html | 58 ++-- .../algorithm/query/metafunctions/find.html | 62 ++--- .../query/metafunctions/find_if.html | 64 ++--- .../algorithm/query/metafunctions/none.html | 68 +++-- doc/html/fusion/algorithm/transformation.html | 21 +- .../algorithm/transformation/functions.html | 11 +- .../transformation/functions/clear.html | 61 +++-- .../transformation/functions/erase.html | 96 ++++--- .../transformation/functions/erase_key.html | 71 +++-- .../transformation/functions/filter.html | 69 +++-- .../transformation/functions/filter_if.html | 73 +++-- .../transformation/functions/insert.html | 72 +++-- .../functions/insert_range.html | 77 +++--- .../transformation/functions/join.html | 72 +++-- .../transformation/functions/pop_back.html | 63 +++-- .../transformation/functions/pop_front.html | 63 +++-- .../transformation/functions/push_back.html | 67 +++-- .../transformation/functions/push_front.html | 67 +++-- .../transformation/functions/remove.html | 69 +++-- .../transformation/functions/remove_if.html | 71 +++-- .../transformation/functions/replace.html | 79 +++--- .../transformation/functions/replace_if.html | 79 +++--- .../transformation/functions/reverse.html | 61 +++-- .../transformation/functions/transform.html | 128 +++++---- .../transformation/functions/zip.html | 77 +++--- .../transformation/metafunctions.html | 11 +- .../transformation/metafunctions/clear.html | 50 ++-- .../transformation/metafunctions/erase.html | 76 +++--- .../metafunctions/erase_key.html | 59 ++-- .../transformation/metafunctions/filter.html | 63 +++-- .../metafunctions/filter_if.html | 61 +++-- .../transformation/metafunctions/insert.html | 66 +++-- .../metafunctions/insert_range.html | 69 +++-- .../transformation/metafunctions/join.html | 42 +-- .../metafunctions/pop_back.html | 55 ++-- .../metafunctions/pop_front.html | 51 ++-- .../metafunctions/push_back.html | 55 ++-- .../metafunctions/push_front.html | 55 ++-- .../transformation/metafunctions/remove.html | 63 +++-- .../metafunctions/remove_if.html | 63 +++-- .../transformation/metafunctions/replace.html | 57 ++-- .../metafunctions/replace_if.html | 65 +++-- .../transformation/metafunctions/reverse.html | 55 ++-- .../metafunctions/transform.html | 128 +++++---- .../transformation/metafunctions/zip.html | 53 ++-- doc/html/fusion/change_log.html | 19 +- doc/html/fusion/container.html | 24 +- doc/html/fusion/container/cons.html | 184 +++++++------ doc/html/fusion/container/conversion.html | 21 +- .../container/conversion/functions.html | 11 +- .../conversion/functions/as_list.html | 47 ++-- .../conversion/functions/as_map.html | 55 ++-- .../conversion/functions/as_set.html | 49 ++-- .../conversion/functions/as_vector.html | 47 ++-- .../container/conversion/metafunctions.html | 11 +- .../conversion/metafunctions/as_list.html | 51 ++-- .../conversion/metafunctions/as_map.html | 59 ++-- .../conversion/metafunctions/as_set.html | 53 ++-- .../conversion/metafunctions/as_vector.html | 51 ++-- doc/html/fusion/container/generation.html | 21 +- .../container/generation/functions.html | 11 +- .../generation/functions/list_tie.html | 61 ++--- .../generation/functions/make_cons.html | 65 ++--- .../generation/functions/make_list.html | 67 ++--- .../generation/functions/make_map.html | 93 +++---- .../generation/functions/make_set.html | 77 +++--- .../generation/functions/make_vector.html | 67 ++--- .../generation/functions/map_tie.html | 69 ++--- .../container/generation/functions/tiers.html | 41 +-- .../generation/functions/vector_tie.html | 61 ++--- .../container/generation/metafunctions.html | 11 +- .../generation/metafunctions/list_tie.html | 57 ++-- .../generation/metafunctions/make_cons.html | 53 ++-- .../generation/metafunctions/make_list.html | 59 ++-- .../generation/metafunctions/make_map.html | 81 +++--- .../generation/metafunctions/make_set.html | 69 ++--- .../generation/metafunctions/make_vector.html | 59 ++-- .../generation/metafunctions/map_tie.html | 65 ++--- .../generation/metafunctions/vector_tie.html | 57 ++-- doc/html/fusion/container/list.html | 164 ++++++----- doc/html/fusion/container/map.html | 155 +++++------ doc/html/fusion/container/set.html | 143 +++++----- doc/html/fusion/container/vector.html | 141 +++++----- doc/html/fusion/extension.html | 13 +- doc/html/fusion/extension/ext_full.html | 254 +++++++++--------- .../fusion/extension/iterator_facade.html | 153 +++++------ .../fusion/extension/sequence_facade.html | 125 ++++----- doc/html/fusion/functional.html | 56 ++-- doc/html/fusion/functional/adapters.html | 16 +- .../fusion/functional/adapters/fused.html | 146 +++++----- .../adapters/fused_function_object.html | 145 +++++----- .../functional/adapters/fused_procedure.html | 148 +++++----- .../functional/adapters/unfused_generic.html | 149 +++++----- .../adapters/unfused_lvalue_args.html | 138 +++++----- .../adapters/unfused_rvalue_args.html | 140 +++++----- .../functional/adapters/unfused_typed.html | 168 ++++++------ doc/html/fusion/functional/concepts.html | 13 +- .../fusion/functional/concepts/callable.html | 43 ++- .../functional/concepts/def_callable.html | 121 ++++----- doc/html/fusion/functional/concepts/poly.html | 108 ++++---- .../functional/concepts/reg_callable.html | 89 +++--- doc/html/fusion/functional/generation.html | 11 +- .../functional/generation/functions.html | 14 +- .../generation/functions/mk_fused.html | 82 +++--- .../generation/functions/mk_fused_fobj.html | 87 +++--- .../generation/functions/mk_fused_proc.html | 82 +++--- .../functions/mk_unfused_genrc.html | 79 +++--- .../functions/mk_unfused_lvargs.html | 81 +++--- .../functions/mk_unfused_rvargs.html | 76 +++--- .../functional/generation/metafunctions.html | 17 +- .../generation/metafunctions/mk_fused.html | 42 ++- .../metafunctions/mk_fused_fobj.html | 45 ++-- .../metafunctions/mk_fused_proc.html | 45 ++-- .../metafunctions/mk_unfused_genrc.html | 45 ++-- .../metafunctions/mk_unfused_lvargs.html | 45 ++-- .../metafunctions/mk_unfused_rvargs.html | 42 ++- doc/html/fusion/functional/invocation.html | 14 +- .../functional/invocation/functions.html | 11 +- .../invocation/functions/invoke.html | 85 +++--- .../invocation/functions/invoke_fobj.html | 85 +++--- .../invocation/functions/invoke_proc.html | 87 +++--- .../functional/invocation/metafunctions.html | 14 +- .../invocation/metafunctions/invoke.html | 32 +-- .../invocation/metafunctions/invoke_fobj.html | 42 ++- .../invocation/metafunctions/invoke_proc.html | 40 ++- doc/html/fusion/introduction.html | 43 +-- doc/html/fusion/iterator.html | 21 +- doc/html/fusion/iterator/concepts.html | 29 +- .../concepts/bidirectional_iterator.html | 151 +++++------ .../iterator/concepts/forward_iterator.html | 217 ++++++++------- .../concepts/random_access_iterator.html | 131 +++++---- doc/html/fusion/iterator/functions.html | 14 +- .../fusion/iterator/functions/advance.html | 87 +++--- .../fusion/iterator/functions/advance_c.html | 87 +++--- doc/html/fusion/iterator/functions/deref.html | 80 +++--- .../fusion/iterator/functions/distance.html | 76 +++--- doc/html/fusion/iterator/functions/next.html | 80 +++--- doc/html/fusion/iterator/functions/prior.html | 80 +++--- doc/html/fusion/iterator/metafunctions.html | 14 +- .../iterator/metafunctions/advance.html | 89 +++--- .../iterator/metafunctions/advance_c.html | 91 ++++--- .../fusion/iterator/metafunctions/deref.html | 84 +++--- .../iterator/metafunctions/distance.html | 82 +++--- .../iterator/metafunctions/equal_to.html | 83 +++--- .../fusion/iterator/metafunctions/next.html | 78 +++--- .../fusion/iterator/metafunctions/prior.html | 82 +++--- .../iterator/metafunctions/value_of.html | 84 +++--- doc/html/fusion/iterator/operator.html | 14 +- .../iterator/operator/operator_equality.html | 71 +++-- .../operator/operator_inequality.html | 68 +++-- .../operator/operator_unary_star.html | 87 +++--- doc/html/fusion/notes.html | 159 ++++++----- doc/html/fusion/organization.html | 49 ++-- doc/html/fusion/preface.html | 53 ++-- doc/html/fusion/quick_start.html | 149 +++++----- doc/html/fusion/references.html | 11 +- doc/html/fusion/sequence.html | 25 +- doc/html/fusion/sequence/concepts.html | 50 ++-- .../concepts/associative_sequence.html | 135 +++++----- .../concepts/bidirectional_sequence.html | 140 +++++----- .../sequence/concepts/forward_sequence.html | 182 ++++++------- .../concepts/random_access_sequence.html | 163 ++++++----- doc/html/fusion/sequence/intrinsic.html | 34 +-- .../fusion/sequence/intrinsic/functions.html | 11 +- .../sequence/intrinsic/functions/at.html | 66 ++--- .../sequence/intrinsic/functions/at_c.html | 66 ++--- .../sequence/intrinsic/functions/at_key.html | 62 ++--- .../sequence/intrinsic/functions/back.html | 60 ++--- .../sequence/intrinsic/functions/begin.html | 74 +++-- .../sequence/intrinsic/functions/empty.html | 56 ++-- .../sequence/intrinsic/functions/end.html | 74 +++-- .../sequence/intrinsic/functions/front.html | 60 ++--- .../sequence/intrinsic/functions/has_key.html | 58 ++-- .../sequence/intrinsic/functions/size.html | 50 ++-- .../sequence/intrinsic/functions/swap.html | 48 ++-- .../sequence/intrinsic/metafunctions.html | 11 +- .../sequence/intrinsic/metafunctions/at.html | 66 ++--- .../intrinsic/metafunctions/at_c.html | 66 ++--- .../intrinsic/metafunctions/at_key.html | 70 ++--- .../intrinsic/metafunctions/back.html | 52 ++-- .../intrinsic/metafunctions/begin.html | 56 ++-- .../intrinsic/metafunctions/empty.html | 58 ++-- .../sequence/intrinsic/metafunctions/end.html | 56 ++-- .../intrinsic/metafunctions/front.html | 54 ++-- .../intrinsic/metafunctions/has_key.html | 60 ++--- .../intrinsic/metafunctions/size.html | 52 ++-- .../intrinsic/metafunctions/swap.html | 40 +-- .../intrinsic/metafunctions/value_at.html | 54 ++-- .../intrinsic/metafunctions/value_at_c.html | 54 ++-- .../intrinsic/metafunctions/value_at_key.html | 56 ++-- doc/html/fusion/sequence/operator.html | 13 +- .../fusion/sequence/operator/comparison.html | 27 +- .../sequence/operator/comparison/equal.html | 72 ++--- .../operator/comparison/greater_than.html | 71 +++-- .../comparison/greater_than_equal.html | 68 +++-- .../operator/comparison/less_than.html | 75 +++--- .../operator/comparison/less_than_equal.html | 71 +++-- .../operator/comparison/not_equal.html | 66 +++-- doc/html/fusion/sequence/operator/i_o.html | 71 ++--- doc/html/fusion/sequence/operator/i_o/in.html | 49 ++-- .../fusion/sequence/operator/i_o/out.html | 49 ++-- doc/html/fusion/support.html | 11 +- doc/html/fusion/support/category_of.html | 77 +++--- doc/html/fusion/support/deduce.html | 61 ++--- doc/html/fusion/support/deduce_sequence.html | 65 +++-- doc/html/fusion/support/is_sequence.html | 83 +++--- doc/html/fusion/support/is_view.html | 81 +++--- doc/html/fusion/support/pair.html | 133 ++++----- doc/html/fusion/support/tag_of.html | 79 +++--- doc/html/fusion/tuple.html | 15 +- .../fusion/tuple/class_template_tuple.html | 24 +- .../class_template_tuple/construction.html | 80 +++--- .../class_template_tuple/element_access.html | 73 +++-- .../relational_operators.html | 148 +++++----- .../tuple_creation_functions.html | 56 ++-- .../tuple_helper_classes.html | 63 +++-- doc/html/fusion/tuple/pairs.html | 68 ++--- doc/html/fusion/view.html | 19 +- doc/html/fusion/view/filter_view.html | 129 +++++---- doc/html/fusion/view/iterator_range.html | 147 +++++----- doc/html/fusion/view/joint_view.html | 137 +++++----- doc/html/fusion/view/reverse_view.html | 112 ++++---- doc/html/fusion/view/single_view.html | 107 ++++---- doc/html/fusion/view/transform_view.html | 202 +++++++------- doc/html/fusion/view/zip_view.html | 136 +++++----- doc/html/index.html | 12 +- 257 files changed, 8717 insertions(+), 9036 deletions(-) diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index d10ff6f0..7f08fcdd 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@

Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey Gurtovoy, Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 2d5c7a20..340ad860 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -3,7 +3,7 @@ Adapted - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


@@ -24,7 +24,8 @@

- 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 Fusion's - non-intrusive Extension mechanism. + 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 - [13] + [13] .

Fusion also provides various schemes to make it easy for the user to adapt various data structures, non-intrusively, as full fledged Fusion sequences.

-

- - Header -

+

+ + Header +

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


-

[13] +

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

diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index d5fde8a6..2f976dbf 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -1,21 +1,21 @@ - BOOST_FUSION_ADAPT_ASSOC_STRUCT +BOOST_FUSION_ADAPT_ASSOC_STRUCT - + - + - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,23 +24,22 @@
+
+ + Description +

BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all - the necessary boilerplate to make an arbitrary struct into a model of Random Access Sequence - and Associative + the necessary boilerplate to make an arbitrary struct into a model of Random Access Sequence + and Associative Sequence.

-

- - Synopsis -

+
+ + Synopsis +
 BOOST_FUSION_ADAPT_ASSOC_STRUCT(
     struct_name
@@ -49,38 +48,36 @@
     ...
     )
 
-

- - Semantics -

+
+ + Semantics +

- The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence and Associative - Sequence. The sequence of (member_typeN, + The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence and Associative + Sequence. The sequence of (member_typeN, member_nameN, - key_typeN) + key_typeN) triples declare the type, name and key type of each of the struct members that will be part of the sequence.

- The macro should be used at global scope, and struct_name + The macro should be used at global scope, and struct_name should be the fully namespace qualified name of the struct to be converted.

-

- - Header -

+
+ + Header +
 #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
 #include <boost/fusion/include/adapt_assoc_struct.hpp>
 
-

- - Example -

+
+ + Example +
 namespace demo
 {
diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
index 640267cf..f87c9af3 100644
--- a/doc/html/fusion/adapted/adapt_struct.html
+++ b/doc/html/fusion/adapted/adapt_struct.html
@@ -1,21 +1,21 @@
 
 
 
- BOOST_FUSION_ADAPT_STRUCT
+BOOST_FUSION_ADAPT_STRUCT
 
-
+
 
 
 
-
+
 
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,21 +24,21 @@ +
+ + Description +

BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the - necessary boilerplate to make an arbitrary struct into a Random + necessary boilerplate to make an arbitrary struct into a Random Access Sequence.

-

- - Synopsis -

+
+ + Synopsis +
 BOOST_FUSION_ADAPT_STRUCT(
     struct_name
@@ -47,35 +47,34 @@
     ...
     )
 
-

- - Semantics -

+
+ + Semantics +

- The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence. The sequence of (member_typeN, - member_nameN) + The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence. The sequence of (member_typeN, + member_nameN) pairs declare the type and names of each of the struct members that will be part of the sequence.

- The macro should be used at global scope, and struct_name + The macro should be used at global scope, and struct_name should be the fully namespace qualified name of the struct to be converted.

-

- - Header -

+
+ + Header +
 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
 #include <boost/fusion/include/adapt_struct.hpp>
 
-

- - Example -

+
+ + Example +
 namespace demo
 {
diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
index 3925b1b0..e497820e 100644
--- a/doc/html/fusion/adapted/boost__array.html
+++ b/doc/html/fusion/adapted/boost__array.html
@@ -3,7 +3,7 @@
 
 boost::array
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,46 +24,45 @@

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

-

- - Header -

+
+ + Header +
 #include <boost/fusion/adapted/array.hpp>
 #include <boost/fusion/include/array.hpp>
 
-

- - Model of -

-

- This module provides adapters for boost::tuple. - Including the module header makes boost::tuple - a fully conforming Forward + This module provides adapters for boost::tuple. + Including the module header makes boost::tuple + a fully conforming Forward Sequence.

-

- - Header -

+
+ + Header +
 #include <boost/fusion/adapted/boost_tuple.hpp>
 #include <boost/fusion/include/boost_tuple.hpp>
 
-

- - Model of -

- -

- - Example -

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

+
+ + See also +

Boost.Tuple Library diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index b960669c..df5b3e22 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -3,7 +3,7 @@ mpl sequence - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


@@ -24,62 +24,60 @@

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

-

- - Header -

+
+ + Header +
 #include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/include/mpl.hpp>
 
-

- - Model of -

+
+ + Model of +
-

- - Example -

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

+
+ + See also +

MPL

diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index f3ca5a54..1fe05fa0 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -3,7 +3,7 @@ std::pair - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,47 +24,46 @@

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

-

- - Header -

+
+ + Header +
 #include <boost/fusion/adapted/std_pair.hpp>
 #include <boost/fusion/include/std_pair.hpp>
 
-

- - Model of -

-
diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index ea7053b2..1a160183 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -3,19 +3,19 @@ Algorithm - + - +
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
Iteration
@@ -42,10 +43,10 @@
Metafunctions
-

- - Lazy Evaluation -

+

+ + Lazy Evaluation +

Unlike MPL, Fusion algorithms are lazy and non sequence-type preserving. What does that mean? @@ -57,41 +58,41 @@ 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 -

+

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

+

+ + Header +

 #include <boost/fusion/algorithm.hpp>
 #include <boost/fusion/include/algorithm.hpp>
diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
index 1ea968a1..a2c906db 100644
--- a/doc/html/fusion/algorithm/iteration.html
+++ b/doc/html/fusion/algorithm/iteration.html
@@ -3,7 +3,7 @@
 
 Iteration
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
Functions
Metafunctions
@@ -33,10 +34,10 @@ The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements.

-

- - Header -

+
+ + Header +
 #include <boost/fusion/algorithm/iteration.hpp>
 #include <boost/fusion/include/iteration.hpp>
diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html
index 155c47c9..376eaeed 100644
--- a/doc/html/fusion/algorithm/iteration/functions.html
+++ b/doc/html/fusion/algorithm/iteration/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
fold
accumulate
diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index 1eb774cf..66771de7 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,21 +24,22 @@
- - Description + + Description

- For a sequence Seq, initial - state, and binary function object or function pointer f, - accumulate repeatedly applies binary f - to each element of Seq + 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 + + Synopsis
 template<
@@ -46,12 +47,12 @@
     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 +79,16 @@ -

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

@@ -100,7 +100,7 @@

- initial_state + initial_state

@@ -117,14 +117,14 @@

- f + f

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

@@ -134,41 +134,41 @@
+
-
- - Expression +
+ + Expression Semantics
 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 #include <boost/fusion/include/accumulate.hpp>
 
- - Example + + Example
 struct make_string
@@ -182,8 +182,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/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html index c1e05d1d..aa2ccc54 100644 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -3,7 +3,7 @@ fold - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,21 +24,22 @@
+fold +
- - Description + + Description

- For a sequence Seq, initial - state, and binary function object or function pointer f, - fold repeatedly applies binary f - to each element of Seq + 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 + + Synopsis
 template<
@@ -46,12 +47,12 @@
     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

+
@@ -78,17 +79,16 @@ -

- seq + seq

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

@@ -100,7 +100,7 @@

- initial_state + initial_state

@@ -117,14 +117,14 @@

- f + f

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

@@ -134,41 +134,41 @@
+
-
- - Expression +
+ + Expression Semantics
 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 #include <boost/fusion/include/fold.hpp>
 
- - Example + + Example
 struct make_string
@@ -182,8 +182,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/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html index 4b6265b3..3f0d3052 100644 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,29 +24,30 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
     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 +74,15 @@ @@ -111,41 +110,41 @@ -

- seq + seq

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

@@ -94,13 +94,12 @@

- f + f

- A unary Regular + A unary Regular Callable Object

+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 #include <boost/fusion/include/for_each.hpp>
 
- - Example + + Example
 struct increment
@@ -157,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));
 
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html index 198e3a48..4236387c 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
fold
accumulate
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 6a74d790..fd7df622 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
- - Description + + Description

- Returns the result type of accumulate. + Returns the result type of accumulate.

- - Synopsis + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.37. Parameters

- +

Table 1.37. Parameters

+
@@ -75,13 +76,12 @@ @@ -94,7 +94,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- 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

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

@@ -128,36 +128,36 @@
+
-
- - Expression +
+ + 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 function object or function pointer 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
index c79e8b6d..6d9022a7 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
@@ -3,7 +3,7 @@
 
 fold
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
+fold +
- - Description + + Description

- Returns the result type of fold. + Returns the result type of fold.

- - Synopsis + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.36. Parameters

- +

Table 1.36. Parameters

+
@@ -75,13 +76,12 @@ @@ -94,7 +94,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- 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

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

@@ -128,36 +128,36 @@
+
-
- - Expression +
+ + 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 function object or function pointer 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
index 1cedc9bb..576fd07e 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
@@ -3,7 +3,7 @@
 
 for_each
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@

- 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 + + Description
- - Synopsis + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.38. Parameters

- +

Table 1.38. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- F + F

@@ -110,36 +110,36 @@
+
-
- - Expression +
+ + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
index 83d1b667..bfd3cc29 100644
--- a/doc/html/fusion/algorithm/query.html
+++ b/doc/html/fusion/algorithm/query.html
@@ -3,7 +3,7 @@
 
 Query
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
Functions
Metafunctions
@@ -32,10 +33,10 @@

The query algorithms provide support for searching and analyzing sequences.

-

- - Header -

+
+ + Header +
 #include <boost/fusion/algorithm/query.hpp>
 #include <boost/fusion/include/query.hpp>
diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html
index a77963a7..012fd520 100644
--- a/doc/html/fusion/algorithm/query/functions.html
+++ b/doc/html/fusion/algorithm/query/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
any
all
diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index 5370bcb3..c0e9f414 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -3,7 +3,7 @@ all - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,33 +24,34 @@
-all
+all +
- - Description + + 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 + + Synopsis
 template<
     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 +78,15 @@ -

- seq + seq

- A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + A model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq

@@ -98,7 +98,7 @@

- f + f

@@ -113,43 +113,43 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 #include <boost/fusion/include/all.hpp>
 
- - Example + + Example
 struct odd
@@ -161,8 +161,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/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html index 9766fb16..8b39b24a 100644 --- a/doc/html/fusion/algorithm/query/functions/any.html +++ b/doc/html/fusion/algorithm/query/functions/any.html @@ -3,7 +3,7 @@ any - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,33 +24,34 @@
-any
+any +
- - Description + + 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 + + Synopsis
 template<
     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 +78,15 @@ -

- seq + seq

- A model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each - element e in seq + A model of Forward + Sequence, f(e) must be a valid expression, convertible + to bool, for each + element e in seq

@@ -98,7 +98,7 @@

- f + f

@@ -113,43 +113,43 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 #include <boost/fusion/include/any.hpp>
 
- - Example + + Example
 struct odd
@@ -161,8 +161,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/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html index 2a276254..5d4dc081 100644 --- a/doc/html/fusion/algorithm/query/functions/count.html +++ b/doc/html/fusion/algorithm/query/functions/count.html @@ -3,7 +3,7 @@ count - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,29 +24,30 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
     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 +74,16 @@ -

- seq + seq

- A model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq + A model of Forward + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq

@@ -95,7 +95,7 @@

- T + T

@@ -110,46 +110,46 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 #include <boost/fusion/include/count.hpp>
 
- - Example + + 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/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html index ffa0422d..50cf54c4 100644 --- a/doc/html/fusion/algorithm/query/functions/count_if.html +++ b/doc/html/fusion/algorithm/query/functions/count_if.html @@ -3,7 +3,7 @@ count_if - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,30 +24,31 @@
- - Description + + 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 + + Synopsis
 template<
     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 +75,15 @@ -

- seq + seq

- A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each - element e in seq + A model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for each + element e in seq

@@ -95,7 +95,7 @@

- f + f

@@ -110,45 +110,45 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/count_if.hpp>
 #include <boost/fusion/include/count_if.hpp>
 
- - Example + + 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/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html index 7c2499ca..786b17c4 100644 --- a/doc/html/fusion/algorithm/query/functions/find.html +++ b/doc/html/fusion/algorithm/query/functions/find.html @@ -3,7 +3,7 @@ find - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
+find +
- - Description + + Description

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

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

Table 1.42. Parameters

- +

Table 1.42. Parameters

+
@@ -78,13 +79,12 @@ @@ -97,7 +97,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- T + T

@@ -112,49 +112,49 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/find.hpp>
 #include <boost/fusion/include/find.hpp>
 
- - Example + + 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/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html index 20b74c2b..500bf764 100644 --- a/doc/html/fusion/algorithm/query/functions/find_if.html +++ b/doc/html/fusion/algorithm/query/functions/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,19 +24,20 @@

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 + + Description
- - Synopsis + + Synopsis
 template<
@@ -52,8 +53,8 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.43. Parameters

- +

Table 1.43. Parameters

+
@@ -80,13 +81,12 @@ @@ -99,7 +99,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- F + F

@@ -115,45 +115,45 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

/algorithm/query/find_if.hpp>

- - Example + + 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/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html index 9f613a5a..ca111331 100644 --- a/doc/html/fusion/algorithm/query/functions/none.html +++ b/doc/html/fusion/algorithm/query/functions/none.html @@ -3,7 +3,7 @@ none - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,33 +24,34 @@
+none +
- - Description + + 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 + + Synopsis
 template<
     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 +78,15 @@ -

- seq + seq

- A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + A model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq

@@ -98,7 +98,7 @@

- f + f

@@ -113,43 +113,43 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/none.hpp>
 #include <boost/fusion/include/none.hpp>
 
- - Example + + Example
 struct odd
@@ -161,8 +161,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/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html index 68581c9e..bf9747eb 100644 --- a/doc/html/fusion/algorithm/query/metafunctions.html +++ b/doc/html/fusion/algorithm/query/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
any
all
diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index bcd98c6a..6ebfe97b 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -3,7 +3,7 @@ all - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
-all
+all +
- - Description + + Description

- A metafunction returning the result type of all. + A metafunction returning the result type of all.

- - Synopsis + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.47. Parameters

- +

Table 1.47. Parameters

+
@@ -75,13 +76,12 @@ @@ -94,13 +94,12 @@ @@ -111,38 +110,37 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- F + F

- A model of unary Polymorphic + A model of unary Polymorphic Function Object

+
-
- - Expression +
+ + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/query/all.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
index d7eb4548..19b6d6df 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
@@ -3,7 +3,7 @@
 
 any
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
-any
+any +
- - Description + + Description

- A metafunction returning the result type of any. + A metafunction returning the result type of any.

- - Synopsis + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.46. Parameters

- +

Table 1.46. Parameters

+
@@ -75,13 +76,12 @@ @@ -94,13 +94,12 @@ @@ -111,38 +110,37 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- F + F

- A model of unary Polymorphic + A model of unary Polymorphic Function Object

+
-
- - Expression +
+ + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/query/any.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
index 8716f4a2..6ceb8cbe 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
@@ -3,7 +3,7 @@
 
 count
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.51. Parameters

- +

Table 1.51. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- T + T

@@ -110,34 +110,34 @@
+
-
- - Expression +
+ + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/query/count.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
index 27402618..730864a4 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
@@ -3,7 +3,7 @@
 
 count_if
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.52. Parameters

- +

Table 1.52. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- Pred + Pred

@@ -110,34 +110,34 @@
+
-
- - Expression +
+ + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/query/count_if.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
index 642f7077..f76ad7c5 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
@@ -3,7 +3,7 @@
 
 find
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
+find +
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.49. Parameters

- +

Table 1.49. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- Model of Forward + Model of Forward Sequence

- T + T

@@ -110,36 +110,36 @@
+
-
- - Expression +
+ + 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 + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/find.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
index 0883d34c..1ef4dbd4 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
@@ -3,7 +3,7 @@
 
 find_if
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.50. Parameters

- +

Table 1.50. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- Pred + Pred

@@ -111,36 +111,36 @@
+
-
- - Expression +
+ + 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 + + Complexity

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

- - Header + + Header
 #include <boost/fusion/algorithm/query/find_if.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
index 775bb347..ed153948 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
@@ -3,7 +3,7 @@
 
 none
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
+none +
- - Description + + Description

- A metafunction returning the result type of none. + A metafunction returning the result type of none.

- - Synopsis + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.48. Parameters

- +

Table 1.48. Parameters

+
@@ -75,13 +76,12 @@ @@ -94,13 +94,12 @@ @@ -111,38 +110,37 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- F + F

- A model of unary Polymorphic + A model of unary Polymorphic Function Object

+
-
- - Expression +
+ + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/query/none.hpp>
diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
index 3b792522..8cd0d3cd 100644
--- a/doc/html/fusion/algorithm/transformation.html
+++ b/doc/html/fusion/algorithm/transformation.html
@@ -3,7 +3,7 @@
 
 Transformation
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
Functions
Metafunctions
@@ -39,16 +40,16 @@ [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 -

+
+ + Header +
 #include <boost/fusion/algorithm/transformation.hpp>
 #include <boost/fusion/include/transformation.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html
index 10863dc6..8b84f2d7 100644
--- a/doc/html/fusion/algorithm/transformation/functions.html
+++ b/doc/html/fusion/algorithm/transformation/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
filter
filter_if
diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index 6a4b5581..550c4d8a 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -3,7 +3,7 @@ clear - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,27 +24,28 @@
- - Description + + Description

- clear returns an empty sequence. + clear returns an empty sequence.

- - Synposis + + 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,13 +71,12 @@ @@ -86,46 +86,45 @@

-

- seq + seq

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-clear(seq);
+clear(seq);
 

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

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

- - Complexity + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 #include <boost/fusion/include/clear.hpp>
 
- - Example + + 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/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html index cd28e649..089f28b0 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html @@ -3,7 +3,7 @@ erase - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,25 +24,26 @@
- - Description + + Description

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

- - Synposis + + Synposis
 template<
     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,12 +51,12 @@
     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,13 +83,12 @@ @@ -101,99 +101,95 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- it1 + it1

- A model of Forward + A model of Forward Iterator

- Iterator into seq + Iterator into seq

- it2 + it2

- A model of Forward + A model of Forward Iterator

- Iterator into seq - after it1 + Iterator into seq + after it1

+
-
- - Expression +
+ + Expression Semantics
-erase(seq, pos);
+erase(seq, pos);
 

- Return type: A model of Forward + 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 Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/erase.hpp>
 #include <boost/fusion/include/erase.hpp>
 
- - Example + + 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/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html index 15803534..1addb688 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html @@ -3,7 +3,7 @@ erase_key - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,23 +24,22 @@
- - Description + + Description

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

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

Table 1.64. Parameters

- +

Table 1.64. Parameters

+
@@ -78,13 +77,12 @@ @@ -97,7 +95,7 @@ -

- seq + seq

- A model of Associative + A model of Associative Sequence

- Key + Key

@@ -112,47 +110,46 @@
+
-
- - Expression +
+ + Expression Semantics
-erase_key<Key>(seq);
+erase_key<Key>(seq);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 #include <boost/fusion/include/erase_key.hpp>
 
- - Example + + 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/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html index 72e7c175..93e5f651 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html @@ -3,7 +3,7 @@ filter - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,29 +24,30 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
     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,13 +74,12 @@ @@ -92,7 +92,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- T + T

@@ -107,49 +107,48 @@
+
-
- - Expression +
+ + Expression Semantics
-filter<T>(seq);
+filter<T>(seq);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/filter.hpp>
 #include <boost/fusion/include/filter.hpp>
 
- - Example + + 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/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html index d0c7000f..4e31dd82 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html @@ -3,7 +3,7 @@ filter_if - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,30 +24,31 @@
- - Description + + 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 + + Synopsis
 template<
     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,13 +75,12 @@ @@ -93,7 +93,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- Pred + Pred

@@ -109,50 +109,49 @@
+
-
- - Expression +
+ + Expression Semantics
-filter_if<Pred>(seq);
+filter_if<Pred>(seq);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/filter_if.hpp>
 #include <boost/fusion/include/filter_if.hpp>
 
- - Example + + 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/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html index ac20b5bc..a46dfb3c 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html @@ -3,7 +3,7 @@ insert - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synposis
 template<
@@ -46,8 +47,8 @@
 unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.65. Parameters

- +

Table 1.65. Parameters

+
@@ -74,13 +75,12 @@ @@ -93,13 +93,12 @@ @@ -112,7 +111,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- pos + pos

- A model of Forward + A model of Forward Iterator

- t + t

@@ -127,50 +126,49 @@
+
-
- - Expression +
+ + Expression Semantics
-insert(seq, p, t);
+insert(seq, p, t);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 #include <boost/fusion/include/insert.hpp>
 
- - Example + + 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/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html index ed877215..9b326e0b 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html @@ -3,7 +3,7 @@ insert_range - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + Description

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

- - Synposis + + Synposis
 template<
@@ -43,12 +44,12 @@
     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,13 +76,12 @@ @@ -94,13 +94,12 @@ @@ -113,13 +112,12 @@ @@ -130,50 +128,49 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- pos + pos

- A model of Forward + A model of Forward Iterator

- range + range

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-insert(seq, pos, range);
+insert(seq, pos, range);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/insert_range.hpp>
 #include <boost/fusion/include/insert_range.hpp>
 
- - Example + + 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/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html index 52804fef..d769e569 100644 --- a/doc/html/fusion/algorithm/transformation/functions/join.html +++ b/doc/html/fusion/algorithm/transformation/functions/join.html @@ -3,7 +3,7 @@ join - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,28 +24,29 @@
+join +
- - Description + + Description

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

- - Synopsis + + 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,13 +73,12 @@ @@ -91,13 +91,12 @@ @@ -108,50 +107,49 @@ -

- lhs + lhs

- A model of Forward + A model of Forward Sequence

- rhs + rhs

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-join(lhs, rhs);
+join(lhs, rhs);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 #include <boost/fusion/include/join.hpp>
 
- - Example + + 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/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html index f82f9ed2..6d9d07da 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html @@ -3,7 +3,7 @@ pop_back - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,27 +24,28 @@
- - Description + + Description

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

- - Synopsis + + 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,13 +71,12 @@ @@ -86,48 +86,47 @@

-

- seq + seq

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-pop_back(seq);
+pop_back(seq);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/pop_back.hpp>
 #include <boost/fusion/include/pop_back.hpp>
 
- - Example + + 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/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html index 526e745b..5a4ff794 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html @@ -3,7 +3,7 @@ pop_front - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,27 +24,28 @@
- - Description + + Description

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

- - Synopsis + + 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,13 +71,12 @@ @@ -86,48 +86,47 @@

-

- seq + seq

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-pop_front(seq);
+pop_front(seq);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/pop_front.hpp>
 #include <boost/fusion/include/pop_front.hpp>
 
- - Example + + 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/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html index ea79a915..7722b3d2 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,29 +24,30 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
     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,13 +74,12 @@ @@ -92,7 +92,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- t + t

@@ -107,48 +107,47 @@
+
-
- - Expression +
+ + Expression Semantics
-push_back(seq, t);
+push_back(seq, t);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/push_back.hpp>
 #include <boost/fusion/include/push_back.hpp>
 
- - Example + + 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/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html index 3528ce78..d1013f95 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,29 +24,30 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
     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,13 +74,12 @@ @@ -92,7 +92,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- t + t

@@ -107,49 +107,48 @@
+
-
- - Expression +
+ + Expression Semantics
-push_back(seq, t);
+push_back(seq, t);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 #include <boost/fusion/include/push_front.hpp>
 
- - Example + + 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/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html index 259c052f..bab0a518 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html @@ -3,7 +3,7 @@ remove - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,29 +24,30 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
     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,13 +74,12 @@ @@ -92,7 +92,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- T + T

@@ -107,49 +107,48 @@
+
-
- - Expression +
+ + Expression Semantics
-remove<T>(seq);
+remove<T>(seq);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/remove.hpp>
 #include <boost/fusion/include/remove.hpp>
 
- - Example + + 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/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html index 1d875723..59773b47 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html @@ -3,7 +3,7 @@ remove_if - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,29 +24,30 @@
- - Description + + 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 + + Synopsis
 template<
     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,13 +74,12 @@ @@ -92,7 +92,7 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- Pred + Pred

@@ -108,50 +108,49 @@
+
-
- - Expression +
+ + Expression Semantics
-remove_if<Pred>(seq);
+remove_if<Pred>(seq);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 #include <boost/fusion/include/remove_if.hpp>
 
- - Example + + 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/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html index a7c7c7e0..cf9cd37e 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html @@ -3,7 +3,7 @@ replace - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,30 +24,31 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
     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 +75,17 @@ -

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

@@ -97,7 +97,7 @@

- old_value + old_value

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

- new_value + new_value

@@ -129,48 +129,47 @@
+
-
- - Expression +
+ + Expression Semantics
-replace(seq, old_value, new_value);
+replace(seq, old_value, new_value);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/replace.hpp>
 #include <boost/fusion/include/replace.hpp>
 
- - Example + + 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/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html index 2345f1d5..567fe11f 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html @@ -3,7 +3,7 @@ replace_if - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,31 +24,32 @@
- - Description + + 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 + + Synopsis
 template<
     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,13 +76,12 @@ @@ -94,14 +94,14 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- 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

@@ -128,46 +128,45 @@
+
-
- - Expression +
+ + Expression Semantics
-replace_if(seq, f, new_value);
+replace_if(seq, f, new_value);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 #include <boost/fusion/include/replace_if.hpp>
 
- - Example + + Example
 struct odd
@@ -179,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));
 
diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html index 6360f6ae..35bac585 100644 --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html @@ -3,7 +3,7 @@ reverse - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,27 +24,28 @@
- - Description + + Description

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

- - Synposis + + 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,13 +71,12 @@ @@ -86,47 +86,46 @@

-

- seq + seq

- A model of Bidirectional + A model of Bidirectional Sequence

+
-
- - Expression +
+ + Expression Semantics
-reverse(seq);
+reverse(seq);
 

- Return type: A model of Bidirectional + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 #include <boost/fusion/include/reverse.hpp>
 
- - Example + + 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/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html index 72062220..d7676641 100644 --- a/doc/html/fusion/algorithm/transformation/functions/transform.html +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html @@ -3,7 +3,7 @@ transform - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,21 +24,22 @@
- - Description + + Description

- 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. + 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 + + Unary version synopsis
@@ -46,12 +47,12 @@
     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

+
@@ -78,13 +79,12 @@ @@ -97,15 +97,15 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- f + f

- 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. + 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.

@@ -115,29 +115,28 @@
+
-
- - Expression +
+ + Expression Semantics
-transform(seq, f);
+transform(seq, f);
 

- Return type: A model of Forward + 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 + + Binary version synopsis
@@ -146,12 +145,12 @@
     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

+
@@ -178,13 +177,12 @@ @@ -197,13 +195,12 @@ @@ -216,16 +213,16 @@ -

- seq1 + seq1

- A model of Forward + A model of Forward Sequence

- seq2 + seq2

- A model of Forward + A model of Forward Sequence

- f + 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 + 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

@@ -235,36 +232,35 @@
+
-

- Return type: A model of Forward +

+ 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 #include <boost/fusion/include/transform.hpp>
 
- - Example + + Example
 struct triple
@@ -277,7 +273,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/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html index ed367e99..ed89d8ad 100644 --- a/doc/html/fusion/algorithm/transformation/functions/zip.html +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html @@ -3,7 +3,7 @@ zip - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
-zip
+zip +
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -44,12 +45,12 @@
     ...
     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,13 +76,12 @@ @@ -91,54 +91,53 @@

-

- seq1 to seqN + seq1 to seqN

- Each sequence is a model of Forward + Each sequence is a model of Forward Sequence.

+
-
- - Expression +
+ + Expression Semantics
-zip(seq1, seq2, ... seqN);
+zip(seq1, seq2, ... seqN);
 

- Return type: A model of Forward + 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 #include <boost/fusion/include/zip.hpp>
 
- - Example + + 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/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html index f6bad707..89b55fd6 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
filter
filter_if
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index a4487787..c1ba3c21 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -3,7 +3,7 @@ clear - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.82. Parameters

- +

Table 1.82. Parameters

+
@@ -74,7 +75,7 @@ -

- Sequence + Sequence

@@ -88,34 +89,33 @@

+
-
- - Expression +
+ + Expression Semantics
-result_of::clear<Sequence>::type
+result_of::clear<Sequence>::type
 

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

- Semantics: Returns an empty sequence. + Semantics: Returns an empty sequence.

- - Complexity + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
index b09ce582..2a67cdc1 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
@@ -3,7 +3,7 @@
 
 erase
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@

- 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 + + Description
- - Synopsis + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.83. Parameters

- +

Table 1.83. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,13 +95,12 @@ @@ -114,13 +113,12 @@ @@ -131,48 +129,46 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- It1 + It1

- A model of Forward + A model of Forward Iterator

- It2 + It2

- A model of Forward + A model of Forward Iterator

+
-
- - Expression +
+ + Expression Semantics
-result_of::erase<Sequence, It1>::type
+result_of::erase<Sequence, It1>::type
 

- Return type: A model of Forward + 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 Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/erase.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
index c063d91f..fb8856f2 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
@@ -3,7 +3,7 @@
 
 erase_key
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.84. Parameters

- +

Table 1.84. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Associative + A model of Associative Sequence

- Key + Key

@@ -110,36 +110,35 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::erase_key<Sequence, Key>::type
+result_of::erase_key<Sequence, Key>::type
 

- Return type: A model of Associative + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
index 22688844..93d0e2c4 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
@@ -3,7 +3,7 @@
 
 filter
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.73. Parameter

- +

Table 1.73. Parameter

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- T + T

@@ -110,38 +110,37 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::filter<Sequence, T>::type
+result_of::filter<Sequence, T>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/filter.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
index 2d696bc8..47194fdc 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
@@ -3,7 +3,7 @@
 
 filter_if
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,19 +24,20 @@
- - Description + + 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 + + Synopsis
 template<
@@ -49,8 +50,8 @@
 };
 
-

Table 1.74. Parameter

- +

Table 1.74. Parameter

+
@@ -77,13 +78,12 @@ @@ -96,7 +96,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- Pred + Pred

@@ -112,37 +112,36 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::filter_if<Sequence, Pred>::type
+result_of::filter_if<Sequence, Pred>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/filter_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
index 9f1bc538..feb560bc 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
@@ -3,7 +3,7 @@
 
 insert
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -49,8 +50,8 @@
 };
 
-

Table 1.85. Parameters

- +

Table 1.85. Parameters

+
@@ -77,13 +78,12 @@ @@ -96,13 +96,12 @@ @@ -115,7 +114,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- Position + Position

- A model of Forward + A model of Forward Iterator

- T + T

@@ -130,37 +129,36 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::insert<Sequence, Position, T>::type
+result_of::insert<Sequence, Position, T>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
index b70d3a87..08113676 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
@@ -3,7 +3,7 @@
 
 insert_range
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -49,8 +50,8 @@
 };
 
-

Table 1.86. Parameters

- +

Table 1.86. Parameters

+
@@ -77,13 +78,12 @@ @@ -96,13 +96,12 @@ @@ -115,13 +114,12 @@ @@ -132,37 +130,36 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- Position + Position

- A model of Forward + A model of Forward Iterator

- Range + Range

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-result_of::insert_range<Sequence, Position, Range>::type
+result_of::insert_range<Sequence, Position, Range>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/insert_range.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
index 93f693ed..2b0d7fb6 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
@@ -3,7 +3,7 @@
 
 join
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
+join +
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -47,34 +48,33 @@
 };
 
- - Expression + + Expression Semantics
-result_of::join<LhSequence, RhSequence>::type
+result_of::join<LhSequence, RhSequence>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
index ad364d9c..523a3812 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
@@ -3,7 +3,7 @@
 
 pop_back
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.87. Parameters

- +

Table 1.87. Parameters

+
@@ -74,13 +75,12 @@ @@ -90,36 +90,35 @@

-

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-result_of::pop_back<Sequence>::type
+result_of::pop_back<Sequence>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/tranformation/pop_back.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
index 11a37984..9cbf01ab 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
@@ -3,7 +3,7 @@
 
 pop_front
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.88. Parameters

- +

Table 1.88. Parameters

+
@@ -74,13 +75,12 @@ @@ -90,29 +90,28 @@

-

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

+
-
- - Expression +
+ + Expression Semantics
-result_of::pop_front<Sequence>::type
+result_of::pop_front<Sequence>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 8e276645..37389e12 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.89. Parameters

- +

Table 1.89. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- T + T

@@ -110,30 +110,29 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::push_back<Sequence, T>::type
+result_of::push_back<Sequence, T>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index ad67daff..bf20eb9d 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.90. Parameters

- +

Table 1.90. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- T + T

@@ -110,30 +110,29 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::push_front<Sequence, T>::type
+result_of::push_front<Sequence, T>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index 9a3acace..0096701d 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -3,7 +3,7 @@ remove - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


@@ -24,18 +24,19 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.79. Parameters

- +

Table 1.79. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- T + T

@@ -110,38 +110,37 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::remove<Sequence, T>::type
+result_of::remove<Sequence, T>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/remove.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
index 44468eb4..44d4c51f 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
@@ -3,7 +3,7 @@
 
 remove_if
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,19 +24,20 @@
- - Description + + 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 + + Synopsis
 template<
@@ -49,8 +50,8 @@
 };
 
-

Table 1.80. Parameters

- +

Table 1.80. Parameters

+
@@ -77,13 +78,12 @@ @@ -96,7 +96,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- Pred + Pred

@@ -107,42 +107,41 @@

- Remove elements which evaluate to boost::mpl::true_ + Remove elements which evaluate to boost::mpl::true_

+
-
- - Expression +
+ + Expression Semantics
-result_of::remove_if<Sequence, Pred>::type
+result_of::remove_if<Sequence, Pred>::type
 

- Return type: A model of Forward + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
index af240b9d..99a1869c 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
@@ -3,7 +3,7 @@
 
 replace
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + 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 + + Synopsis
 template<
@@ -48,8 +49,8 @@
 };
 
-

Table 1.77. Parameters

- +

Table 1.77. Parameters

+
@@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- T + T

@@ -110,35 +110,34 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::replace<Sequence,T>::type
+result_of::replace<Sequence,T>::type
 

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

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

- - Complexity + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/replace.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
index 26ac64bb..e9b535ff 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
@@ -3,7 +3,7 @@
 
 replace_if
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,20 +24,20 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -50,8 +50,8 @@
 };
 
-

Table 1.78. Parameters

- +

Table 1.78. Parameters

+
@@ -78,13 +78,12 @@ @@ -97,13 +96,12 @@ @@ -116,7 +114,7 @@ -

- Sequence + Sequence

- A model of Forward + A model of Forward Sequence

- F + F

- A model of unary Polymorphic + A model of unary Polymorphic Function Object

- T + T

@@ -131,35 +129,34 @@
+
-
- - Expression +
+ + Expression Semantics
-result_of::replace_if<Sequence,F,T>::type
+result_of::replace_if<Sequence,F,T>::type
 

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

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

- - Complexity + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
index 84a08e9f..3e69d744 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
@@ -3,7 +3,7 @@
 
 reverse
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -47,8 +48,8 @@
 };
 
-

Table 1.81. Parameters

- +

Table 1.81. Parameters

+
@@ -74,13 +75,12 @@ @@ -90,35 +90,34 @@

-

- Sequence + Sequence

- A model of Bidirectional + A model of Bidirectional Sequence

+
-
- - Expression +
+ + Expression Semantics
-result_of::reverse<Sequence>::type
+result_of::reverse<Sequence>::type
 

- Return type: A model of Bidirectional + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
index 9f9c7e0f..094a88fd 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
@@ -3,7 +3,7 @@
 
 transform
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,21 +24,22 @@
- - Description + + Description

- 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. + 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 + + Unary version synopsis
@@ -46,12 +47,12 @@
     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.75. Parameters

- +

Table 1.75. Parameters

+
@@ -78,13 +79,12 @@ @@ -97,15 +97,15 @@ -

- seq + seq

- A model of Forward + A model of Forward Sequence

- f + f

- 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. + 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.

@@ -115,29 +115,28 @@
+
-
- - Expression +
+ + Expression Semantics
-transform(seq, f);
+transform(seq, f);
 

- Return type: A model of Forward + 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 + + Binary version synopsis
@@ -146,12 +145,12 @@
     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.76. Parameters

- +

Table 1.76. Parameters

+
@@ -178,13 +177,12 @@ @@ -197,13 +195,12 @@ @@ -216,16 +213,16 @@ -

- seq1 + seq1

- A model of Forward + A model of Forward Sequence

- seq2 + seq2

- A model of Forward + A model of Forward Sequence

- f + 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 + 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

@@ -235,36 +232,35 @@
+
-

- Return type: A model of Forward +

+ 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 + + Complexity

Constant. Returns a view which is lazily evaluated.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 #include <boost/fusion/include/transform.hpp>
 
- - Example + + Example
 struct triple
@@ -277,7 +273,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/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html index 2cb12b87..701fef69 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html @@ -3,7 +3,7 @@ zip - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@
-zip
+zip +
- - Description + + Description

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

- - Synopsis + + Synopsis
 template<
@@ -50,38 +51,38 @@
 };
 
- - Expression + + 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 + + Complexity

Constant.

- - Header + + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
index 8c356fee..1b6c2bca 100644
--- a/doc/html/fusion/change_log.html
+++ b/doc/html/fusion/change_log.html
@@ -3,7 +3,7 @@
 
 Change log
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@

This section summarizes significant changes to the Fusion library.

  • - Sep 27, 2006: Added boost::tuple + Sep 27, 2006: Added boost::tuple support. (Joel de Guzman)
  • - Nov 17, 2006: Added boost::variant + Nov 17, 2006: Added boost::variant support. (Joel de Guzman)
  • @@ -47,12 +48,12 @@ May 8, 2007: Added associative struct adapter. (Dan Marsden)
  • - Dec 20, 2007: Removed boost::variant + Dec 20, 2007: Removed boost::variant support. After thorough investigation, I think now that the move to make variant a fusion sequence is rather quirky. A variant will always have a size==1 regardless of the number of types it can contain and there's no way to know at compile time what it contains. Iterating over its types is simply - wrong. All these imply that the variant is not + wrong. All these imply that the variant is not a fusion sequence. (Joel de Guzman)
diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index a08ca223..774aa517 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -3,20 +3,19 @@ Container - + - + - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -25,7 +24,8 @@
vector
cons
@@ -45,13 +45,13 @@

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

-

- - Header -

+

+ + Header +

 #include <boost/fusion/container.hpp>
 #include <boost/fusion/include/container.hpp>
diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
index c98541f8..cf605a60 100644
--- a/doc/html/fusion/container/cons.html
+++ b/doc/html/fusion/container/cons.html
@@ -3,7 +3,7 @@
 
 cons
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,43 +24,43 @@
-

- - Description -

+cons +
+
+ + 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 + 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 + each element is peculiarly constant (see Recursive Inlined Functions).

-

- - Header -

+
+ + Header +
 #include <boost/fusion/container/list/cons.hpp>
 #include <boost/fusion/include/cons.hpp>
 
-

- - Synopsis -

+
+ + Synopsis +
 template <typename Car, typename Cdr = nil>
 struct cons;
 
-

- - Template parameters -

+
+ + Template parameters +
@@ -88,7 +88,7 @@

- Car + Car

@@ -104,7 +104,7 @@

- Cdr + Cdr

@@ -114,62 +114,59 @@

- nil + nil

-

- - Model of -

- +
+ + Model of +
+

Notation

-
nil
+
nil

- An empty cons + An empty cons

-
C
+
C

- A cons type + A cons type

-
l, - l2
+
l, + l2

- Instances of cons + Instances of cons

-
car
+
car

An arbitrary data

-
cdr
+
cdr

- Another cons list + Another cons list

-
s
+
s

- A Forward Sequence + A Forward Sequence

-
N
+
N

An MPL Integral Constant

-

- - Expression Semantics -

+
+ + Expression Semantics +

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

@@ -193,7 +190,7 @@ @@ -230,81 +227,80 @@

- nil() + nil()

@@ -205,7 +202,7 @@

- C() + C()

@@ -217,12 +214,12 @@

- C(car) + C(car)

- Creates a cons with car + Creates a cons with car head and default constructed tail.

- 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. + Copy constructs a cons from a Forward + Sequence, s.

- l = - s + l = + s

- Assigns to a cons, l, - from a Forward - Sequence, s. + Assigns to a cons, l, + from a Forward + 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;
 
diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html index 7b0a4c9d..ee12e4e5 100644 --- a/doc/html/fusion/container/conversion.html +++ b/doc/html/fusion/container/conversion.html @@ -3,7 +3,7 @@ Conversion - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,19 +24,20 @@

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

-

- - Header -

+
+ + Header +
 #include <boost/fusion/include/convert.hpp>
 
diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html index 62891875..58d5595e 100644 --- a/doc/html/fusion/container/conversion/functions.html +++ b/doc/html/fusion/container/conversion/functions.html @@ -3,7 +3,7 @@ Functions - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
as_list
as_vector
diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index 1c0c7a3d..629247c7 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -3,7 +3,7 @@ as_list - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
- - Description + + Description

- Convert a fusion sequence to a list. + Convert a fusion sequence to a list.

- - Synopsis + + Synopsis
 template <typename Sequence>
@@ -46,8 +47,8 @@
 as_list(Sequence const& seq);
 
- - Parameters + + Parameters
@@ -75,7 +76,7 @@

- seq + seq

@@ -91,34 +92,34 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/list/convert.hpp>
 #include <boost/fusion/include/as_list.hpp>
 
- - Example + + Example
-as_list(make_vector('x', 123, "hello"))
+as_list(make_vector('x', 123, "hello"))
 
diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html index 19299e93..1337429b 100644 --- a/doc/html/fusion/container/conversion/functions/as_map.html +++ b/doc/html/fusion/container/conversion/functions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
- - Description + + Description

- Convert a fusion sequence to a map. + Convert a fusion sequence to a map.

- - Synopsis + + Synopsis
 template <typename Sequence>
@@ -46,8 +47,8 @@
 as_map(Sequence const& seq);
 
- - Parameters + + Parameters
@@ -75,7 +76,7 @@

- seq + seq

@@ -91,41 +92,41 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/map/convert.hpp>
 #include <boost/fusion/include/as_map.hpp>
 
- - Example + + 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/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html index edede9ee..c901224b 100644 --- a/doc/html/fusion/container/conversion/functions/as_set.html +++ b/doc/html/fusion/container/conversion/functions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
- - Description + + Description

- Convert a fusion sequence to a set. + Convert a fusion sequence to a set.

- - Synopsis + + Synopsis
 template <typename Sequence>
@@ -46,8 +47,8 @@
 as_set(Sequence const& seq);
 
- - Parameters + + Parameters
@@ -75,7 +76,7 @@

- seq + seq

@@ -91,38 +92,38 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/set/convert.hpp>
 #include <boost/fusion/include/as_set.hpp>
 
- - Example + + Example
-as_set(make_vector('x', 123, "hello"))
+as_set(make_vector('x', 123, "hello"))
 
diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html index d390bd72..f3f30411 100644 --- a/doc/html/fusion/container/conversion/functions/as_vector.html +++ b/doc/html/fusion/container/conversion/functions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
- - Description + + Description

- Convert a fusion sequence to a vector. + Convert a fusion sequence to a vector.

- - Synopsis + + Synopsis
 template <typename Sequence>
@@ -46,8 +47,8 @@
 as_vector(Sequence const& seq);
 
- - Parameters + + Parameters
@@ -75,7 +76,7 @@

- seq + seq

@@ -91,34 +92,34 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/include/as_vector.hpp>
 
- - Example + + Example
-as_vector(make_list('x', 123, "hello"))
+as_vector(make_list('x', 123, "hello"))
 
diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html index 9e033417..7ae55d1d 100644 --- a/doc/html/fusion/container/conversion/metafunctions.html +++ b/doc/html/fusion/container/conversion/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
as_list
as_vector
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index ffe16a67..39085c5d 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -3,7 +3,7 @@ as_list - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,25 +24,26 @@
- - Description + + Description

- Returns the result type of as_list. + Returns the result type of as_list.

- - Synopsis + + Synopsis
 template <typename Sequence>
 struct as_list;
 
- - Parameters + + Parameters
@@ -70,12 +71,12 @@

- Sequence + Sequence

- A fusion Sequence + A fusion Sequence

@@ -86,35 +87,35 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/list/convert.hpp>
 #include <boost/fusion/include/as_list.hpp>
 
- - Example + + Example
-result_of::as_list<vector<char, int> >::type
+result_of::as_list<vector<char, int> >::type
 
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html index 674cd94a..66c08547 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,25 +24,26 @@
- - Description + + Description

- Returns the result type of as_map. + Returns the result type of as_map.

- - Synopsis + + Synopsis
 template <typename Sequence>
 struct as_map;
 
- - Parameters + + Parameters
@@ -70,12 +71,12 @@

- Sequence + Sequence

- A fusion Sequence + A fusion Sequence

@@ -86,42 +87,42 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/map/convert.hpp>
 #include <boost/fusion/include/as_map.hpp>
 
- - Example + + 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/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html index a1df58c6..4d4ab6bc 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,25 +24,26 @@
- - Description + + Description

- Returns the result type of as_set. + Returns the result type of as_set.

- - Synopsis + + Synopsis
 template <typename Sequence>
 struct as_set;
 
- - Parameters + + Parameters
@@ -70,12 +71,12 @@

- Sequence + Sequence

- A fusion Sequence + A fusion Sequence

@@ -86,39 +87,39 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/set/convert.hpp>
 #include <boost/fusion/include/as_set.hpp>
 
- - Example + + Example
-result_of::as_set<vector<char, int> >::type
+result_of::as_set<vector<char, int> >::type
 
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html index 785ce953..92085c12 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,25 +24,26 @@
- - Description + + Description

- Returns the result type of as_vector. + Returns the result type of as_vector.

- - Synopsis + + Synopsis
 template <typename Sequence>
 struct as_vector;
 
- - Parameters + + Parameters
@@ -70,12 +71,12 @@

- Sequence + Sequence

- A fusion Sequence + A fusion Sequence

@@ -86,35 +87,35 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/include/as_vector.hpp>
 
- - Example + + Example
-result_of::as_vector<list<char, int> >::type
+result_of::as_vector<list<char, int> >::type
 
diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html index 45d6a9c1..7bfc381d 100644 --- a/doc/html/fusion/container/generation.html +++ b/doc/html/fusion/container/generation.html @@ -3,7 +3,7 @@ Generation - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,18 +24,19 @@

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

-

- - Header -

+
+ + Header +
 #include <boost/fusion/container/generation.hpp>
 #include <boost/fusion/include/generation.hpp>
diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html
index 20861a17..5a0c3494 100644
--- a/doc/html/fusion/container/generation/functions.html
+++ b/doc/html/fusion/container/generation/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
make_list
make_cons
diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index 1d9ab235..11b76cf8 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -3,7 +3,7 @@ list_tie - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,37 +24,38 @@
- - Description + + Description

- Constructs a tie using a list sequence. + Constructs a tie using a list sequence.

- - Synopsis + + 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 + + Parameters
@@ -82,49 +83,49 @@

- 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 + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/list_tie.hpp>
 #include <boost/fusion/include/list_tie.hpp>
 
- - Example + + Example
 int i = 123;
diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
index f010150f..5256366d 100644
--- a/doc/html/fusion/container/generation/functions/make_cons.html
+++ b/doc/html/fusion/container/generation/functions/make_cons.html
@@ -3,7 +3,7 @@
 
 make_cons
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,32 +24,33 @@
- - Description + + Description

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

- - Synopsis + + 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 + + Parameters
@@ -78,12 +79,12 @@

- car + car

- Instance of Car + Instance of Car

@@ -95,12 +96,12 @@

- cdr + cdr

- Instance of Cdr + Instance of Cdr

@@ -112,43 +113,43 @@
- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/make_cons.hpp>
 #include <boost/fusion/include/make_cons.hpp>
 
- - Example + + Example
 make_cons('x', make_cons(123))
 
- - See + + See also

- boost::ref + boost::ref

diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index e0746a10..9b6e652e 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -3,7 +3,7 @@ make_list - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,38 +24,39 @@
- - Description + + Description

- Create a list + Create a list from one or more values.

- - Synopsis + + 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 + + Parameters
@@ -83,59 +84,59 @@

- 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 + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- - Example + + Example
 make_list(123, "hello", 12.5)
 
- - See + + See also

- boost::ref + boost::ref

diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index a274b9b2..b674053c 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -3,7 +3,7 @@ make_map - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,41 +24,42 @@
- - Description + + Description

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

- - Synopsis + + 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 - [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 + + Parameters
@@ -87,9 +88,9 @@

- K0, + K0, K1,... - KN + KN

@@ -99,83 +100,83 @@

- 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 + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/make_map.hpp>
 #include <boost/fusion/include/make_map.hpp>
 
- - Example + + Example
 make_map(
-    make_pair<int>('X')
-  , make_pair<double>("Men"))
+    make_pair<int>('X')
+  , make_pair<double>("Men"))
 
- - See + + See also

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



-

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

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

diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index a1e64608..f21f9bca 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,39 +24,40 @@
- - Description + + Description

- Create a set + Create a set from one or more values.

- - Synopsis + + 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 - [8] - 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 + [8] + 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 + + Parameters
@@ -84,69 +85,69 @@

- 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 + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/make_set.hpp>
 #include <boost/fusion/include/make_set.hpp>
 
- - Example + + Example
 make_set(123, "hello", 12.5)
 
- - See + + See also

- boost::ref + boost::ref



-

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

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

diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index f0999784..876ce94d 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,38 +24,39 @@
- - Description + + Description

- Create a vector + Create a vector from one or more values.

- - Synopsis + + 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 + + Parameters
@@ -83,59 +84,59 @@

- 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 + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/make_vector.hpp>
 #include <boost/fusion/include/make_vector.hpp>
 
- - Example + + Example
 make_vector(123, "hello", 12.5)
 
- - See + + See also

- boost::ref + boost::ref

diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 02c64edd..3ca69741 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -3,7 +3,7 @@ map_tie - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,37 +24,38 @@
- - Description + + Description

- Constructs a tie using a map sequence. + Constructs a tie using a map sequence.

- - Synopsis + + 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<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 + 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 + + Parameters
@@ -83,9 +84,9 @@ @@ -103,51 +104,51 @@

- K0, + K0, K1,... - KN + KN

@@ -95,7 +96,7 @@

- The key types associated with each of the x1,x2,...,xN + The key types associated with each of the x1,x2,...,xN values

- x0, + x0, x1,... - xN + xN

- Instances of T0, T1,... TN + Instances of T0, T1,... TN

- The arguments to map_tie + The arguments to map_tie

- - Expression + + Expression Semantics
 map_tie<K0, K1,... KN>(x0, x1,... xN);
 

- Return type: map<pair<K0, D0&>, pair<K1, - D1&>,... pair<KN, + 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 + Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

- - Header + + Header
 #include <boost/fusion/container/generation/map_tie.hpp>
 #include <boost/fusion/include/map_tie.hpp>
 
- - Example + + Example
 struct int_key;
diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
index 5f852ba9..783aaa72 100644
--- a/doc/html/fusion/container/generation/functions/tiers.html
+++ b/doc/html/fusion/container/generation/functions/tiers.html
@@ -3,7 +3,7 @@
 
 Tiers
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@

Tiers are sequences, where all elements are non-const reference types. They are constructed with a call to a couple of tie @@ -32,9 +33,9 @@ flavors.

Example: @@ -42,14 +43,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)) - [10] + 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)) + [10] .

@@ -58,7 +59,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,8 +68,8 @@ when calling functions which return sequences.

- - Ignore + + Ignore

There is also an object called ignore which allows @@ -78,13 +79,13 @@

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


-

[10] +

[10] see Boost.Ref - for details about ref + for details about ref

diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 0d816ce5..8e5cbcf4 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -3,7 +3,7 @@ vector_tie - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,37 +24,38 @@
- - Description + + Description

- Constructs a tie using a vector sequence. + Constructs a tie using a vector sequence.

- - Synopsis + + 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 + + Parameters
@@ -82,49 +83,49 @@

- 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 + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/vector_tie.hpp>
 #include <boost/fusion/include/vector_tie.hpp>
 
- - Example + + Example
 int i = 123;
diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html
index e03be94d..c4e93919 100644
--- a/doc/html/fusion/container/generation/metafunctions.html
+++ b/doc/html/fusion/container/generation/metafunctions.html
@@ -3,7 +3,7 @@
 
 MetaFunctions
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
make_list
make_cons
diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index 97396d3a..8d91da55 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -3,7 +3,7 @@ list_tie - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,36 +24,37 @@
- - Description + + Description

- Returns the result type of list_tie. + Returns the result type of list_tie.

- - Synopsis + + 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 + 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 + + Parameters
@@ -81,9 +82,9 @@

- T0, + T0, T1,... - TN + TN

@@ -93,37 +94,37 @@

- The arguments to list_tie + The arguments to list_tie

- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/list_tie.hpp>
 #include <boost/fusion/include/list_tie.hpp>
 
- - Example + + Example
 result_of::list_tie<int, double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
index 92a31faa..9d0055fa 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
@@ -3,7 +3,7 @@
 
 make_cons
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,25 +24,26 @@
- - Description + + Description

- Returns the result type of make_cons. + Returns the result type of make_cons.

- - Synopsis + + Synopsis
 template <typename Car, typename Cdr = nil>
 struct make_cons;
 
- - Parameters + + Parameters
@@ -71,7 +72,7 @@

- Car + Car

@@ -88,12 +89,12 @@

- Cdr + Cdr

- A cons + A cons

@@ -105,34 +106,34 @@
- - Expression + + 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. + 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 + Semantics: Create a cons from Car + (head) and optional Cdr (tail).

- - Header + + Header
 #include <boost/fusion/container/generation/make_cons.hpp>
 #include <boost/fusion/include/make_cons.hpp>
 
- - Example + + Example
 result_of::make_cons<char, result_of::make_cons<int>::type>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
index 1442913b..f1acacd1 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
@@ -3,7 +3,7 @@
 
 make_list
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,36 +24,37 @@
- - Description + + Description

- Returns the result type of make_list. + Returns the result type of make_list.

- - Synopsis + + 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 + 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 + + Parameters
@@ -81,9 +82,9 @@

- T0, + T0, T1,... - TN + TN

@@ -93,38 +94,38 @@

- Template arguments to make_list + Template arguments to make_list

- - Expression + + Expression Semantics
 result_of::make_list<T0, T1,... TN>::type
 

- Return type: A list with elements of types - converted following the rules for element + 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 + + Header
 #include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- - Example + + Example
 result_of::make_list<int, const char(&)[7], double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
index 72ba51af..705c764a 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
@@ -3,7 +3,7 @@
 
 make_map
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,17 +24,18 @@
- - Description + + Description

- Returns the result type of make_map. + Returns the result type of make_map.

- - Synopsis + + Synopsis
 template <
@@ -43,20 +44,20 @@
 struct make_map;
 

- 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 + + Parameters
@@ -85,9 +86,9 @@

- K0, + K0, K1,... - KN + KN

@@ -97,16 +98,16 @@

- Keys associated with T0, T1,... TN + Keys associated with T0, T1,... TN

- T0, + T0, T1,... - TN + TN

@@ -116,60 +117,60 @@

- Data associated with keys K0, K1,... KN + Data associated with keys K0, K1,... KN

- - Expression + + 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 + 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 + 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 + + Header
 #include <boost/fusion/container/generation/make_map.hpp>
 #include <boost/fusion/include/make_map.hpp>
 
- - Example + + Example
 result_of::make_map<int, double, char, double>::type
 
- - See + + See also

- fusion::pair + fusion::pair



-

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

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

diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 284be2e8..5c0b56cc 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,37 +24,38 @@
- - Description + + Description

- Returns the result type of make_set. + Returns the result type of make_set.

- - Synopsis + + Synopsis
 template <typename T0, typename T1,... typename TN>
 struct make_set;
 

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [11] - 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 + [11] + 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 + + Parameters
@@ -82,9 +83,9 @@

- T0, + T0, T1,... - TN + TN

@@ -94,51 +95,51 @@

- The arguments to make_set + The arguments to make_set

- - Expression + + Expression Semantics
 result_of::make_set<T0, T1,... TN>::type
 

- Return type: A set with elements of types converted - following the rules for element + 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 + + Header
 #include <boost/fusion/container/generation/make_set.hpp>
 #include <boost/fusion/include/make_set.hpp>
 
- - Example + + Example
 result_of::make_set<int, char, double>::type
 


-

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

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

diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index 920036ae..685f6184 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,36 +24,37 @@
- - Description + + Description

- Returns the result type of make_vector. + Returns the result type of make_vector.

- - Synopsis + + 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 + 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 + + Parameters
@@ -81,9 +82,9 @@

- T0, + T0, T1,... - TN + TN

@@ -93,38 +94,38 @@

- Template arguments to make_vector + Template arguments to make_vector

- - Expression + + Expression Semantics
 result_of::make_vector<T0, T1,... TN>::type
 

- Return type: A vector with elements of types - converted following the rules for element + 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 + + Header
 #include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- - Example + + Example
 result_of::make_vector<int, const char(&)[7], double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
index 4e8f0c13..30d5a780 100644
--- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
@@ -3,7 +3,7 @@
 
 map_tie
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,36 +24,37 @@
- - Description + + Description

- Returns the result type of map_tie. + Returns the result type of map_tie.

- - Synopsis + + 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 + 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 + + Parameters
@@ -82,9 +83,9 @@

- K0, + K0, K1,... - KN + KN

@@ -94,16 +95,16 @@

- The key types for map_tie + The key types for map_tie

- D0, + D0, D1,... - DN + DN

@@ -113,39 +114,39 @@

- The arguments types for map_tie + The arguments types for map_tie

- - Expression + + Expression Semantics
 result_of::map_tie<K0, K1,... KN, D0, D1,... DN>::type;
 

- Return type: map<pair<K0, D0&>, pair<K1, - D1&>,... pair<KN, + 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 + Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

- - Header + + Header
 #include <boost/fusion/container/generation/map_tie.hpp>
 #include <boost/fusion/include/map_tie.hpp>
 
- - Example + + Example
 struct int_key;
diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
index e4a40918..823fbeea 100644
--- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
@@ -3,7 +3,7 @@
 
 vector_tie
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,36 +24,37 @@
- - Description + + Description

- Returns the result type of vector_tie. + Returns the result type of vector_tie.

- - Synopsis + + 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 + 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 + + Parameters
@@ -81,9 +82,9 @@

- T0, + T0, T1,... - TN + TN

@@ -93,37 +94,37 @@

- The arguments to vector_tie + The arguments to vector_tie

- - Expression + + Expression Semantics
 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 + + Header
 #include <boost/fusion/container/generation/vector_tie.hpp>
 #include <boost/fusion/include/vector_tie.hpp>
 
- - Example + + Example
 result_of::vector_tie<int, double>::type
diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
index 8cfac083..2256df89 100644
--- a/doc/html/fusion/container/list.html
+++ b/doc/html/fusion/container/list.html
@@ -3,7 +3,7 @@
 
 list
 
-
+
 
 
 
@@ -12,10 +12,10 @@
 
 
-
+
-
-
+
+
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,33 +24,33 @@
-

- - Description -

+list +
+
+ + Description +

- list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector + 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). + runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

-

- - Header -

+
+ + Header +
 #include <boost/fusion/container/list.hpp>
 #include <boost/fusion/include/list.hpp>
 #include <boost/fusion/container/list/list_fwd.hpp>
 #include <boost/fusion/include/list_fwd.hpp>
 
-

- - Synopsis -

+
+ + Synopsis +
 template <
     typename T0 = unspecified
@@ -62,26 +62,26 @@
 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 -

+
+ + Template parameters +
@@ -108,7 +108,7 @@

- T0...TN + T0...TN

@@ -123,47 +123,44 @@
-

- - Model of -

- +
+ + Model of +
+

Notation

-
L
+
L

- A list type + A list type

-
l
+
l

- An instance of list + An instance of list

-
e0...en
+
e0...en

Heterogeneous values

-
s
+
s

- A Forward Sequence + A Forward Sequence

-
N
+
N

An MPL Integral Constant

-

- - Expression Semantics -

+
+ + Expression Semantics +

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

@@ -187,7 +184,7 @@

- L() + L()

@@ -199,79 +196,78 @@

- L(e0, e1,... - en) + L(e0, e1,... + 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. + Copy constructs a list from a Forward + Sequence, s.

- l = - s + l = + s

- Assigns to a list, l, - from a Forward - Sequence, s. + Assigns to a list, l, + from a Forward + 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;
 
diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html index c0f6098c..37f435a4 100644 --- a/doc/html/fusion/container/map.html +++ b/doc/html/fusion/container/map.html @@ -3,7 +3,7 @@ map - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,35 +24,35 @@

-map

-

- - Description -

+map +
+
+ + Description +

- map is an Associative + map is an Associative Sequence of heteregenous typed data elements. Each element is a key/data - pair (see fusion::pair) + 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). + (see Overloaded Functions).

-

- - Header -

+
+ + Header +
 #include <boost/fusion/container/map.hpp>
 #include <boost/fusion/include/map.hpp>
 #include <boost/fusion/container/map_fwd.hpp>
 #include <boost/fusion/include/map_fwd.hpp>
 
-

- - Synopsis -

+
+ + Synopsis +
 template <
     typename T0 = unspecified
@@ -64,26 +64,26 @@
 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 -

+
+ + Template parameters +
@@ -110,7 +110,7 @@

- T0...TN + T0...TN

@@ -125,49 +125,44 @@
-

- - Model of -

+
+ + Model of +

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 Sequence + A Forward Sequence

-

- - Expression Semantics -

+
+ + Expression Semantics +

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

@@ -191,7 +186,7 @@

- M() + M()

@@ -203,64 +198,62 @@

- M(e0, e1,... - en) + M(e0, e1,... + en)

- Creates a map with element pairs e0...en. + Creates a map with element pairs e0...en.

- M(s) + M(s)

- Copy constructs a map from a Forward - Sequence s. + Copy constructs a map from a Forward + Sequence s.

- m = - s + m = + s

- Assigns to a map, m, - from a Forward - Sequence s. + Assigns to a map, m, + from a Forward + Sequence s.

-

- - Example -

+
+ + 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;
 
diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html index 8c062479..9a4e0f81 100644 --- a/doc/html/fusion/container/set.html +++ b/doc/html/fusion/container/set.html @@ -3,7 +3,7 @@ set - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,34 +24,34 @@

-set

-

- - Description -

+set +
+
+ + Description +

- set is an Associative + 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 + element key lookup has constant runtime complexity (see Overloaded Functions).

-

- - Header -

+
+ + Header +
 #include <boost/fusion/container/set.hpp>
 #include <boost/fusion/include/set.hpp>
 #include <boost/fusion/container/set_fwd.hpp>
 #include <boost/fusion/include/set_fwd.hpp>
 
-

- - Synopsis -

+
+ + Synopsis +
 template <
     typename T0 = unspecified
@@ -63,26 +63,26 @@
 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 -

+
+ + Template parameters +
@@ -109,7 +109,7 @@

- T0...TN + T0...TN

@@ -124,49 +124,44 @@
-

- - Model of -

+
+ + Model of +

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 Sequence + A Forward Sequence

-

- - Expression Semantics -

+
+ + Expression Semantics +

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

@@ -190,7 +185,7 @@

- S() + S()

@@ -202,58 +197,56 @@

- S(e0, e1,... - en) + S(e0, e1,... + en)

- Creates a set with elements e0...en. + Creates a set with elements e0...en.

- S(fs) + S(fs)

- Copy constructs a set from a Forward - Sequence fs. + Copy constructs a set from a Forward + Sequence fs.

- s = - fs + s = + fs

- Assigns to a set, s, - from a Forward - Sequence fs. + Assigns to a set, s, + from a Forward + Sequence fs.

-

- - Example -

+
+ + 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/container/vector.html b/doc/html/fusion/container/vector.html index 954a2592..56496ba9 100644 --- a/doc/html/fusion/container/vector.html +++ b/doc/html/fusion/container/vector.html @@ -3,7 +3,7 @@ vector - + @@ -12,10 +12,10 @@
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,24 +24,24 @@ +
+ + Description +

- vector is a Random + 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 -

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

- - Synopsis -

+
+ + Synopsis +

- Numbered forms + Numbered forms

 template <>
@@ -86,7 +86,7 @@
 struct vectorN;
 

- Variadic form + Variadic form

 template <
@@ -105,26 +105,26 @@
 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 -

+
+ + Template parameters +
@@ -151,7 +151,7 @@

- T0...TN + T0...TN

@@ -166,43 +166,40 @@
-

- - Model of -

-
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index b7c413cd..e6b2a5c1 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,19 +3,19 @@ Extension - + - +
- + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,7 +24,8 @@
The Full Extension Mechanism
Sequence Facade
diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index 013c0e10..cbdddd37 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -1,9 +1,9 @@ - The Full Extension Mechanism +The Full Extension Mechanism - + @@ -12,10 +12,10 @@ - + - - + +
Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

@@ -24,11 +24,12 @@

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 + easily be added. In fact, the library support for std::pair, + boost::array and MPL sequences is entirely provided using the extension mechanism.

@@ -36,7 +37,7 @@

  1. - Enable the tag dispatching + Enable the tag dispatching mechanism used by Fusion for your sequence type
  2. @@ -47,10 +48,10 @@ sequence
-

- - Our example -

+
+ + Our example +

In order to illustrate enabling a new sequence type for use with Fusion, we are going to use the type: @@ -73,19 +74,18 @@

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 + steps to enable example_struct + to serve as an Associative + Sequence as described in the Quick Start guide.

-

- - Enabling +

+ + Enabling Tag Dispatching -
+

- The Fusion extensibility mechanism uses tag + 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: @@ -96,9 +96,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 + our sequence. This is done by specializing traits::tag_of for our sequence type.

@@ -114,8 +114,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:

@@ -123,20 +123,20 @@ #include <boost/fusion/adapted/array/tag_of.hpp> #include <boost/fusion/include/tag_of.hpp>
-

- - Designing +

+ + 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. + 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>
@@ -163,37 +163,37 @@
           index 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 + 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 +

    + + 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.

    @@ -218,30 +218,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 - uses tag dispatching + 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<>
    @@ -279,17 +279,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>
         {};
    @@ -297,24 +297,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.

    @@ -322,23 +322,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 +

    + + Implementing the remaining iterator functionality -
    +

    - Ok, now we have seen the way value_of and deref work, everything else will + 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<>
    @@ -360,40 +360,37 @@
     };
     

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

    + + 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:

    @@ -405,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 - so Fusion can correctly identify our sequence as not being a View + 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 + get begin working so that we can get an iterator to start accessing the data in our sequence.

    @@ -435,33 +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. + For our Random + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl.

    -

    - - Enabling +

    + + 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:

    @@ -504,18 +500,18 @@
     

    Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the + 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 + 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 -

    +
    + + 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. @@ -523,8 +519,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/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 3403e178..0b2ccd00 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -3,7 +3,7 @@ Iterator Facade - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,29 @@ +
    + + Description +

    - The iterator_facade + The iterator_facade template provides an intrusive mechanism for producing a conforming Fusion iterator.

    -

    - - Synopsis -

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

    - - Usage -

    +
    + + Usage +

    The user of iterator_facade derives his iterator type from a specialization of iterator_facade and passes the derived iterator type as the first template @@ -57,8 +58,8 @@ type.

    -

    Table 1.93. Parameters

    - +

    Table 1.93. Parameters

    +
    @@ -79,20 +80,20 @@ -

    - iterator, It, It1, - It2 + iterator, It, It1, + It2

    - A type derived from iterator_facade + A type derived from iterator_facade

    - N + N

    @@ -103,11 +104,11 @@
    +
    -
    -

    Table 1.94. Key Expressions

    - +
    +

    Table 1.94. Key Expressions

    +
    @@ -134,12 +135,12 @@ @@ -310,13 +311,13 @@ -

    - iterator::template value_of<It>::type + iterator::template value_of<It>::type

    - The element stored at iterator position It + The element stored at iterator position It

    @@ -151,12 +152,12 @@

    - iterator::template deref<It>::type + iterator::template deref<It>::type

    - The type returned when dereferencing an iterator of type It + The type returned when dereferencing an iterator of type It

    @@ -168,12 +169,12 @@

    - iterator::template deref<It>::call(it) + iterator::template deref<It>::call(it)

    - Dereferences iterator it + Dereferences iterator it

    @@ -185,12 +186,12 @@

    - iterator::template next<It>::type + iterator::template next<It>::type

    - The type of the next element from It + The type of the next element from It

    @@ -202,12 +203,12 @@

    - iterator::template next<It>::call(it) + iterator::template next<It>::call(it)

    - The next iterator after it + The next iterator after it

    @@ -219,12 +220,12 @@

    - iterator::template prior<It>::type + iterator::template prior<It>::type

    - The type of the next element from It + The type of the next element from It

    @@ -236,12 +237,12 @@

    - iterator::template prior<It>::call(it) + iterator::template prior<It>::call(it)

    - The next iterator after it + The next iterator after it

    @@ -253,51 +254,51 @@

    - iterator::template advance<It, N>::type + iterator::template advance<It, N>::type

    - The type of an iterator advanced N - elements from It + The type of an iterator advanced N + elements from It

    - Implemented in terms of next - and prior + Implemented in terms of next + and prior

    - iterator::template advance<It, N>::call(it) + iterator::template advance<It, N>::call(it)

    - An iterator advanced N - elements from it + An iterator advanced N + elements from it

    - Implemented in terms of next - and prior + Implemented in terms of next + and prior

    - iterator::template distance<It1, It2>::type + iterator::template distance<It1, It2>::type

    - The distance between iterators of type It1 - and It2 as an MPL + The distance between iterators of type It1 + and It2 as an MPL Integral Constant

    - iterator::template distance<It1, It2>::call(it1, it2) + iterator::template distance<It1, It2>::call(it1, it2)

    - The distance between iterator it1 - and it2 + The distance between iterator it1 + and it2

    @@ -328,56 +329,56 @@

    - iterator::template equal_to<It1, It2>::type + iterator::template equal_to<It1, It2>::type

    - The distance between iterators of type It1 - and It2 + The distance between iterators of type It1 + and It2

    - boost::same_type<It1, It2>::type + boost::same_type<It1, It2>::type

    - iterator::template equal_to<It1, It2>::call(it1, it2) + iterator::template equal_to<It1, It2>::call(it1, it2)

    - The distance between iterators it1 - and it2 + The distance between iterators it1 + and it2

    - boost::same_type<It1, It2>::type() + boost::same_type<It1, It2>::type()

    +
    -

    - - Header -

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

    - - Example -

    +
    + + Example +

    - A full working example using iterator_facade is provided in triple.cpp + A full working example using iterator_facade is provided in triple.cpp in the extension examples.

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 38c49e7d..4ddb6fc7 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -3,19 +3,19 @@ Sequence Facade - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,34 +24,35 @@ +
    + + Description +

    - The sequence_facade + The sequence_facade template provides an intrusive mechanism for producing a conforming Fusion iterator.

    -

    - - Synopsis -

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

    - - Usage -

    +
    + + Usage +

    - The user of sequence_facade derives his sequence - type from a specialization of sequence_facade and passes the derived + The user of sequence_facade derives his sequence + type from a specialization of sequence_facade and passes the derived sequence type as the first template parameter. The second template parameter should be the traversal category of the sequence being implemented. The 3rd - parameter should be set to mpl::true_ + parameter should be set to mpl::true_ if the sequence is a view.

    @@ -59,8 +60,8 @@ type.

    -

    Table 1.91. Parameters

    - +

    Table 1.91. Parameters

    +
    @@ -81,19 +82,19 @@ -

    - sequence, Seq + sequence, Seq

    - A type derived from sequence_facade + A type derived from sequence_facade

    - N + N

    @@ -104,11 +105,11 @@
    +
    -
    -

    Table 1.92. Key Expressions

    - +
    +

    Table 1.92. Key Expressions

    +
    @@ -129,60 +130,60 @@ -

    - sequence::template begin<Seq>::type + sequence::template begin<Seq>::type

    - The type of an iterator to the beginning of a sequence of type Seq + The type of an iterator to the beginning of a sequence of type Seq

    - sequence::template begin<Seq>::call(seq) + sequence::template begin<Seq>::call(seq)

    - An iterator to the beginning of sequence seq + An iterator to the beginning of sequence seq

    - sequence::template end<Seq>::type + sequence::template end<Seq>::type

    - The type of an iterator to the end of a sequence of type Seq + The type of an iterator to the end of a sequence of type Seq

    - sequence::template end<Seq>::call(seq) + sequence::template end<Seq>::call(seq)

    - An iterator to the end of sequence seq + An iterator to the end of sequence seq

    - sequence::template size<Seq>::type + sequence::template size<Seq>::type

    - The size of a sequence of type Seq + The size of a sequence of type Seq as an MPL Integral Constant

    @@ -191,71 +192,71 @@

    - sequence::template size<Seq>::call(seq) + sequence::template size<Seq>::call(seq)

    - The size of sequence seq + The size of sequence seq

    - sequence::template at<Seq, N>::type + sequence::template at<Seq, N>::type

    - The type of element N - in a sequence of type Seq + The type of element N + in a sequence of type Seq

    - sequence::template at<Seq, N>::call(seq) + sequence::template at<Seq, N>::call(seq)

    - Element N in sequence - seq + Element N in sequence + seq

    - sequence::template value_at<Sequence, N>::type + sequence::template value_at<Sequence, N>::type

    - The type of the Nth - element in a sequence of type Seq + The type of the Nth + element in a sequence of type Seq

    +
    -

    - - Include -

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

    - - Example -

    +
    + + Example +

    - A full working example using sequence_facade is provided in triple.cpp + A full working example using sequence_facade is provided in triple.cpp in the extension examples.

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index c71c6ec8..119da0b6 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -3,7 +3,7 @@ Functional - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    Concepts
    @@ -64,11 +65,11 @@

    /functional.hpp>

    -

    - - Fused and unfused +

    + + Fused and unfused forms -

    +

    What is a function call?

    @@ -79,33 +80,33 @@ 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 + 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 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 +

    + + 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 @@ -118,9 +119,8 @@

    Transforming an unfused function into its fused counterpart allows n-ary calls - from an algorithm that invokes an unary Polymorphic - Function Object with Sequence + from an algorithm that invokes an unary Polymorphic + Function Object with Sequence arguments.

    @@ -129,11 +129,11 @@ variant has a corresponding generator function template that returns an adapter instance for the given argument.

    -

    - - Making +

    + + 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 diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index f5f0ecce..0839a84d 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -1,22 +1,21 @@ - Adapters +Adapters - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -25,7 +24,8 @@
    fused
    fused_procedure
    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 28492b6c..f6b677b2 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -3,19 +3,19 @@ fused - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,53 +24,51 @@
    -
    - - Description -
    +fused +
    +
    + + Description +

    - An unary Polymorphic Function - Object adapter template for Deferred - Callable Object target functions. It takes a Forward + 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 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).

    /functional/adapter/fused.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <typename Function>
     class fused;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -97,13 +95,12 @@ @@ -113,47 +110,44 @@

    - Function + Function

    - A Deferred + A Deferred Callable Object

    -
    - - Model of -
    +
    + + Model of +

    Notation

    -
    R
    +
    R

    - A possibly const qualified Deferred + A possibly const qualified Deferred Callable Object type or reference type thereof

    -
    r
    +
    r

    - An object convertible to R + An object convertible to R

    -
    s
    +
    s

    - A Sequence of arguments that - are accepted by r + A Sequence of arguments that + are accepted by r

    -
    f
    +
    f

    - An instance of fused<R> + An instance of fused<R>

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -175,61 +169,61 @@

    - 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.

    -
    - - Example -
    +
    + + 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 -
    +
    + + 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 ea01cb4e..6c35f8e5 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -3,19 +3,19 @@ fused_function_object - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,43 +24,41 @@ +
    + + Description +

    - An unary Polymorphic Function - Object adapter template for a Polymorphic - Function Object target function. It takes a Forward + 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 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).

    /functional/adapter/fused_function_object.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class fused_function_object;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -87,13 +85,12 @@ @@ -103,48 +100,45 @@

    - Function + Function

    - Polymorphic Function + Polymorphic Function Object type

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    R
    +
    R

    - A possibly const qualified Polymorphic + A possibly const qualified Polymorphic Function Object type or reference type thereof

    -
    r
    +
    r

    - An object convertible to R + An object convertible to R

    -
    s
    +
    s

    - A Sequence of arguments that - are accepted by r + A Sequence of arguments that + are accepted by r

    -
    f
    +
    f

    - An instance of fused<R> + An instance of fused<R>

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -166,55 +160,55 @@

    - 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.

    -
    - - Example -
    +
    + + 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));
     }
     
    @@ -236,23 +230,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 == 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 +
    + + See also -
    + diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 32fa9c5b..3fb241c3 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -3,19 +3,19 @@ fused_procedure - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,38 +24,37 @@ +
    + + Description +

    - An unary Polymorphic Function - Object adapter template for Callable - Object target functions. It takes a Forward + 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 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 @@ -65,19 +64,19 @@

    /functional/adapter/fused_procedure.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <typename Function>
     class fused_procedure;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -104,12 +103,12 @@ @@ -119,47 +118,45 @@

    - Function + Function

    - Callable Object + Callable Object type

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    R
    +
    R

    - A possibly const qualified Callable + A possibly const qualified Callable Object type or reference type thereof

    -
    r
    +
    r

    - An object convertible to R + An object convertible to R

    -
    s
    +
    s

    - A Sequence of arguments that - are accepted by r + A Sequence of arguments that + are accepted by r

    -
    f
    +
    f

    - An instance of fused<R> + An instance of fused<R>

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -181,75 +178,74 @@

    - 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.

    -
    - - Example -
    +
    + + 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 +
    + + See also -
    + diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 2466e19f..487030d5 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -3,19 +3,19 @@ unfused_generic - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,52 +24,53 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + 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.

    -

    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).

    /functional/adapter/unfused_generic.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class unfused_generic;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -96,13 +97,12 @@ @@ -112,52 +112,49 @@

    - Function + Function

    - An unary Polymorphic + An unary Polymorphic Function Object

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    UG
    +
    UG

    - The type unfused_generic<F> + The type unfused_generic<F>

    -
    ug
    +
    ug

    - An instance of UG, - initialized with f + An instance of UG, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ug + Arguments to ug

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -179,48 +176,48 @@

    - 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 - Sequence that contains references - to the arguments a0...aN. + Calls f with a + Sequence that contains references + to the arguments a0...aN.

    -
    - - Example -
    +
    + + Example +
     template <typename Function, typename T>
     class fused_bound_1st
    @@ -268,17 +265,17 @@
         assert(bind_1st(std::plus<float>(), 1)(0.5f) == 1.5f);
     }
     
    -
    - - See +
    + + 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 6e2511b5..6ffbe6d8 100644 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -3,19 +3,19 @@ unfused_lvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,45 +24,43 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + bundled to a Random Access Sequence of references that is passed to the target function object. Only LValue arguments are accepted.

    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).

    /functional/adapter/unfused_lvalue_args.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class unfused_lvalue_args;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -89,13 +87,12 @@ @@ -105,52 +102,49 @@

    - Function + Function

    - A unary Polymorphic + A unary Polymorphic Function Object

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    UL
    +
    UL

    - The type unfused_lvalue_args<F> + The type unfused_lvalue_args<F>

    -
    ul
    +
    ul

    - An instance of UL, - initialized with f + An instance of UL, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ul + Arguments to ul

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -172,48 +166,48 @@

    - 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 - Sequence that contains references - to the arguments a0...aN. + Calls f with a + Sequence that contains references + to the arguments a0...aN.

    -
    - - Example -
    +
    + + Example +
     struct fused_incrementer
     {
    @@ -226,7 +220,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(s,++boost::lambda::_1);
    +        for_each(s,++boost::lambda::_1);
         }
     };
     
    @@ -238,15 +232,15 @@
         assert(a == 3 && b == 'Y');
     }
     
    -
    - - See +
    + + 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 b43863b9..37b9dcd9 100644 --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -3,19 +3,19 @@ unfused_rvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,45 +24,43 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + 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 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).

    /functional/adapter/unfused_rvalue_args.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class unfused_rvalue_args;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -89,13 +87,12 @@ @@ -105,52 +102,49 @@

    - Function + Function

    - A unary Polymorphic + A unary Polymorphic Function Object

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    UR
    +
    UR

    - The type unfused_rvalue_args<F> + The type unfused_rvalue_args<F>

    -
    ur
    +
    ur

    - An instance of UR, - initialized with f + An instance of UR, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ur + Arguments to ur

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -172,48 +166,48 @@

    - 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 - Sequence that contains references - to the arguments a0...aN. + Calls f with a + Sequence that contains references + to the arguments a0...aN.

    -
    - - Example -
    +
    + + Example +
     struct sequence_printer
     {
    @@ -236,17 +230,17 @@
         print(24,"bottles of beer in",'a',"box.");
     }
     
    -
    - - See +
    + + See also -
    + diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index d7e4e349..018c31fe 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -3,19 +3,19 @@ unfused_typed - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,59 +24,63 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + bundled to a Random Access Sequence that is passed to the target function object.

    The call operators of esulting function objects are strictly typed (in - other words, non-templatized) with the types from a Sequence. + 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. 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).

    -

    /functional/adapter/unfused_typed.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function, class Sequence>
     class unfused_typed;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -104,13 +108,12 @@ @@ -122,12 +125,12 @@

    - Function + Function

    - A unary Polymorphic + A unary Polymorphic Function Object

    - Sequence + Sequence

    - A Sequence + A Sequence

    @@ -137,57 +140,54 @@
    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    S
    +
    S

    - A Sequence of parameter types + A Sequence of parameter types

    -
    UT
    +
    UT

    - The type unfused_typed<F,S> + The type unfused_typed<F,S>

    -
    ut
    +
    ut

    - An instance of UT, - initialized with f + An instance of UT, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ut, convertible - to the types in S + Arguments to ut, convertible + to the types in S

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -209,50 +209,50 @@

    - 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 -
    +
    + + Example +
     struct add_assign // applies operator+=
     {
    @@ -318,16 +318,16 @@
         assert(a == 8 && b == 'Z');
     }
     
    -
    - - See also -
    +
    + + See also +
    diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index 272e5858..e15cbd36 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -3,19 +3,19 @@ Concepts - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@ +
    + + 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 -
    +
    + + Models +
    • function pointer types @@ -50,10 +50,10 @@ all kinds of function objects
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -63,8 +63,7 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     lambda::_1 += lambda::_2;
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html index 0e8e17e9..d6ecf54c 100644 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -1,24 +1,21 @@ - Deferred - Callable Object +Deferred Callable Object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,64 +24,66 @@ +
    + + Description +

    - Callable Object + Callable Object types that work with Boost.ResultOf to determine the result of a call.

    -
    - - Refinement +
    + + Refinement of -
    - -

    Notation

    -
    F
    +
    F

    A possibly const qualified Deferred Callable Object type

    -
    A1 - ...AN
    +
    A1 + ...AN

    Argument types

    -
    a1 - ...aN
    +
    a1 + ...aN

    - Objects or references to objects with types A1 - ...AN + Objects or references to objects with types A1 + ...AN

    -
    T1 - ...TN
    +
    T1 + ...TN

    - Ti is Ai & - if ai is an LValue, - same as Ai, otherwise + Ti is Ai & + if ai is an LValue, + same as Ai, otherwise

    -
    - - Expression +
    + + Expression requirements -
    +
    @@ -105,37 +104,36 @@

    - 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 -
    +
    + + Models +
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -145,8 +143,7 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     // Note: Boost.Lambda expressions don't work with __boost_result_of__
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index 3f79e4e7..da6457dc 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -1,23 +1,21 @@ - Polymorphic Function - Object +Polymorphic Function Object - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,67 +24,64 @@ +
    + + Description +

    - A non-member-pointer Deferred + A non-member-pointer Deferred Callable Object type.

    -
    - - Refinement +
    + + Refinement of -
    +

    Notation

    -
    F
    +
    F

    A possibly const-qualified Polymorphic Function Object type

    -
    f
    +
    f

    An object or reference to an object of type F

    -
    A1 - ...AN
    +
    A1 + ...AN

    Argument types

    -
    a1 - ...aN
    +
    a1 + ...aN

    - Objects or references to objects with types A1 - ...AN + Objects or references to objects with types A1 + ...AN

    -
    T1 - ...TN
    +
    T1 + ...TN

    - Ti is Ai & - if ai is an LValue, - same as Ai, otherwise + Ti is Ai & + if ai is an LValue, + same as Ai, otherwise

    -
    - - Expression +
    + + Expression requirements -
    +
    @@ -113,15 +108,15 @@

    - f(a1, - ...aN) + f(a1, + ...aN)

    - result_of< + result_of< F(T1, - ...TN) >::type + ...TN) >::type

    @@ -131,10 +126,10 @@
    -
    - - Models -
    +
    + + Models +
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -157,8 +152,7 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     // Note: Boost.Lambda expressions don't work with __boost_result_of__
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html index d0273cb5..737d78dc 100644 --- a/doc/html/fusion/functional/concepts/reg_callable.html +++ b/doc/html/fusion/functional/concepts/reg_callable.html @@ -1,23 +1,21 @@ - Regular Callable - Object +Regular Callable Object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,53 +24,53 @@ +
    + + Description +

    - A non-member-pointer Callable + 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 +
    + + Refinement of -
    - + +

    Notation

    -
    F
    +
    F

    A possibly const qualified Deferred Callable Object type

    -
    f
    +
    f

    An object or reference to an object of type F

    -
    A1 - ...AN
    +
    A1 + ...AN

    Argument types

    -
    a1 - ...aN
    +
    a1 + ...aN

    - Objects or references to objects with types A1 - ...AN + Objects or references to objects with types A1 + ...AN

    -
    - - Expression +
    + + Expression requirements -
    +
    @@ -99,8 +97,8 @@

    - f(a1, - ...aN) + f(a1, + ...aN)

    @@ -115,10 +113,10 @@
    -
    - - Models -
    +
    + + Models +
    • function pointer types @@ -127,10 +125,10 @@ all kinds of function objects
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -138,8 +136,7 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     lambda::_1 += lambda::_2;
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html index 3cea4633..7e4d78a6 100644 --- a/doc/html/fusion/functional/generation.html +++ b/doc/html/fusion/functional/generation.html @@ -3,7 +3,7 @@ Generation - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    Functions
    Metafunctions
    diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 5deecb56..ea13ff5c 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -3,20 +3,19 @@ Functions - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    make_fused
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index 899edc04..d8736b7c 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -1,23 +1,21 @@ - - make_fused +make_fused - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,32 +24,30 @@
    - - Description + + Description

    - Creates a fused adapter for a given Deferred Callable Object. - The usual element + Creates a fused adapter for a given Deferred Callable Object. + The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_fused<F>::type
    +inline typename make_fused<F>::type
     make_fused(F const & f);
     
    - - Parameters + + Parameters
    @@ -79,13 +75,12 @@ @@ -97,53 +92,52 @@

    - f + f

    - Model of Deferred + Model of Deferred Callable Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - - Example + + 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>())));
    +    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 + + 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 136548c9..501c7ee4 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -1,24 +1,21 @@ - - make_fused_function_object +make_fused_function_object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,33 +24,31 @@
    - - Description + + Description

    - Creates a fused_function_object adapter - for a given Deferred - Callable Object. The usual element + Creates a fused_function_object adapter + for a given Deferred + Callable Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_fused_function_object<F>::type
    +inline typename make_fused_function_object<F>::type
     make_fused_function_object(F const & f);
     
    - - Parameters + + Parameters
    @@ -81,13 +76,12 @@ @@ -99,31 +93,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - - Example + + Example
     struct sub
    @@ -144,22 +138,21 @@
     
     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 + + 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 44ae9d6c..18d51b37 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -1,24 +1,21 @@ - - make_fused_procedure +make_fused_procedure - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,33 +24,31 @@
    - - Description + + Description

    - Creates a fused_procedure adapter for - a given Deferred - Callable Object. The usual element + Creates a fused_procedure adapter for + a given Deferred + Callable Object. The usual element conversion applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_fused_procedure<F>::type
    +inline typename make_fused_procedure<F>::type
     make_fused_procedure(F const & f);
     
    - - Parameters + + Parameters
    @@ -81,12 +76,12 @@ @@ -98,48 +93,47 @@

    - f + f

    - Model of Callable + Model of Callable Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - - Example + + 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 + + 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 f11a9d87..23ce62fe 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -1,24 +1,21 @@ - - make_unfused_generic +make_unfused_generic - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,33 +24,31 @@
    - - Description + + Description

    - Creates a unfused_generic adapter for - a given, unary Polymorphic - Function Object. The usual element + Creates a unfused_generic adapter for + a given, unary Polymorphic + Function Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_unfused_generic<F>::type
    +inline typename make_unfused_generic<F>::type
     make_unfused_generic(F const & f);
     
    - - Parameters + + Parameters
    @@ -81,13 +76,12 @@ @@ -99,31 +93,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - - Example + + Example
     struct bottles_song
    @@ -158,15 +152,14 @@
     }
     
    - - See + + 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 82876105..928cd398 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -1,24 +1,21 @@ - - make_unfused_lvalue_args +make_unfused_lvalue_args - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,33 +24,31 @@
    - - Description + + Description

    - Creates a unfused_lvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element + Creates a unfused_lvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_unfused_lvalue_args<F>::type
    +inline typename make_unfused_lvalue_args<F>::type
     make_unfused_lvalue_args(F const & f);
     
    - - Parameters + + Parameters
    @@ -81,13 +76,12 @@ @@ -99,31 +93,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - - Example + + Example
     struct fused_incrementer
    @@ -137,7 +131,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(s,++boost::lambda::_1);
    +        for_each(s,++boost::lambda::_1);
         }
     };
     
    @@ -149,15 +143,14 @@
     }
     
    - - See + + 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 138b6e7b..b84a5acd 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -1,23 +1,21 @@ - - make_unfused_rvalue_args +make_unfused_rvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,33 +24,31 @@
    - - Description + + Description

    - Creates a unfused_rvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element + Creates a unfused_rvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_unfused_rvalue_args<F>::type
    +inline typename make_unfused_rvalue_args<F>::type
     make_unfused_rvalue_args(F const & f);
     
    - - Parameters + + Parameters
    @@ -80,13 +76,12 @@ @@ -98,31 +93,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - - Example + + Example
     struct sequence_printer
    @@ -147,15 +142,14 @@
     }
     
    - - See + + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 1dcc003f..e3e40ce8 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -3,21 +3,19 @@ Metafunctions - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +24,8 @@
    make_fused
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index d31f3854..7d7fd7e5 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -1,23 +1,21 @@ - - make_fused +make_fused - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,28 +24,27 @@
    - - Description + + Description

    - Returns the result type of make_fused. + Returns the result type of make_fused.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -60,12 +57,11 @@
     }
     
    - - See + + 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 dde99913..5ef52865 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -1,24 +1,21 @@ - - make_fused_function_object +make_fused_function_object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,28 +24,27 @@
    - - Description + + Description

    - Returns the result type of make_fused_function_object. + Returns the result type of make_fused_function_object.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -61,12 +57,11 @@
     }
     
    - - See + + 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 bed50f2f..e2aad7bb 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -1,24 +1,21 @@ - - make_fused_procedure +make_fused_procedure - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,28 +24,27 @@
    - - Description + + Description

    - Returns the result type of make_fused_procedure. + Returns the result type of make_fused_procedure.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -61,12 +57,11 @@
     }
     
    - - See + + 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 f065e18d..94a594a4 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -1,24 +1,21 @@ - - make_unfused_generic +make_unfused_generic - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,28 +24,27 @@
    - - Description + + Description

    - Returns the result type of make_unfused_generic. + Returns the result type of make_unfused_generic.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -61,12 +57,11 @@
     }
     
    - - See + + 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 77172343..dc938553 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -1,24 +1,21 @@ - - make_unfused_lvalue_args +make_unfused_lvalue_args - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,28 +24,27 @@
    - - Description + + Description

    - Returns the result type of make_unfused_lvalue_args. + Returns the result type of make_unfused_lvalue_args.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -61,12 +57,11 @@
     }
     
    - - See + + 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 90d1841a..55baf667 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -1,23 +1,21 @@ - - make_unfused_rvalue_args +make_unfused_rvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,28 +24,27 @@
    - - Description + + Description

    - Returns the result type of make_unfused_rvalue_args. + Returns the result type of make_unfused_rvalue_args.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -60,12 +57,11 @@
     }
     
    - - See + + See also
    - + diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 107b46e1..29085191 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -3,20 +3,19 @@ Invocation - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    Functions
    Metafunctions
    diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index f2820769..d7a18181 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -3,7 +3,7 @@ Functions - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    - - Description + + Description

    - Calls a Deferred - Callable Object with the arguments from a Sequence. + Calls a Deferred + Callable Object with the arguments from a Sequence.

    The first template parameter can be specialized explicitly to avoid copying @@ -42,32 +41,32 @@

    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 + + Synopsis
     template<
         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 + + Parameters
    @@ -96,13 +95,12 @@ @@ -115,13 +113,12 @@ @@ -134,45 +131,43 @@

    - f + f

    - A Deferred + A Deferred Callable Object

    - s + s

    - A Forward + A Forward Sequence

    - - Expression + + Expression Semantics
     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.

    /functional/invocation/invoke.hpp>

    - - Example + + 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 + + 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 f58d50cd..475ed4f7 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -1,23 +1,21 @@ - - invoke_function_object +invoke_function_object - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,46 +24,43 @@
    - - Description + + Description

    - Calls a Polymorphic Function - Object with the arguments from a Sequence. + Calls a Polymorphic Function + Object with the arguments from a Sequence.

    The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object.

    - - Synopsis + + Synopsis
     template<
         typename Function,
         class Sequence
         >
    -typename result_of::invoke_function_object<Function, Sequence>::type
    +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
    +typename result_of::invoke_function_object<Function, Sequence const>::type
     invoke_function_object(Function f, Sequence const & s);
     
    - - Parameters + + Parameters
    @@ -94,13 +89,12 @@ @@ -113,13 +107,12 @@ @@ -132,28 +125,28 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - s + s

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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.

    /functional/invocation/invoke_function_object.hpp>

    - - Example + + Example
     struct sub
    @@ -175,21 +168,19 @@
     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 + + 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 04dd70b2..8a088a94 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -1,23 +1,21 @@ - - invoke_procedure +invoke_procedure - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,16 +24,16 @@
    - - Description + + Description

    - Calls a Callable - Object with the arguments from a Sequence. + Calls a Callable + Object with the arguments from a Sequence. The result of the call is ignored.

    @@ -45,8 +43,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,29 +52,27 @@ isn't implemented).

    - - Synopsis + + Synopsis
     template<
         typename Function,
         class Sequence
         >
    -typename result_of::invoke_procedure<Function, Sequence>::type
    +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
    +typename result_of::invoke_procedure<Function, Sequence const>::type
     invoke_procedure(Function f, Sequence const & s);
     
    - - Parameters + + Parameters
    @@ -105,12 +101,12 @@ @@ -123,13 +119,12 @@ @@ -142,46 +137,44 @@

    - f + f

    - Model of Callable + Model of Callable Object

    - s + s

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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.

    /functional/invocation/invoke_procedure.hpp>

    - - Example + + 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 + + See also
    diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 763b05f7..1493bf5f 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -3,20 +3,19 @@ Metafunctions - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    - - Description + + Description

    - Returns the result type of invoke. + Returns the result type of invoke.

    - - Synopsis + + Synopsis
     namespace result_of
    @@ -51,13 +51,13 @@
     }
     
    - - See + + 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 f63eb321..bfdf53a2 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -1,23 +1,21 @@ - - invoke_function_object +invoke_function_object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,20 +24,19 @@
    - - Description + + Description

    - Returns the result type of invoke_function_object. + Returns the result type of invoke_function_object.

    - - Synopsis + + Synopsis
     namespace result_of
    @@ -55,14 +52,13 @@
     }
     
    - - See + + 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 54452d8d..c087b331 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -1,23 +1,21 @@ - - invoke_procedure +invoke_procedure - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,20 +24,19 @@
    - - Description + + Description

    - Returns the result type of invoke_procedure. + Returns the result type of invoke_procedure.

    - - Synopsis + + Synopsis
     namespace result_of
    @@ -55,14 +52,13 @@
     }
     
    - - See + + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 5d454021..3b762476 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,7 +3,7 @@ Introduction - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,14 +24,15 @@

    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 +42,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 +52,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 +90,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/iterator.html b/doc/html/fusion/iterator.html index d28a765e..cdcc37eb 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -3,7 +3,7 @@ Iterator - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    Concepts
    @@ -71,12 +72,12 @@ iterators are a fundamental concept in Fusion. As with MPL and STL iterators describe positions, and provide access to data within an underlying - Sequence. + Sequence.

    -

    - - Header -

    +

    + + Header +

     #include <boost/fusion/iterator.hpp>
     #include <boost/fusion/include/iterator.hpp>
    diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html
    index 33096998..93d6eda5 100644
    --- a/doc/html/fusion/iterator/concepts.html
    +++ b/doc/html/fusion/iterator/concepts.html
    @@ -3,20 +3,19 @@
     
     Concepts
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    Forward Iterator
    @@ -35,16 +35,11 @@ Access Iterator

    - 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 + 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.

    diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 048d5c1c..661087e9 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -1,24 +1,21 @@ -Bidirectional - Iterator +Bidirectional Iterator - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,56 +24,54 @@ +
    + + Description +

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

    Notation

    -
    i
    +
    i

    A Bidirectional Iterator

    -
    I
    +
    I

    A Bidirectional Iterator type

    -
    M
    +
    M

    An MPL integral constant

    -
    N
    +
    N

    An integral constant

    -
    - - Refinement +
    + + Refinement of -
    +

    - Forward Iterator + Forward Iterator

    -
    - - Expression +
    + + Expression requirements -
    +

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

    @@ -106,13 +101,12 @@ @@ -125,13 +119,12 @@ @@ -144,13 +137,12 @@ @@ -163,13 +155,12 @@ @@ -181,11 +172,11 @@

    - next(i) + next(i)

    - Bidirectional + Bidirectional Iterator

    - prior(i) + prior(i)

    - Bidirectional + Bidirectional Iterator

    - advance_c<N>(i) + advance_c<N>(i)

    - Bidirectional + Bidirectional Iterator

    - advance<M>(i) + advance<M>(i)

    - Bidirectional + Bidirectional Iterator

    -
    - - Meta +
    + + Meta Expressions -
    +
    @@ -206,7 +197,7 @@

    - result_of::prior<I>::type + result_of::prior<I>::type

    @@ -216,15 +207,14 @@
    -
    - - Expression +
    + + Expression Semantics -
    +

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

    @@ -247,63 +237,60 @@

    - prior(i) + prior(i)

    - An iterator to the element preceding i + An iterator to the element preceding i

    -
    - - Invariants -
    +
    + + Invariants +

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

    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index d26df336..77858e8c 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -1,23 +1,21 @@ -Forward - Iterator +Forward Iterator - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,47 +24,47 @@ +
    + + Description +

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

    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 +
    + + Expression requirements -
    +

    A type models Forward Iterator if, in addition to being CopyConstructable, the following expressions are valid: @@ -98,13 +96,12 @@

    - next(i) + next(i)

    - Forward + Forward Iterator

    @@ -117,8 +114,8 @@

    - i == - j + i == + j

    @@ -135,8 +132,8 @@

    - i != - j + i != + j

    @@ -153,13 +150,12 @@

    - advance_c<N>(i) + advance_c<N>(i)

    - Forward + Forward Iterator

    @@ -172,13 +168,12 @@

    - advance<M>(i) + advance<M>(i)

    - Forward + Forward Iterator

    @@ -191,14 +186,14 @@

    - distance(i, - j) + distance(i, + j)

    - result_of::distance<I, - J>::type + result_of::distance<I, + J>::type

    @@ -210,12 +205,12 @@

    - deref(i) + deref(i)

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

    @@ -227,12 +222,12 @@

    - *i + *i

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

    @@ -243,11 +238,11 @@ -
    - - Meta +
    + + Meta Expressions -
    +
    @@ -269,7 +264,7 @@

    - result_of::next<I>::type + result_of::next<I>::type

    @@ -281,8 +276,8 @@

    - result_of::equal_to<I, - J>::type + result_of::equal_to<I, + J>::type

    @@ -294,8 +289,8 @@

    - result_of::advance_c<I, - N>::type + result_of::advance_c<I, + N>::type

    @@ -307,7 +302,7 @@

    - result_of::advance<I ,M>::type + result_of::advance<I ,M>::type

    @@ -319,7 +314,7 @@

    - result_of::distance<I ,J>::type + result_of::distance<I ,J>::type

    @@ -331,7 +326,7 @@

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

    @@ -343,7 +338,7 @@

    - result_of::value_of<I>::type + result_of::value_of<I>::type

    @@ -354,11 +349,11 @@
    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -380,20 +375,20 @@ @@ -431,134 +426,134 @@

    - next(i) + next(i)

    - An iterator to the element following i + An iterator to the element following i

    - i == - j + i == + j

    @@ -405,8 +400,8 @@

    - i != - j + i != + j

    @@ -418,12 +413,12 @@

    - advance_c<N>(i) + advance_c<N>(i)

    - An iterator n elements after i + An iterator n elements after i in the sequence

    - 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 -
    +
    + + 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 -
    +
    + + Models +
    diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 10060527..4a7dbf79 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -1,23 +1,21 @@ -Random - Access Iterator +Random Access Iterator - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,60 +24,58 @@ +
    + + Description +

    - A Random Access Iterator traverses a Sequence + 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
    +
    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 +
    + + Refinement of -
    +

    - Bidirectional + Bidirectional Iterator

    -
    - - Expression +
    + + Expression requirements -
    +

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

    @@ -109,13 +105,12 @@ @@ -128,13 +123,12 @@ @@ -147,13 +141,12 @@ @@ -166,13 +159,12 @@ @@ -184,11 +176,11 @@

    - next(i) + next(i)

    - Random + Random Access Iterator

    - prior(i) + prior(i)

    - Random + Random Access Iterator

    - advance_c<N>(i) + advance_c<N>(i)

    - Random + Random Access Iterator

    - advance<M>(i) + advance<M>(i)

    - Random + Random Access Iterator

    -
    - - Meta +
    + + Meta Expressions -
    +
    @@ -210,8 +202,8 @@

    - result_of::advance_c<I, - N>::type + result_of::advance_c<I, + N>::type

    @@ -223,8 +215,8 @@

    - result_of::advance<I, - M>::type + result_of::advance<I, + M>::type

    @@ -236,7 +228,7 @@

    - result_of::distance<I ,J>::type + result_of::distance<I ,J>::type

    @@ -247,39 +239,36 @@
    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 71e3ab8f..08625595 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -3,20 +3,19 @@ Functions - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    deref
    next
    diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index ba2cf230..dc330461 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -3,7 +3,7 @@ advance - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,29 @@
    +
    + + Description +

    Moves an iterator by a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         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,13 +73,12 @@ @@ -91,7 +91,7 @@ -

    - i + i

    - Model of Forward + Model of Forward Iterator

    - N + N

    @@ -107,46 +107,45 @@
    +
    -
    - - Expression +
    + + 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 - is a Bidirectional - Iterator then M + Semantics: Returns an iterator to the + element M positions from + i. If i + is a Bidirectional + Iterator then M may be negative.

    -
    - - Header -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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);
     
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html index 39b87e3d..b97ce686 100644 --- a/doc/html/fusion/iterator/functions/advance_c.html +++ b/doc/html/fusion/iterator/functions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,29 @@ +
    + + Description +

    Moves an iterator by a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         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,13 +73,12 @@ @@ -91,7 +91,7 @@ -

    - i + i

    - Model of Forward + Model of Forward Iterator

    - N + N

    @@ -106,46 +106,45 @@
    +
    -
    - - Expression +
    + + 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 - is a Bidirectional - Iterator then N + Semantics: Returns an iterator to the + element N positions from + i. If i + is a Bidirectional + Iterator then N may be negative.

    -
    - - Header -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html index af8ff882..291c3501 100644 --- a/doc/html/fusion/iterator/functions/deref.html +++ b/doc/html/fusion/iterator/functions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +24,28 @@
    -
    - - Description -
    +deref +
    +
    + + Description +

    Deferences an iterator.

    -
    - - Synopsis -
    +
    + + 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,13 +71,12 @@ @@ -86,43 +86,43 @@

    -

    - i + i

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html index 65186c5c..b593d416 100644 --- a/doc/html/fusion/iterator/functions/distance.html +++ b/doc/html/fusion/iterator/functions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,29 @@ +
    + + Description +

    Returns the distance between 2 iterators.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         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,13 +72,12 @@ @@ -87,40 +87,40 @@

    -

    - i, j + i, j

    - Models of Forward + Models of Forward Iterator into the same sequence

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html index dc248b3d..7bd29b2d 100644 --- a/doc/html/fusion/iterator/functions/next.html +++ b/doc/html/fusion/iterator/functions/next.html @@ -3,7 +3,7 @@ next - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +24,28 @@
    -
    - - Description -
    +next +
    +
    + + Description +

    Moves an iterator 1 position forwards.

    -
    - - Synopsis -
    +
    + + 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,13 +71,12 @@ @@ -86,43 +86,43 @@

    -

    - i + i

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + Expression Semantics -
    +
     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 -
    +
    + + Header +
     #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html index 707453ea..b247d235 100644 --- a/doc/html/fusion/iterator/functions/prior.html +++ b/doc/html/fusion/iterator/functions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +24,28 @@
    -
    - - Description -
    +prior +
    +
    + + Description +

    Moves an iterator 1 position backwards.

    -
    - - Synopsis -
    +
    + + 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,13 +71,12 @@ @@ -86,42 +86,42 @@

    -

    - i + i

    - Model of Bidirectional + Model of Bidirectional Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html index edae7021..ee5bbc49 100644 --- a/doc/html/fusion/iterator/metafunctions.html +++ b/doc/html/fusion/iterator/metafunctions.html @@ -3,20 +3,19 @@ Metafunctions - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    value_of
    deref
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index 45827c81..91723b52 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -3,7 +3,7 @@ advance - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@
    +
    + + Description +

    Moves an iterator a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -47,8 +48,8 @@
     };
     
    -

    Table 1.17. Parameters

    - +

    Table 1.17. Parameters

    +
    @@ -75,13 +76,12 @@ @@ -94,7 +94,7 @@ -

    - I + I

    - Model of Forward + Model of Forward Iterator

    - M + M

    @@ -110,47 +110,46 @@
    +
    -
    - - Expression +
    + + 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 Bidirectional - Iterator then M + Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional + Iterator then M may be negative.

    -
    - - Header -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html index 8132124c..728501a0 100644 --- a/doc/html/fusion/iterator/metafunctions/advance_c.html +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@ +
    + + Description +

    Moves an iterator by a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -47,8 +48,8 @@
     };
     
    -

    Table 1.18. Parameters

    - +

    Table 1.18. Parameters

    +
    @@ -75,13 +76,12 @@ @@ -94,7 +94,7 @@ -

    - I + I

    - Model of Forward + Model of Forward Iterator

    - N + N

    @@ -109,47 +109,46 @@
    +
    -
    - - Expression +
    + + 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 Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html index 594ad5e3..8ed1820e 100644 --- a/doc/html/fusion/iterator/metafunctions/deref.html +++ b/doc/html/fusion/iterator/metafunctions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@
    -
    - - Description -
    +deref +
    +
    + + Description +

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

    -
    - - Synposis -
    +
    + + Synposis +
     template<
         typename I
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.12. Parameters

    - +

    Table 1.12. Parameters

    +
    @@ -73,13 +74,12 @@ @@ -89,46 +89,46 @@

    -

    - I + I

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html index 4c2abeca..e337b227 100644 --- a/doc/html/fusion/iterator/metafunctions/distance.html +++ b/doc/html/fusion/iterator/metafunctions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@ +
    + + Description +

    Returns the distance between two iterators.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -47,8 +48,8 @@
     };
     
    -

    Table 1.16. Parameters

    - +

    Table 1.16. Parameters

    +
    @@ -74,13 +75,12 @@ @@ -90,43 +90,43 @@

    -

    - I, J + I, J

    - Models of Forward + Models of Forward Iterator into the same sequence

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html index 6c5ae850..5fba76e1 100644 --- a/doc/html/fusion/iterator/metafunctions/equal_to.html +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html @@ -3,7 +3,7 @@ equal_to - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,21 @@ +
    + + Description +

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

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -49,8 +50,8 @@
     };
     
    -

    Table 1.15. Parameters

    - +

    Table 1.15. Parameters

    +
    @@ -76,7 +77,7 @@ -

    - I, J + I, J

    @@ -90,43 +91,43 @@

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html index 20f63e19..46847fab 100644 --- a/doc/html/fusion/iterator/metafunctions/next.html +++ b/doc/html/fusion/iterator/metafunctions/next.html @@ -3,7 +3,7 @@ next - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@
    -
    - - Description -
    +next +
    +
    + + Description +

    Returns the type of the next iterator in a sequence.

    -
    - - Synposis -
    +
    + + Synposis +
     template<
         typename I
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.13. Parameters

    - +

    Table 1.13. Parameters

    +
    @@ -73,13 +74,12 @@ @@ -89,41 +89,41 @@

    -

    - I + I

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html index e76eacb4..03c03660 100644 --- a/doc/html/fusion/iterator/metafunctions/prior.html +++ b/doc/html/fusion/iterator/metafunctions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@
    -
    - - Description -
    +prior +
    +
    + + Description +

    Returns the type of the previous iterator in a sequence.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.14. Parameters

    - +

    Table 1.14. Parameters

    +
    @@ -73,13 +74,12 @@ @@ -89,44 +89,44 @@

    -

    - I + I

    - Model of Bidirectional + Model of Bidirectional Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html index 91d72481..eb18a0a1 100644 --- a/doc/html/fusion/iterator/metafunctions/value_of.html +++ b/doc/html/fusion/iterator/metafunctions/value_of.html @@ -3,7 +3,7 @@ value_of - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@ +
    + + Description +

    Returns the type stored at the position of an iterator.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.11. Parameters

    - +

    Table 1.11. Parameters

    +
    @@ -73,13 +74,12 @@ @@ -89,44 +89,44 @@

    -

    - I + I

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/operator.html b/doc/html/fusion/iterator/operator.html index f2a8c05a..79289534 100644 --- a/doc/html/fusion/iterator/operator.html +++ b/doc/html/fusion/iterator/operator.html @@ -3,20 +3,19 @@ Operator - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    Operator *
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index 8e1c7e0f..583c8eaf 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -1,24 +1,21 @@ - Operator - == +Operator == - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,20 +24,20 @@
    +
    + + Description +

    Compares 2 iterators for equality.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -49,8 +46,8 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    - +

    Table 1.9. Parameters

    +
    @@ -76,7 +73,7 @@ -

    - i, j + i, j

    @@ -90,28 +87,28 @@

    +
    -
    - - Expression +
    + + Expression Semantics -
    +
     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 -
    +
    + + Header +
     #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index 848af738..2900a1a0 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -1,23 +1,21 @@
     
     
     
    - Operator
    -        !=
    +Operator !=
     
    -
    +
     
     
    -
    +
     
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,20 +24,20 @@ +
    + + Description +

    Compares 2 iterators for inequality.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -48,8 +46,8 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    - +

    Table 1.10. Parameters

    +
    @@ -75,7 +73,7 @@ -

    - i, j + i, j

    @@ -89,25 +87,25 @@

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 8aee90c3..59bce2f8 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -1,23 +1,21 @@
     
     
     
    - Operator
    -        *
    +Operator *
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,29 +24,29 @@ +
    + + Description +

    Dereferences an iterator.

    -
    - - Synopsis -
    +
    + + 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,13 +72,12 @@ @@ -90,43 +87,43 @@

    -

    - i + i

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + Expression Semantics -
    +
     *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 -
    +
    + + Header +
     #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    -
    - - Example -
    +
    + + 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 6633e462..a4a9e95a 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -3,20 +3,19 @@ Notes - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,35 +24,35 @@ +

    + + Recursive Inlined Functions -

    +

    - An interesting peculiarity of functions like at when applied to a Forward - Sequence like list + 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 -

    +

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

    +

    + + Tag Dispatching +

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

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

    @@ -88,24 +87,24 @@
         

    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 -

    +

    + + Extensibility +

    Unlike MPL, there is no extensibe sequence concept in fusion. This does not mean that Fusion @@ -113,69 +112,69 @@ 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. + 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 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 + 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 + 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 -

    +

    + + 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 @@ -184,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 -

    +

    + + 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: @@ -225,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 @@ -237,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).

    diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index f8b81d23..04e38384 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,7 +3,7 @@ Organization - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@

    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 @@ -33,10 +34,10 @@

    The library is organized in three layers:

    -

    - - Layers -

    +

    + + Layers +

    @@ -47,15 +48,15 @@

    - The entire library is found in the "boost/fusion" + 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" + there exists "boost/fusion/support.hpp" in the same directory as "boost/fusion/support". Everything, except those found inside "detail" directories, is public.

    - There is also a "boost/fusion/include/" + There is also a "boost/fusion/include/" directory that contains all the headers to all the components and modules. If you are unsure where to find a specific component or module, or don't want to fuss with hierarchy and nesting, use this. @@ -64,10 +65,10 @@ The library is header-only. There is no need to build object files to link against.

    -

    - - Directory -

    +

    + + Directory +

    • tuple @@ -185,12 +186,12 @@ support
    -

    - - Example -

    +

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

    @@ -201,13 +202,13 @@ #include <boost/fusion/include/list.hpp>

    - The first includes all containers The second includes only list - [3] + The first includes all containers The second 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 dd0d2c31..cad6bad0 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,7 +3,7 @@ Preface - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@

    @@ -38,15 +39,15 @@

    - --Niklaus Wirth + --Niklaus Wirth

    -

    - - Description -

    +

    + + Description +

    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, @@ -61,10 +62,10 @@ It is named "fusion" because the library is a "fusion" of compile time metaprogramming with runtime programming.

    -

    - - Motivation -

    +

    + + Motivation +

    Tuples are powerful beasts. After having developed two significant projects (Spirit and Phoenix) @@ -87,17 +88,17 @@ had an adhoc collection of tuple manipulation and traversal routines. It was an instant AHA! moment.

    -

    - - How to use this manual -

    +

    + + 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 1.1. Icons

    - +

    Table 1.1. Icons

    +
    @@ -191,17 +192,17 @@ -
    +
    -

    +

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

    -

    - - Support -

    +

    + + Support +

    Please direct all questions to Spirit's mailing list. You can subscribe to the Spirit diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 5ddda68f..cf4c6e69 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,7 +3,7 @@ Quick Start - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,16 +24,17 @@

    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] + For starters, we shall include all of Fusion's Sequence(s) + [1] :

    @@ -41,29 +42,29 @@
     #include <boost/fusion/include/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 +

    + + Print the vector as XML -

    +

    First, let's include the algorithms:

    @@ -93,38 +94,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 - print just about any Fusion Sequence. + for_each is generic. With + print_xml, you can use it to + print just about any Fusion Sequence.

    -

    - - Print only pointers -

    +

    + + 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:

    @@ -137,37 +138,37 @@
     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 -

    +

    + + Associative tuples +

    Ok, moving on...

    - Apart from vector, + 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 + its own characteristics. We have list, set, map, plus a multitude of views that provide various ways to present the sequences.

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

     namespace fields
    @@ -176,32 +177,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:

    @@ -217,19 +218,19 @@
     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 -

    +

    + + 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, @@ -238,14 +239,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 + 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 783cd2f8..0ec48142 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,7 +3,7 @@ References - + @@ -11,10 +11,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -23,7 +23,8 @@
    Concepts
    @@ -51,17 +52,17 @@

    Like MPL, the Sequence is a fundamental concept in Fusion. A Sequence may or may not actually - store or contain data. Container are - sequences that hold data. Views, on the + store or contain data. Container 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 + Sequence have an associated Iterator type that can be used to iterate through the Sequence's elements.

    -

    - - Header -

    +

    + + Header +

     #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index b0e6586e..8351e7a5 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -3,20 +3,19 @@
     
     Concepts
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,7 +24,8 @@
    Forward Sequence
    @@ -39,31 +39,25 @@

    Fusion Sequences are organized into a hierarchy of concepts.

    -

    - - Traversal -

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

    +
    + + Associativity +

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

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 52601047..772523bd 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -1,23 +1,21 @@ -Associative - Sequence +Associative Sequence - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,13 +24,13 @@
    +
    + + Description +

    An Associative Sequence allows efficient retrieval of elements based on keys. Like associative sequences in MPL, @@ -48,33 +46,33 @@

    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 +
    + + Valid Expressions -
    +

    For any Associative Sequence the following expressions must be valid:

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

    - has_key<K>(s) + has_key<K>(s)

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

    - at_key<K>(s) + at_key<K>(s)

    @@ -154,8 +152,8 @@

    - at_key<K>(s) - = o + at_key<K>(s) + = o

    @@ -165,9 +163,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.

    @@ -179,11 +177,11 @@ -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -205,8 +203,8 @@

    - result_of::has_key<S, - K>::type + result_of::has_key<S, + K>::type

    @@ -218,8 +216,8 @@

    - result_of::at_key<S, - K>::type + result_of::at_key<S, + K>::type

    @@ -231,8 +229,8 @@

    - result_of::value_at_key<S, - K>::type + result_of::value_at_key<S, + K>::type

    @@ -243,19 +241,22 @@
    - +
    + + Expression Semantics -
    +
    @@ -277,42 +278,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 -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 29873750..f6b6a22b 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -1,24 +1,21 @@ -Bidirectional - Sequence +Bidirectional Sequence - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,58 +24,54 @@ +
    + + Description +

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

    -
    - - Refinement +
    + + Refinement of -
    +

    - Forward Sequence + Forward Sequence

    Notation

    -
    s
    +
    s

    A Forward Sequence

    -
    S
    +
    S

    A Forward Sequence type

    -
    o
    +
    o

    An arbitrary object

    -
    e
    +
    e

    A Sequence element

    -
    - - Valid +
    + + Valid Expressions -
    +

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

    @@ -114,13 +107,12 @@ @@ -137,13 +129,12 @@ @@ -160,7 +151,7 @@ @@ -206,11 +197,11 @@

    - begin(s) + begin(s)

    - Bidirectional + Bidirectional Iterator

    - end(s) + end(s)

    - Bidirectional + Bidirectional Iterator

    - back(s) + back(s)

    @@ -181,8 +172,8 @@

    - back(s) - = o + back(s) + = o

    @@ -192,9 +183,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.

    -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -232,7 +223,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -244,7 +235,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -256,7 +247,7 @@

    - result_of::back<S>::type + result_of::back<S>::type

    @@ -267,15 +258,14 @@
    -
    - - Expression +
    + + Expression Semantics -
    +

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

    @@ -298,35 +288,35 @@

    - back(s) + back(s)

    - The last element in the sequence; see back. + The last element in the sequence; see back.

    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 72234679..7c5ed91b 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -1,23 +1,21 @@ -Forward - Sequence +Forward Sequence - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,13 +24,13 @@ +
    + + 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. @@ -43,29 +41,29 @@

    Notation

    -
    s
    +
    s

    A Forward Sequence

    -
    S
    +
    S

    A Forward Sequence type

    -
    o
    +
    o

    An arbitrary object

    -
    e
    +
    e

    A Sequence element

    -
    - - Valid +
    + + Valid Expressions -
    +

    For any Forward Sequence the following expressions must be valid:

    @@ -102,13 +100,12 @@

    - begin(s) + begin(s)

    - Forward + Forward Iterator

    @@ -125,13 +122,12 @@

    - end(s) + end(s)

    - Forward + Forward Iterator

    @@ -148,7 +144,7 @@

    - size(s) + size(s)

    @@ -170,7 +166,7 @@

    - empty(s) + empty(s)

    @@ -192,7 +188,7 @@

    - front(s) + front(s)

    @@ -213,8 +209,8 @@

    - front(s) - = o + front(s) + = o

    @@ -224,9 +220,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.

    @@ -238,11 +234,11 @@ -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -264,7 +260,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -276,7 +272,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -288,7 +284,7 @@

    - result_of::size<S>::type + result_of::size<S>::type

    @@ -300,7 +296,7 @@

    - result_of::empty<S>::type + result_of::empty<S>::type

    @@ -312,7 +308,7 @@

    - result_of::front<S>::type + result_of::front<S>::type

    @@ -323,11 +319,11 @@
    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -349,113 +345,113 @@

    - 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 -
    +
    + + Invariants +

    For any Forward Sequence s the following invariants always hold:

    • -[begin(s), end(s)) is always a valid range. +[begin(s), end(s)) is always a valid range.
    • - An Algorithm that iterates through - the range [begin(s), end(s)) will pass through every element of - s exactly once. + An Algorithm that iterates through + the range [begin(s), end(s)) will pass through every element of + s exactly once.
    • -begin(s) - is identical to end(s)) - if and only if s is empty. +begin(s) + is identical to end(s)) + if and only if s is empty.
    • - Two different iterations through s + Two different iterations through s will access its elements in the same order.
    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 3ac377a8..5f5ae7b9 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -1,24 +1,21 @@ -Random - Access Sequence +Random Access Sequence - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,65 +24,61 @@ +
    + + Description +

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

    -
    - - Refinement +
    + + Refinement of -
    +

    - Bidirectional + Bidirectional Sequence

    Notation

    -
    s
    +
    s

    A Random Access Sequence

    -
    S
    +
    S

    A Random Access Sequence type

    -
    N
    +
    N

    An MPL Integral Constant

    -
    o
    +
    o

    An arbitrary object

    -
    e
    +
    e

    A Sequence element

    -
    - - Valid +
    + + Valid Expressions -
    +

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

    @@ -121,13 +114,12 @@ @@ -144,13 +136,12 @@ @@ -167,7 +158,7 @@ @@ -213,11 +204,11 @@

    - begin(s) + begin(s)

    - Random + Random Access Iterator

    - end(s) + end(s)

    - Random + Random Access Iterator

    - at<N>(s) + at<N>(s)

    @@ -188,8 +179,8 @@

    - at<N>(s) - = o + at<N>(s) + = o

    @@ -199,9 +190,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.

    -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -239,7 +230,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -251,7 +242,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -263,8 +254,8 @@

    - result_of::at<S, - N>::type + result_of::at<S, + N>::type

    @@ -276,8 +267,8 @@

    - result_of::value_at<S, - N>::type + result_of::value_at<S, + N>::type

    @@ -288,23 +279,25 @@
    - +
    + + Expression Semantics -
    +

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

    @@ -327,35 +320,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 -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index c52186f1..7582a4ae 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -3,20 +3,19 @@ Intrinsic - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,32 +24,33 @@

    - Intrinsic form the essential interface of every Fusion Sequence. + Intrinsic 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 - [4] + Intrinsic functions, unlike Algorithms, + are not generic across the full Sequence + repertoire. They need to be implemented for each Fusion Sequence + [4] .

    -

    - - Header -

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


    -

    [4] +

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

    diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index 850a95b6..95be11a2 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -3,7 +3,7 @@ Functions - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    begin
    end
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 0da653e0..00fd97c1 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -3,7 +3,7 @@ at - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,31 @@
    -at
    +at +
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@

    - seq + seq

    - Model of Random + Model of Random Access Sequence

    - N + N

    @@ -113,47 +113,47 @@
    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html index 2a3fa109..82b82f62 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,31 @@
    +at_c +
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@

    - seq + seq

    - Model of Random + Model of Random Access Sequence

    - N + N

    @@ -112,48 +112,48 @@
    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/at_c.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html index 7bb0c710..0d8c6543 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,31 @@
    - - Description + + Description

    Returns the element associated with a Key from the sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@

    - seq + seq

    - Model of Associative + Model of Associative Sequence

    - Key + Key

    @@ -112,43 +112,43 @@
    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html index 6628b362..dc88a8e5 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/back.html +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html @@ -3,7 +3,7 @@ back - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,31 @@
    +back +
    - - Description + + Description

    Returns the last element in the sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -75,13 +76,12 @@ @@ -93,43 +93,43 @@

    - seq + seq

    - Model of Bidirectional + Model of Bidirectional Sequence

    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html index 65f3d483..d5e56321 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,31 @@
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -75,13 +76,12 @@ @@ -93,50 +93,44 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + 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 + 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 + Semantics: Returns an iterator pointing to the first element in the sequence.

    - - Header + + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html index 6123710a..0cb5935a 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,29 @@
    - - Description + + 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 + + Synopsis
     template <typename Sequence>
    -typename result_of::empty<Sequence>::type
    +typename result_of::empty<Sequence>::type
     empty(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -73,13 +74,12 @@ @@ -91,34 +91,34 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html index 7b203fdf..de42b363 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/end.html +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html @@ -3,7 +3,7 @@ end - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,31 @@
    -end
    +end +
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -75,13 +76,12 @@ @@ -93,50 +93,44 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + 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 + 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 + Semantics: Returns an iterator pointing to one element past the end of the sequence.

    - - Header + + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html index a65fecac..944e5098 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/front.html +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html @@ -3,7 +3,7 @@ front - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,31 @@
    - - Description + + Description

    Returns the first element in the sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -75,13 +76,12 @@ @@ -93,43 +93,43 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html index 28343c9f..17f0e6eb 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +24,30 @@
    - - Description + + 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 + + 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 + + Parameters
    @@ -75,13 +76,12 @@ @@ -94,7 +94,7 @@

    - seq + seq

    - Model of Associative + Model of Associative Sequence

    - Key + Key

    @@ -111,34 +111,34 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html index 5e14fe96..d635353f 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/size.html +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html @@ -3,7 +3,7 @@ size - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +24,28 @@
    +size +
    - - Description + + Description

    - Returns a type convertible to int + Returns a type convertible to int that evaluates the number of elements in the sequence.

    - - Synopsis + + Synopsis
     template <typename Sequence>
    -typename result_of::size<Sequence>::type
    +typename result_of::size<Sequence>::type
     size(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -72,13 +73,12 @@ @@ -90,34 +90,34 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html index fdc17831..4ddc594b 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html @@ -3,7 +3,7 @@ swap - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,25 +24,26 @@
    +swap +
    - - Description + + Description

    Performs an element by element swap of the elements in 2 sequences.

    - - Synopsis + + Synopsis
     template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - - Parameters + + Parameters
    @@ -70,13 +71,12 @@ @@ -88,34 +88,34 @@

    - seq1, seq2 + seq1, seq2

    - Models of Forward + Models of Forward Sequence

    - - Expression + + Expression Semantics
     swap(seq1, seq2);
     

    - Return type: void + Return type: void

    - Precondition: size(seq1) == size(seq2) + Precondition: size(seq1) == size(seq2)

    - Semantics: Calls swap(a1, b1) for corresponding elements in seq1 and seq2. + Semantics: Calls swap(a1, b1) for corresponding elements in seq1 and seq2.

    /sequence/intrinsic/swap.hpp>

    - - Example + + Example
    -vector<int, std::string> v1(1, "hello"), v2(2, "world");
    +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"));
    +assert(v1 == make_vector(2, "world"));
    +assert(v2 == make_vector(1, "hello"));
     
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html index 39bfd37b..201a5af3 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    begin
    end
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index f64d3635..950b6715 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -3,7 +3,7 @@ at - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,20 @@
    -at
    +at +
    - - Description + + Description

    - Returns the result type of at - [5] + Returns the result type of at + [5] .

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +49,8 @@
     };
     
    -

    Table 1.25. Parameters

    - +

    Table 1.25. Parameters

    +
    @@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - N + N

    @@ -111,41 +111,41 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/at.hpp>

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


    -

    [5] - 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 +

    [5] + result_of::at reflects the actual return + type of the function at. Sequence(s) + typically return references to its elements via the at function. If you want + to get the actual element type, use result_of::value_at

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 9a1467cf..5c542c52 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,20 @@
    +at_c +
    - - Description + + Description

    - Returns the result type of at_c - [6] + Returns the result type of at_c + [6] .

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +49,8 @@
     };
     
    -

    Table 1.26. Parameters

    - +

    Table 1.26. Parameters

    +
    @@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - M + M

    @@ -110,41 +110,41 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/at.hpp>

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


    -

    [6] - 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 +

    [6] + result_of::at_c reflects the actual + return type of the function at_c. Sequence(s) + typically return references to its elements via the at_c function. If you want + to get the actual element type, use result_of::value_at_c

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 616c7e69..7a9363f4 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,20 @@
    - - Description + + Description

    - Returns the result type of at_key - [7] + Returns the result type of at_key + [7] .

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +49,8 @@
     };
     
    -

    Table 1.30. Parameters

    - +

    Table 1.30. Parameters

    +
    @@ -76,13 +77,12 @@ @@ -95,7 +95,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - Key + Key

    @@ -110,43 +110,43 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/at_key.hpp>

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


    -

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

    [7] + result_of::at_key reflects the actual + return type of the function at_key. _sequence_s + typically return references to its elements via the at_key function. If you + want to get the actual element type, use result_of::value_at_key

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 0c036000..765ab178 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -3,7 +3,7 @@ back - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    +back +
    - - Description + + Description

    - Returns the result type of back. + Returns the result type of back.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -44,8 +45,8 @@
     };
     
    -

    Table 1.23. Parameters

    - +

    Table 1.23. Parameters

    +
    @@ -71,13 +72,12 @@ @@ -87,33 +87,33 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/back.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html index 01959372..55e04aec 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    - - Description + + Description

    - Returns the result type of begin. + Returns the result type of begin.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -44,8 +45,8 @@
     };
     
    -

    Table 1.19. Parameters

    - +

    Table 1.19. Parameters

    +
    @@ -71,13 +72,12 @@ @@ -87,35 +87,35 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/begin.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html index 46b6ecd6..362f1504 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    - - Description + + Description

    - Returns the result type of empty. + Returns the result type of empty.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -44,8 +45,8 @@
     };
     
    -

    Table 1.21. Parameters

    - +

    Table 1.21. Parameters

    +
    @@ -71,13 +72,12 @@ @@ -87,38 +87,38 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/empty.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html index 9996629f..08add2ba 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html @@ -3,7 +3,7 @@ end - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    -end
    +end +
    - - Description + + Description

    - Returns the result type of end. + Returns the result type of end.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -44,8 +45,8 @@
     };
     
    -

    Table 1.20. Parameters

    - +

    Table 1.20. Parameters

    +
    @@ -71,13 +72,12 @@ @@ -87,35 +87,35 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/end.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html index e7ac5200..77ef826d 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html @@ -3,7 +3,7 @@ front - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    - - Description + + Description

    - Returns the result type of front. + Returns the result type of front.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -44,8 +45,8 @@
     };
     
    -

    Table 1.22. Parameters

    - +

    Table 1.22. Parameters

    +
    @@ -71,13 +72,12 @@ @@ -87,34 +87,34 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/front.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html index ec2f92cc..ff2230fb 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    - - Description + + Description

    - Returns the result type of has_key. + Returns the result type of has_key.

    - - Synopsis + + Synopsis
     template<
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.29. Parameters

    - +

    Table 1.29. Parameters

    +
    @@ -74,13 +75,12 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - Key + Key

    @@ -108,37 +108,37 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/has_key.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html index d1406503..83d28869 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html @@ -3,7 +3,7 @@ size - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    +size +
    - - Description + + Description

    - Returns the result type of size. + Returns the result type of size.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -44,8 +45,8 @@
     };
     
    -

    Table 1.24. Parameters

    - +

    Table 1.24. Parameters

    +
    @@ -71,13 +72,12 @@ @@ -87,34 +87,34 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/size.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html index 0311007f..8f00c0f2 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html @@ -3,7 +3,7 @@ swap - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    +swap +
    - - Description + + Description

    Returns the return type of swap.

    - - Synopsis + + Synopsis
     template<typename Seq1, typename Seq2>
    @@ -44,8 +45,8 @@
     };
     
    -

    Table 1.32. Parameters

    - +

    Table 1.32. Parameters

    +
    @@ -71,13 +72,12 @@ @@ -87,21 +87,21 @@

    -

    - Seq1, Seq2 + Seq1, Seq2

    - Models of Forward + Models of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     result_of::swap<Seq1, Seq2>::type
     

    - Return type: void. + Return type: void.

    - Semantics: Always returns void. + Semantics: Always returns void.

    /sequence/intrinsic/swap.hpp> diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index 2c526a2e..bc06c629 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html @@ -3,7 +3,7 @@ value_at - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,17 +24,18 @@
    - - Description + + Description

    - Returns the actual type at a given index from the Sequence. + Returns the actual type at a given index from the Sequence.

    - - Synopsis + + Synopsis
     template<
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.27. Parameters

    - +

    Table 1.27. Parameters

    +
    @@ -74,13 +75,12 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - N + N

    @@ -109,33 +109,33 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/value_at.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html index ce8f269d..65e73bc8 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html @@ -3,7 +3,7 @@ value_at_c - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    - - Description + + Description

    - Returns the actual type at a given index from the Sequence. + Returns the actual type at a given index from the Sequence.

    - - Synopsis + + Synopsis
     template<
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.28. Parameters

    - +

    Table 1.28. Parameters

    +
    @@ -74,13 +75,12 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - M + M

    @@ -108,33 +108,33 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/value_at.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html index 1e59c484..ee0e93fa 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html @@ -3,7 +3,7 @@ value_at_key - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,17 +24,18 @@
    - - Description + + Description

    - Returns the actual element type associated with a Key from the Sequence. + Returns the actual element type associated with a Key from the Sequence.

    - - Synopsis + + Synopsis
     template<
    @@ -46,8 +47,8 @@
     };
     
    -

    Table 1.31. Parameters

    - +

    Table 1.31. Parameters

    +
    @@ -74,13 +75,12 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - Key + Key

    @@ -108,34 +108,34 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/value_at_key.hpp>

    - - Example + + 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/sequence/operator.html b/doc/html/fusion/sequence/operator.html index 1b52d062..fbda4009 100644 --- a/doc/html/fusion/sequence/operator.html +++ b/doc/html/fusion/sequence/operator.html @@ -3,7 +3,7 @@ Operator - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,13 +24,14 @@

    - These operators, like the Algorithms, + These operators, like the Algorithms, work generically on all Fusion sequences. All conforming Fusion sequences automatically get these operators for free.

    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index d672ae90..6067c78b 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -3,7 +3,7 @@ Comparison - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@

    - 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 -
    +
    + + Header +
     #include <boost/fusion/sequence/comparison.hpp>
     #include <boost/fusion/include/comparison.hpp>
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index ac58ba16..9ba43046 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -3,20 +3,19 @@
     
     equal
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,17 +24,18 @@
    - - Description + + Description

    Compare two sequences for equality.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -43,8 +43,8 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -72,41 +72,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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,31 +114,31 @@ 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 + + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - - Example + + 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/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html index 2220a666..59e60624 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html @@ -1,24 +1,21 @@ -greater - than +greater than - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,15 +24,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -43,8 +40,8 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -72,41 +69,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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,24 +111,24 @@ compile time error.

    - Semantics: Returns b < a. + Semantics: Returns b < a.

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html index 821bbe24..e0e224ee 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html @@ -1,23 +1,21 @@ -greater - than equal +greater than equal - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,15 +24,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -42,8 +40,8 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -71,41 +69,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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,24 +111,24 @@ compile time error.

    - Semantics: Returns !(a < b). + Semantics: Returns !(a < b).

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html index be1cc13c..ad89b6f8 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html @@ -1,24 +1,21 @@ -less - than +less than - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,15 +24,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -43,8 +40,8 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -72,41 +69,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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,26 +111,26 @@ compile time error.

    - Semantics: Returns the lexicographical - comparison of between a - and b. + Semantics: Returns the lexicographical + comparison of between a + and b.

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - - Example + + 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/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html index fbd644ff..f7854d63 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html @@ -1,24 +1,21 @@ -less - than equal +less than equal - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,15 +24,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -43,8 +40,8 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -72,41 +69,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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,24 +111,24 @@ compile time error.

    - Semantics: Returns !(b < a). + Semantics: Returns !(b < a).

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html index df6ff637..670b29fa 100644 --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html @@ -1,23 +1,21 @@ -not - equal +not equal - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,15 +24,15 @@

    Compare two sequences for inequality.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -42,8 +40,8 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -71,41 +69,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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,26 +111,26 @@ compile time error.

    - Semantics: + Semantics:

    Returns !(a == b).

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - - Example + + 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/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 7a89ecfb..675f840f 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -3,7 +3,7 @@
     
     I/O
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,32 @@

    -I/O

    +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 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<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 + outputs the vector as: (1.0 2 Howdy folks!)

    @@ -57,23 +58,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.

    @@ -83,12 +84,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:

    @@ -98,27 +99,27 @@
               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(':');
     std::cin >> j;
     

    - reads the data into the vector(s) i - and 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 + 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 -
    +
    + + Header +
     #include <boost/fusion/sequence/io.hpp>
     #include <boost/fusion/include/io.hpp>
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index cf361fb6..93285545 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -3,7 +3,7 @@
     
     in
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@
    -in
    +in +
    - - Description + + Description

    - Read a Sequence from an input + Read a Sequence from an input stream.

    - - Synopsis + + Synopsis
     template <typename IStream, typename Sequence>
    @@ -43,8 +44,8 @@
     operator>>(IStream& is, Sequence& seq);
     
    - - Parameters + + Parameters
    @@ -95,7 +96,7 @@

    - A Sequence. + A Sequence.

    @@ -107,35 +108,35 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - - Example + + Example
    -vector<int, std::string, char> v;
    +vector<int, std::string, char> v;
     std::cin >> v;
     
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html index dc94b7e4..bd543744 100644 --- a/doc/html/fusion/sequence/operator/i_o/out.html +++ b/doc/html/fusion/sequence/operator/i_o/out.html @@ -3,7 +3,7 @@ out - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,19 @@
    -out
    +out +
    - - Description + + Description

    - Write a Sequence to an output + Write a Sequence to an output stream.

    - - Synopsis + + Synopsis
     template <typename OStream, typename Sequence>
    @@ -43,8 +44,8 @@
     operator<<(OStream& os, Sequence& seq);
     
    - - Parameters + + Parameters
    @@ -95,7 +96,7 @@

    - A Sequence. + A Sequence.

    @@ -107,35 +108,35 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - - Example + + 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/support.html b/doc/html/fusion/support.html index 949ca5d8..83bf6cf2 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,7 +3,7 @@ Support - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    is_sequence
    is_view
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 4aa7854c..b138e819 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,7 +3,7 @@ category_of - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,21 +24,22 @@
    +
    + + Description +

    A metafunction that establishes the conceptual classification of a particular - Sequence or Iterator - (see Iterator Concepts and - Sequence Concepts). + Sequence or Iterator + (see Iterator Concepts and + Sequence Concepts).

    -

    - - Synopsis -

    +
    + + Synopsis +
     namespace traits
     {
    @@ -49,10 +50,10 @@
         };
     }
     
    -

    - - Parameters -

    +
    + + Parameters +
    @@ -79,7 +80,7 @@

    - T + T

    @@ -94,16 +95,16 @@
    -

    - - Expression +

    + + Expression Semantics -
    +
     typedef traits::category_of<T>::type category;
     

    - Return type: + Return type:

    For Iterators, the return type is derived from one of: @@ -157,25 +158,25 @@ }}

    - Semantics: Establishes the conceptual classification - of a particular Sequence or Iterator. + Semantics: Establishes the conceptual classification + of a particular Sequence or Iterator.

    -

    - - Header -

    +
    + + Header +
     #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    -

    - - Example -

    +
    + + 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 e38e4188..91cb0563 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -3,7 +3,7 @@ deduce - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,32 +24,33 @@ +
    + + Description +

    - Metafunction to apply element + 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). + 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 -

    +
    + + Header +
     #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     namespace traits
     {
    @@ -60,10 +61,10 @@
         };
     }
     
    -

    - - Example -

    +
    + + Example +
     template <typename T>
     struct holder
    @@ -81,11 +82,11 @@
         return holder<T>(a);
     }
     
    -

    - - See also -

    - +
    + + See also +
    + diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 19498df8..0c81669f 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,7 +3,7 @@ deduce_sequence - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,32 +24,31 @@ +
    + + Description +

    - Applies element - conversion to each element in a Forward - Sequence. The resulting type is a Random + 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 -

    +
    + + Header +
     #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     namespace traits
     {
    @@ -60,10 +59,10 @@
         };
     }
     
    -

    - - Example -

    +
    + + Example +
     template <class Seq>
     struct holder
    @@ -76,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 -

    - +
    + + See also +
    + diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index ff60883a..a33ff987 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,7 +3,7 @@ is_sequence - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,23 @@ +
    + + 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 -

    +
    + + Synopsis +
     namespace traits
     {
    @@ -50,10 +51,10 @@
         };
     }
     
    -

    - - Parameters -

    +
    + + Parameters +
    @@ -80,7 +81,7 @@

    - T + T

    @@ -95,43 +96,43 @@
    -

    - - Expression +

    + + Expression Semantics -
    +
     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 -

    +
    + + Header +
     #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    -

    - - Example -

    +
    + + 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 b9183d07..f3c94ec3 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -3,7 +3,7 @@ is_view - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,25 +24,26 @@ +
    + + 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 -

    +
    + + Synopsis +
     namespace traits
     {
    @@ -53,10 +54,10 @@
         };
     }
     
    -

    - - Parameters -

    +
    + + Parameters +
    @@ -83,7 +84,7 @@

    - T + T

    @@ -98,43 +99,43 @@
    -

    - - Expression Semantics -

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

    +
    + + Header +
     #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    -

    - - Example -

    +
    + + 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;
    +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 9ebf447f..a7ea2689 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -3,7 +3,7 @@ pair - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,23 @@
    -

    - - Description -

    +pair +
    +
    + + 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 -

    +
    + + Synopsis +
     template <typename First, typename Second>
     struct pair;
    @@ -60,10 +61,10 @@
     typename result_of::make_pair<First,Second>::type
     make_pair(Second const &);
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -111,38 +112,38 @@

    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 -

    +
    + + Expression Semantics +
    @@ -166,13 +167,13 @@ @@ -180,13 +181,13 @@ @@ -194,7 +195,7 @@ @@ -220,12 +221,12 @@ @@ -233,36 +234,36 @@ @@ -274,18 +275,18 @@

    - 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()

    @@ -207,12 +208,12 @@

    - 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.second + p.second

    - Get the data from p1.]] [[p - = p2] [Assigns a + Get the data from p1.]] [[p + = p2] [Assigns a pair, - p1, from - another pair, p2.]] + p1, from + another pair, p2.]] [[make_pair<F>(s)] [Make a pair given the first type, - F, and + F, and a value for the - second type, s. + 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] + 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 + for equality.]] [[p != p2`

    -

    - - Header -

    +
    + + Header +
     #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    -

    - - Example -

    +
    + + Example +
     pair<int, char> p('X');
     std::cout << p << std::endl;
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 5c2438c8..b17f6e16 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -3,7 +3,7 @@
     
     tag_of
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,25 +24,26 @@ +
    + + Description +

    All conforming Fusion sequences and iterators have an associated tag type. - The purpose of the tag is to enable tag - dispatching from Intrinsic + 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.

    -

    - - Synopsis -

    +
    + + Synopsis +
     namespace traits
     {
    @@ -53,10 +54,10 @@
         };
     }
     
    -

    - - Parameters -

    +
    + + Parameters +
    @@ -83,7 +84,7 @@

    - T + T

    @@ -98,37 +99,37 @@
    -

    - - Expression Semantics -

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

    +
    + + Header +
     #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     
    -

    - - Example -

    +
    + + 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/tuple.html b/doc/html/fusion/tuple.html
    index 8319ff15..a9620c2f 100644
    --- a/doc/html/fusion/tuple.html
    +++ b/doc/html/fusion/tuple.html
    @@ -3,7 +3,7 @@
     
     Tuple
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    Class template tuple
    @@ -43,12 +44,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/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 64119b29..1d9cfe61 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -3,7 +3,7 @@ Class template tuple - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@

    Fusion's implementation of the TR1 - Tuple is also a fusion Forward + 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 + Currently tuple is basically a synonym for vector, although this may be changed in future releases of fusion.

    -

    - - Synopsis -

    +
    + + Synopsis +
     template<
         typename T1 = unspecified,
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 9b1cb593..a4b71b5b 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -3,20 +3,19 @@
     
     Construction
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,11 +24,12 @@ +
    + + Description +

    The TR1 Tuple type provides a default constructor, a constructor that takes @@ -37,34 +37,34 @@ copy constructor. The details of the various constructors are described in this section.

    -
    - - Specification -
    +
    + + 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 + The type of the ith element of a tuple

    -
    Pi
    +
    Pi

    - The type of the ith + The type of the ith parameter

    @@ -73,48 +73,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/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 450afe7c..eb8f30fa 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -1,24 +1,21 @@ -Element - access +Element access - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,59 +24,59 @@ +
    + + 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 -
    +
    + + Specification +
     template<int I, T>
     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/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html index c0ae67bd..85c7953a 100644 --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html @@ -1,23 +1,21 @@ -Relational - operators +Relational operators - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,45 +24,45 @@ +
    + + Description +

    The TR1 Tuple provides the standard boolean relational operators.

    -
    - - Specification -
    +
    + + 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 + The type of the ith element of a tuple

    -
    Pi
    +
    Pi

    - The type of the ith + The type of the ith parameter

    @@ -77,23 +75,19 @@ 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,
    @@ -103,18 +97,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 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,
    @@ -124,16 +116,14 @@
         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,
    @@ -143,16 +133,14 @@
         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,
    @@ -162,17 +150,15 @@
         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,
    @@ -182,16 +168,14 @@
         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/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index d9dccb61..a53564fa 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -1,23 +1,21 @@ -Tuple - creation functions +Tuple creation functions - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,44 +24,44 @@ +
    + + 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 -
    +
    + + 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. + 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/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html index 0b7368bc..7aa69963 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html @@ -1,24 +1,21 @@ -Tuple - helper classes +Tuple helper classes - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,51 +24,51 @@ +
    + + Description +

    The TR1 Tuple provides 2 helper traits, for compile time access to the tuple size, and the element types.

    -
    - - Specification -
    +
    + + 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.

    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html index 9e5d1283..2c8f24af 100644 --- a/doc/html/fusion/tuple/pairs.html +++ b/doc/html/fusion/tuple/pairs.html @@ -3,20 +3,19 @@ Pairs - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -25,49 +24,50 @@
    -

    - - Description -

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

    +
    + + 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.

    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html index 180b732b..47c3764d 100644 --- a/doc/html/fusion/view.html +++ b/doc/html/fusion/view.html @@ -3,7 +3,7 @@ View - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,7 +24,8 @@
    +View +
    single_view
    filter_view
    @@ -43,10 +44,10 @@ sequence(s) are actually accessed. Views' lazy nature make them very cheap to copy and be passed around by value.

    -

    - - Header -

    +

    + + Header +

     #include <boost/fusion/view.hpp>
     #include <boost/fusion/include/view.hpp>
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index 734b5ffe..bc5ee643 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -3,7 +3,7 @@
     
     filter_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,38 +24,39 @@
    +
    + + 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 -

    +
    + + Header +
     #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     template <typename Sequence, typename Pred>
     struct filter_view;
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -83,13 +84,12 @@ @@ -101,12 +101,12 @@

    - Sequence + Sequence

    - A Forward + A Forward Sequence

    - Pred + Pred

    - Unary Metafunction returning an mpl::bool_ + Unary Metafunction returning an mpl::bool_

    @@ -116,39 +116,36 @@
    -

    - - Model of -

    - +
    + + Model of +
    +

    Notation

    -
    F
    +
    F

    - A filter_view type + A filter_view type

    -
    f, - f2
    +
    f, + f2

    - Instances of filter_view + Instances of filter_view

    -
    s
    +
    s

    - A Forward Sequence + A Forward Sequence

    -

    - - Expression Semantics -

    +
    + + Expression Semantics +

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

    @@ -172,57 +169,57 @@

    - 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 -

    +
    + + Example +
     using boost::mpl::_;
     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/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 68a3b260..da52af1f 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -3,7 +3,7 @@
     
     iterator_range
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,35 +24,36 @@ +
    + + Description +

    - iterator_range presents a + iterator_range presents a sub-range of its underlying sequence delimited by a pair of iterators.

    -

    - - Header -

    +
    + + Header +
     #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     template <typename First, typename Last>
     struct iterator_range;
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -80,12 +81,12 @@

    - First + First

    - A fusion Iterator + A fusion Iterator

    @@ -96,12 +97,12 @@

    - Last + Last

    - A fusion Iterator + A fusion Iterator

    @@ -111,52 +112,48 @@
    -

    - - Model of -

    +
    + + Model of +

    Notation

    -
    IR
    +
    IR

    - An iterator_range type + An iterator_range type

    -
    f
    +
    f

    - An instance of First + An instance of First

    -
    l
    +
    l

    - An instance of Last + An instance of Last

    -
    ir, - ir2
    +
    ir, + ir2

    - Instances of iterator_range + Instances of iterator_range

    -

    - - Expression +

    + + Expression Semantics -
    +

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

    @@ -180,62 +177,62 @@

    - 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 -

    +
    + + 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/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 1d617e57..0505807e 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -3,7 +3,7 @@
     
     joint_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,35 +24,36 @@ +
    + + Description +

    - joint_view presents a view + joint_view presents a view which is a concatenation of two sequences.

    -

    - - Header -

    +
    + + Header +
     #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     template <typename Sequence1, typename Sequence2>
     struct joint_view;
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -80,13 +81,12 @@ @@ -98,13 +98,12 @@ @@ -115,42 +114,40 @@

    - Sequence1 + Sequence1

    - A Forward + A Forward Sequence

    - Sequence2 + Sequence2

    - A Forward + A Forward Sequence

    -

    - - Model of -

    - +
    + + Model of +
    +

    Notation

    -
    JV
    +
    JV

    - A joint_view type + A joint_view type

    -
    s1
    +
    s1

    - An instance of Sequence1 + An instance of Sequence1

    -
    s2
    +
    s2

    - An instance of Sequence2 + An instance of Sequence2

    -
    jv, - jv2
    +
    jv, + jv2

    - Instances of joint_view + Instances of joint_view

    -

    - - Expression Semantics -

    +
    + + Expression Semantics +

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

    @@ -174,58 +171,58 @@

    - 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 -

    +
    + + 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/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html index bc1ea08e..c1515ca3 100644 --- a/doc/html/fusion/view/reverse_view.html +++ b/doc/html/fusion/view/reverse_view.html @@ -3,7 +3,7 @@ reverse_view - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,32 +24,33 @@

    - reverse_view presents a reversed + 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 -

    +
    + + Header +
     #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     template <typename Sequence>
     struct reverse_view;
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -76,13 +77,12 @@ @@ -92,40 +92,38 @@

    - Sequence + Sequence

    - A Bidirectional + A Bidirectional Sequence

    -

    - - Model of -

    -
    • Bidirectional +
      + + Model of +
      +

      Notation

      -
      RV
      +
      RV

      - A reverse_view type + A reverse_view type

      -
      s
      +
      s

      - An instance of Sequence + An instance of Sequence

      -
      rv, - rv2
      +
      rv, + rv2

      - Instances of reverse_view + Instances of reverse_view

      -

      - - Expression +

      + + Expression Semantics -
      +

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

      @@ -149,53 +147,53 @@

      - 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 -

      +
      + + 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/view/single_view.html b/doc/html/fusion/view/single_view.html
      index f302a863..263b38c8 100644
      --- a/doc/html/fusion/view/single_view.html
      +++ b/doc/html/fusion/view/single_view.html
      @@ -3,7 +3,7 @@
       
       single_view
       
      -
      +
       
       
       
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -24,31 +24,32 @@

    - single_view is a view into + single_view is a view into a value as a single element sequence.

    -

    - - Header -

    +
    + + Header +
     #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     template <typename T>
     struct single_view;
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -75,7 +76,7 @@

    - T + T

    @@ -89,38 +90,36 @@
    -

    - - Model of -

    - +
    + + Model of +
    +

    Notation

    -
    S
    +
    S

    - A single_view type + A single_view type

    -
    s, - s2
    +
    s, + s2

    - Instances of single_view + Instances of single_view

    -
    x
    +
    x

    - An instance of T + An instance of T

    -

    - - Expression Semantics -

    +
    + + Expression Semantics +

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

    @@ -144,51 +143,51 @@

    - 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 -

    +
    + + Example +
     single_view<int> view(3);
     std::cout << view << std::endl;
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 6baac9f9..a51e6be8 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -3,7 +3,7 @@
     
     transform_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,46 +24,47 @@

    - The unary version of 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 + 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 + or function pointer. The transform_view + inherits the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence or sequences.

    -

    - - Header -

    +
    + + Header +
     #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +

    - Unary Version + Unary Version

     template <typename Sequence, typename F1>
     struct transform_view;
     

    - Binary Version + Binary Version

     template <typename Sequence1, typename Sequence2, typename F2>
     struct transform_view;
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -91,13 +92,12 @@ @@ -109,13 +109,12 @@ @@ -127,13 +126,12 @@ @@ -145,14 +143,14 @@ @@ -164,14 +162,14 @@ @@ -182,79 +180,73 @@

    - Sequence + Sequence

    - A Forward + A Forward Sequence

    - Sequence1 + Sequence1

    - A Forward + A Forward Sequence

    - Sequence2 + Sequence2

    - A Forward + A Forward Sequence

    - F1 + F1

    - 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 + 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 + 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 + 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.

    -

    - - Model of -

    +
    + + Model of +

    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

    -
    f1
    +
    f1

    - An instance of F1 + An instance of F1

    -
    f2
    +
    f2

    - An instance of F2 + An instance of F2

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

    + + 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) + defined in Forward + Sequence, Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence or sequences.

    @@ -278,68 +270,68 @@

    - UTV(s, f1) + UTV(s, f1)

    - Creates a unary transform_view - given sequence, s - and unary function object or function pointer, f1. + Creates a unary transform_view + given sequence, s + and unary function object or function pointer, f1.

    - BTV(s1, s2, f2) + BTV(s1, s2, f2)

    - Creates a binary transform_view - given sequences, s1 - and s2 and binary - function object or function pointer, f2. + 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 -

    +
    + + Example +
     struct square
     {
    @@ -358,7 +350,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/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index fe54d444..49a3da12 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -3,7 +3,7 @@
     
     zip_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,38 +24,39 @@ +
    + + 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 + 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 -

    +
    + + Header +
     #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     
    -

    - - Synopsis -

    +
    + + Synopsis +
     template <typename Sequences>
     struct zip_view;
     
    -

    - - Template parameters -

    +
    + + Template parameters +
    @@ -82,13 +83,12 @@ @@ -98,47 +98,43 @@

    - Sequences + Sequences

    - A Forward + A Forward Sequence of references to other Fusion _sequence_s

    -

    - - Model of -

    +
    + + Model of +

    Notation

    -
    ZV
    +
    ZV

    - A joint_view type + A joint_view type

    -
    s
    +
    s

    - An instance of Sequences + An instance of Sequences

    -
    zv1, - zv2
    +
    zv1, + zv2

    - Instances of ZV + Instances of ZV

    -

    - - Expression Semantics -

    +
    + + Expression Semantics +

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

    @@ -162,12 +158,12 @@ @@ -175,44 +171,44 @@

    - ZV(s) + ZV(s)

    - Creates a zip_view + Creates 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. + 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 -

    +
    + + 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/index.html b/doc/html/index.html index 2cfc827a..78810198 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,17 +3,17 @@ Chapter 1. Fusion 2.0 - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,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)

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

    Last revised: December 20, 2007 at 05:09:32 GMT

    Last revised: March 15, 2008 at 13:47:43 GMT


    From 780b8bc1b08c173d9661c30993649d588bb25f8e Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sat, 28 Jun 2008 13:57:20 +0000 Subject: [PATCH 07/82] =?UTF-8?q?With=20his=20kind=20permission,=20change?= =?UTF-8?q?=20Jaakko=20"J=C3=A4rvi"=20to=20"Jarvi"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [SVN r46809] --- include/boost/fusion/container/generation/ignore.hpp | 2 +- include/boost/fusion/container/vector/vector_fwd.hpp | 2 +- include/boost/fusion/sequence/comparison/detail/equal_to.hpp | 2 +- include/boost/fusion/sequence/comparison/detail/greater.hpp | 2 +- .../boost/fusion/sequence/comparison/detail/greater_equal.hpp | 2 +- include/boost/fusion/sequence/comparison/detail/less.hpp | 2 +- include/boost/fusion/sequence/comparison/detail/less_equal.hpp | 2 +- .../boost/fusion/sequence/comparison/detail/not_equal_to.hpp | 2 +- include/boost/fusion/sequence/comparison/equal_to.hpp | 2 +- include/boost/fusion/sequence/comparison/greater.hpp | 2 +- include/boost/fusion/sequence/comparison/greater_equal.hpp | 2 +- include/boost/fusion/sequence/comparison/less.hpp | 2 +- include/boost/fusion/sequence/comparison/less_equal.hpp | 2 +- include/boost/fusion/sequence/comparison/not_equal_to.hpp | 2 +- include/boost/fusion/sequence/io/detail/in.hpp | 2 +- include/boost/fusion/sequence/io/detail/manip.hpp | 2 +- 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 +- include/boost/fusion/support/detail/as_fusion_element.hpp | 2 +- test/sequence/back_extended_deque.cpp | 2 +- test/sequence/comparison.hpp | 2 +- test/sequence/construction.hpp | 2 +- test/sequence/copy.hpp | 2 +- test/sequence/deque_comparison.cpp | 2 +- test/sequence/deque_construction.cpp | 2 +- test/sequence/deque_copy.cpp | 2 +- test/sequence/deque_make.cpp | 2 +- test/sequence/deque_misc.cpp | 2 +- test/sequence/deque_mutate.cpp | 2 +- test/sequence/deque_tie.cpp | 2 +- test/sequence/deque_value_at.cpp | 2 +- test/sequence/front_extended_deque.cpp | 2 +- test/sequence/io.cpp | 2 +- test/sequence/list_comparison.cpp | 2 +- test/sequence/list_construction.cpp | 2 +- test/sequence/list_copy.cpp | 2 +- test/sequence/list_make.cpp | 2 +- test/sequence/list_misc.cpp | 2 +- test/sequence/list_mutate.cpp | 2 +- test/sequence/list_tie.cpp | 2 +- test/sequence/list_value_at.cpp | 2 +- test/sequence/make.hpp | 2 +- test/sequence/make_list.cpp | 2 +- test/sequence/make_vector.cpp | 2 +- test/sequence/misc.hpp | 2 +- test/sequence/mutate.hpp | 2 +- test/sequence/tie.hpp | 2 +- test/sequence/tuple_comparison.cpp | 2 +- test/sequence/tuple_construction.cpp | 2 +- test/sequence/tuple_copy.cpp | 2 +- test/sequence/tuple_element.cpp | 2 +- test/sequence/tuple_make.cpp | 2 +- test/sequence/tuple_misc.cpp | 2 +- test/sequence/tuple_mutate.cpp | 2 +- test/sequence/tuple_tie.cpp | 2 +- test/sequence/value_at.hpp | 2 +- test/sequence/vector_comparison.cpp | 2 +- test/sequence/vector_construction.cpp | 2 +- test/sequence/vector_copy.cpp | 2 +- test/sequence/vector_make.cpp | 2 +- test/sequence/vector_misc.cpp | 2 +- test/sequence/vector_mutate.cpp | 2 +- test/sequence/vector_tie.cpp | 2 +- test/sequence/vector_value_at.cpp | 2 +- 65 files changed, 65 insertions(+), 65 deletions(-) diff --git a/include/boost/fusion/container/generation/ignore.hpp b/include/boost/fusion/container/generation/ignore.hpp index c363a203..6a416c6b 100644 --- a/include/boost/fusion/container/generation/ignore.hpp +++ b/include/boost/fusion/container/generation/ignore.hpp @@ -1,6 +1,6 @@ /*============================================================================= Copyright (c) 2001 Doug Gregor - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/container/vector/vector_fwd.hpp b/include/boost/fusion/container/vector/vector_fwd.hpp index a6b9cc66..2c4848db 100644 --- a/include/boost/fusion/container/vector/vector_fwd.hpp +++ b/include/boost/fusion/container/vector/vector_fwd.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp index c4f91238..6c78408a 100644 --- a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/detail/greater.hpp b/include/boost/fusion/sequence/comparison/detail/greater.hpp index 34cf1448..6807d367 100644 --- a/include/boost/fusion/sequence/comparison/detail/greater.hpp +++ b/include/boost/fusion/sequence/comparison/detail/greater.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp index 0cf4c388..08b98760 100644 --- a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/detail/less.hpp b/include/boost/fusion/sequence/comparison/detail/less.hpp index 3fc6429f..0c457c41 100644 --- a/include/boost/fusion/sequence/comparison/detail/less.hpp +++ b/include/boost/fusion/sequence/comparison/detail/less.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp index 3d48ae5c..ee8a111e 100644 --- a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying 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 87911b6d..5e939675 100644 --- a/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp index cea3c9c1..fb27f15c 100644 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/greater.hpp b/include/boost/fusion/sequence/comparison/greater.hpp index 3ef215a1..8df806e4 100644 --- a/include/boost/fusion/sequence/comparison/greater.hpp +++ b/include/boost/fusion/sequence/comparison/greater.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/greater_equal.hpp b/include/boost/fusion/sequence/comparison/greater_equal.hpp index df365c3a..3a20e0e8 100644 --- a/include/boost/fusion/sequence/comparison/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/greater_equal.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/less.hpp b/include/boost/fusion/sequence/comparison/less.hpp index 4d3c086c..a86c3517 100644 --- a/include/boost/fusion/sequence/comparison/less.hpp +++ b/include/boost/fusion/sequence/comparison/less.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index 0f5a953c..518e1c0f 100644 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/comparison/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/not_equal_to.hpp index 34d2cab6..54648e16 100644 --- a/include/boost/fusion/sequence/comparison/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/not_equal_to.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/io/detail/in.hpp b/include/boost/fusion/sequence/io/detail/in.hpp index 93d63791..cd772514 100644 --- a/include/boost/fusion/sequence/io/detail/in.hpp +++ b/include/boost/fusion/sequence/io/detail/in.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman diff --git a/include/boost/fusion/sequence/io/detail/manip.hpp b/include/boost/fusion/sequence/io/detail/manip.hpp index 382eb32f..dd9a5265 100644 --- a/include/boost/fusion/sequence/io/detail/manip.hpp +++ b/include/boost/fusion/sequence/io/detail/manip.hpp @@ -1,6 +1,6 @@ /*============================================================================= Copyright (c) 1999-2003 Jeremiah Willcock - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/sequence/io/detail/out.hpp b/include/boost/fusion/sequence/io/detail/out.hpp index bd74e20a..c8ab2085 100644 --- a/include/boost/fusion/sequence/io/detail/out.hpp +++ b/include/boost/fusion/sequence/io/detail/out.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index 039190eb..19142d46 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp index 48098e57..017f0e97 100644 --- a/include/boost/fusion/sequence/io/out.hpp +++ b/include/boost/fusion/sequence/io/out.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman diff --git a/include/boost/fusion/support/detail/as_fusion_element.hpp b/include/boost/fusion/support/detail/as_fusion_element.hpp index 78e4b631..2d020644 100644 --- a/include/boost/fusion/support/detail/as_fusion_element.hpp +++ b/include/boost/fusion/support/detail/as_fusion_element.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp index 689709f9..61d8ece7 100644 --- a/test/sequence/back_extended_deque.cpp +++ b/test/sequence/back_extended_deque.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/comparison.hpp b/test/sequence/comparison.hpp index 429c93c6..0fd30d9d 100644 --- a/test/sequence/comparison.hpp +++ b/test/sequence/comparison.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index d5c56664..c667b1a4 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp index 96edbc45..29f8baac 100644 --- a/test/sequence/copy.hpp +++ b/test/sequence/copy.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/deque_comparison.cpp b/test/sequence/deque_comparison.cpp index 229fd0e6..604a82e5 100644 --- a/test/sequence/deque_comparison.cpp +++ b/test/sequence/deque_comparison.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/deque_construction.cpp b/test/sequence/deque_construction.cpp index bba8f09a..9f605ed5 100644 --- a/test/sequence/deque_construction.cpp +++ b/test/sequence/deque_construction.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/deque_copy.cpp b/test/sequence/deque_copy.cpp index f654277b..712c42c7 100644 --- a/test/sequence/deque_copy.cpp +++ b/test/sequence/deque_copy.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/deque_make.cpp b/test/sequence/deque_make.cpp index e06dea27..334ea029 100644 --- a/test/sequence/deque_make.cpp +++ b/test/sequence/deque_make.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/deque_misc.cpp b/test/sequence/deque_misc.cpp index 53836bbc..f3063079 100644 --- a/test/sequence/deque_misc.cpp +++ b/test/sequence/deque_misc.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/deque_mutate.cpp b/test/sequence/deque_mutate.cpp index 66ab1478..39bdc381 100644 --- a/test/sequence/deque_mutate.cpp +++ b/test/sequence/deque_mutate.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 diff --git a/test/sequence/deque_tie.cpp b/test/sequence/deque_tie.cpp index e1d855ae..d6bd4926 100644 --- a/test/sequence/deque_tie.cpp +++ b/test/sequence/deque_tie.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/deque_value_at.cpp b/test/sequence/deque_value_at.cpp index c348d287..7e528b79 100644 --- a/test/sequence/deque_value_at.cpp +++ b/test/sequence/deque_value_at.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp index fc049618..7234e955 100644 --- a/test/sequence/front_extended_deque.cpp +++ b/test/sequence/front_extended_deque.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp index d896b88f..00e88b13 100644 --- a/test/sequence/io.cpp +++ b/test/sequence/io.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (C) 1999-2003 Jaakko Järvi + Copyright (C) 1999-2003 Jaakko Jarvi Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/sequence/list_comparison.cpp b/test/sequence/list_comparison.cpp index fcf213c5..9e379acf 100644 --- a/test/sequence/list_comparison.cpp +++ b/test/sequence/list_comparison.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/list_construction.cpp b/test/sequence/list_construction.cpp index 26d648fd..2d9f0f19 100644 --- a/test/sequence/list_construction.cpp +++ b/test/sequence/list_construction.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/list_copy.cpp b/test/sequence/list_copy.cpp index 07078344..1decdc25 100644 --- a/test/sequence/list_copy.cpp +++ b/test/sequence/list_copy.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/list_make.cpp b/test/sequence/list_make.cpp index 39d2a3c9..58463ca9 100644 --- a/test/sequence/list_make.cpp +++ b/test/sequence/list_make.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp index 2d8fe047..d9f8eb43 100644 --- a/test/sequence/list_misc.cpp +++ b/test/sequence/list_misc.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/list_mutate.cpp b/test/sequence/list_mutate.cpp index f8802b27..15afff64 100644 --- a/test/sequence/list_mutate.cpp +++ b/test/sequence/list_mutate.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/list_tie.cpp b/test/sequence/list_tie.cpp index d96bbf4a..e858dc99 100644 --- a/test/sequence/list_tie.cpp +++ b/test/sequence/list_tie.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/list_value_at.cpp b/test/sequence/list_value_at.cpp index 763cf265..d0fec91a 100644 --- a/test/sequence/list_value_at.cpp +++ b/test/sequence/list_value_at.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/make.hpp b/test/sequence/make.hpp index c6494474..37d847ac 100644 --- a/test/sequence/make.hpp +++ b/test/sequence/make.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/make_list.cpp b/test/sequence/make_list.cpp index 39d2a3c9..58463ca9 100644 --- a/test/sequence/make_list.cpp +++ b/test/sequence/make_list.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/make_vector.cpp b/test/sequence/make_vector.cpp index efd9f068..4e5ea89e 100644 --- a/test/sequence/make_vector.cpp +++ b/test/sequence/make_vector.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp index d1fae03b..4c51a18c 100644 --- a/test/sequence/misc.hpp +++ b/test/sequence/misc.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (C) 1999-2003 Jaakko Järvi + Copyright (C) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/mutate.hpp b/test/sequence/mutate.hpp index d50d84d0..a2388786 100644 --- a/test/sequence/mutate.hpp +++ b/test/sequence/mutate.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tie.hpp b/test/sequence/tie.hpp index 6097ef8e..cb928906 100644 --- a/test/sequence/tie.hpp +++ b/test/sequence/tie.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp index 8108256b..aa2ed73f 100644 --- a/test/sequence/tuple_comparison.cpp +++ b/test/sequence/tuple_comparison.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp index 323c72ed..7f025d51 100644 --- a/test/sequence/tuple_construction.cpp +++ b/test/sequence/tuple_construction.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_copy.cpp b/test/sequence/tuple_copy.cpp index 9a4d80e1..4332efbe 100644 --- a/test/sequence/tuple_copy.cpp +++ b/test/sequence/tuple_copy.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_element.cpp b/test/sequence/tuple_element.cpp index 496fd6e1..ccf61f6e 100644 --- a/test/sequence/tuple_element.cpp +++ b/test/sequence/tuple_element.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_make.cpp b/test/sequence/tuple_make.cpp index 77ff412f..e05aee34 100644 --- a/test/sequence/tuple_make.cpp +++ b/test/sequence/tuple_make.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp index daef0322..7d9ab0e7 100644 --- a/test/sequence/tuple_misc.cpp +++ b/test/sequence/tuple_misc.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_mutate.cpp b/test/sequence/tuple_mutate.cpp index 8770b520..bba3a33e 100644 --- a/test/sequence/tuple_mutate.cpp +++ b/test/sequence/tuple_mutate.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/tuple_tie.cpp b/test/sequence/tuple_tie.cpp index e91c47a3..0db9153e 100644 --- a/test/sequence/tuple_tie.cpp +++ b/test/sequence/tuple_tie.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/value_at.hpp b/test/sequence/value_at.hpp index d655f13e..d791fb5e 100644 --- a/test/sequence/value_at.hpp +++ b/test/sequence/value_at.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp index 7321820e..bb7c3c34 100644 --- a/test/sequence/vector_comparison.cpp +++ b/test/sequence/vector_comparison.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_construction.cpp b/test/sequence/vector_construction.cpp index d279c232..0f672a45 100644 --- a/test/sequence/vector_construction.cpp +++ b/test/sequence/vector_construction.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_copy.cpp b/test/sequence/vector_copy.cpp index a4c8a3af..12769353 100644 --- a/test/sequence/vector_copy.cpp +++ b/test/sequence/vector_copy.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_make.cpp b/test/sequence/vector_make.cpp index efd9f068..4e5ea89e 100644 --- a/test/sequence/vector_make.cpp +++ b/test/sequence/vector_make.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp index 25d3ecfc..c23b539d 100644 --- a/test/sequence/vector_misc.cpp +++ b/test/sequence/vector_misc.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_mutate.cpp b/test/sequence/vector_mutate.cpp index 610c0c18..dc242f07 100644 --- a/test/sequence/vector_mutate.cpp +++ b/test/sequence/vector_mutate.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_tie.cpp b/test/sequence/vector_tie.cpp index 43895000..066dad87 100644 --- a/test/sequence/vector_tie.cpp +++ b/test/sequence/vector_tie.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/test/sequence/vector_value_at.cpp b/test/sequence/vector_value_at.cpp index 8a99da5b..ffd84b34 100644 --- a/test/sequence/vector_value_at.cpp +++ b/test/sequence/vector_value_at.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jaakko Jarvi Copyright (c) 2001-2006 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying From df2abdab6b4664403f905b48d4bede065a9d60ac Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 30 Jun 2008 12:04:15 +0000 Subject: [PATCH 08/82] Fixed non-ascii chars [SVN r46897] --- include/boost/fusion/functional/invocation/invoke.hpp | 2 +- .../fusion/functional/invocation/invoke_function_object.hpp | 2 +- include/boost/fusion/functional/invocation/invoke_procedure.hpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index bac695cc..f7730773 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index f0f6e4eb..c509a2c3 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp index 31822ade..60bf2390 100644 --- a/include/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software From d150ba849864485e614b259ff69dae0c1931aa44 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 30 Jun 2008 12:06:07 +0000 Subject: [PATCH 09/82] Fixed non-ascii chars [SVN r46898] --- test/functional/invoke.cpp | 2 +- test/functional/invoke_function_object.cpp | 2 +- test/functional/invoke_procedure.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index 3960af17..be49938b 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp index 5f08f650..61504fb8 100644 --- a/test/functional/invoke_function_object.cpp +++ b/test/functional/invoke_function_object.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/test/functional/invoke_procedure.cpp b/test/functional/invoke_procedure.cpp index 810cb903..3e733974 100644 --- a/test/functional/invoke_procedure.cpp +++ b/test/functional/invoke_procedure.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software From 099deb4385560ce118e5d30d0f5c8d93640df584 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 8 Jul 2008 02:39:55 +0000 Subject: [PATCH 10/82] merge from trunk [SVN r47204] --- .../boost/fusion/adapted/array/detail/category_of_impl.hpp | 2 +- include/boost/fusion/adapted/array/tag_of.hpp | 2 +- include/boost/fusion/adapted/boost_tuple/tag_of.hpp | 4 ++-- include/boost/fusion/adapted/std_pair.hpp | 4 ++-- .../boost/fusion/adapted/std_pair/detail/category_of_impl.hpp | 2 +- include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp | 2 +- include/boost/fusion/adapted/std_pair/tag_of.hpp | 2 +- include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp | 2 +- include/boost/fusion/adapted/struct/adapt_struct.hpp | 2 +- .../boost/fusion/adapted/struct/detail/category_of_impl.hpp | 2 +- include/boost/fusion/adapted/struct/struct_iterator.hpp | 2 +- include/boost/fusion/algorithm/transformation/transform.hpp | 2 +- include/boost/fusion/algorithm/transformation/zip.hpp | 2 +- include/boost/fusion/container/generation/deque_tie.hpp | 2 +- include/boost/fusion/container/generation/list_tie.hpp | 2 +- include/boost/fusion/container/generation/make_deque.hpp | 2 +- include/boost/fusion/container/generation/make_list.hpp | 2 +- include/boost/fusion/container/generation/make_map.hpp | 2 +- include/boost/fusion/container/generation/make_set.hpp | 2 +- include/boost/fusion/container/generation/make_vector.hpp | 2 +- include/boost/fusion/container/generation/map_tie.hpp | 2 +- include/boost/fusion/container/generation/vector_tie.hpp | 2 +- include/boost/fusion/container/list/detail/end_impl.hpp | 2 +- include/boost/fusion/functional/invocation/invoke.hpp | 2 +- .../fusion/functional/invocation/invoke_function_object.hpp | 2 +- .../boost/fusion/functional/invocation/invoke_procedure.hpp | 2 +- include/boost/fusion/support/tag_of.hpp | 2 +- include/boost/fusion/view/transform_view/transform_view.hpp | 2 +- 28 files changed, 30 insertions(+), 30 deletions(-) diff --git a/include/boost/fusion/adapted/array/detail/category_of_impl.hpp b/include/boost/fusion/adapted/array/detail/category_of_impl.hpp index 4c6b040e..5d01f053 100644 --- a/include/boost/fusion/adapted/array/detail/category_of_impl.hpp +++ b/include/boost/fusion/adapted/array/detail/category_of_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044) #define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/array/tag_of.hpp b/include/boost/fusion/adapted/array/tag_of.hpp index d858e5ab..62f81ea0 100644 --- a/include/boost/fusion/adapted/array/tag_of.hpp +++ b/include/boost/fusion/adapted/array/tag_of.hpp @@ -25,7 +25,7 @@ namespace boost { namespace fusion namespace traits { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) struct tag_of, void > #else struct tag_of > diff --git a/include/boost/fusion/adapted/boost_tuple/tag_of.hpp b/include/boost/fusion/adapted/boost_tuple/tag_of.hpp index 0ce87086..efae06a2 100644 --- a/include/boost/fusion/adapted/boost_tuple/tag_of.hpp +++ b/include/boost/fusion/adapted/boost_tuple/tag_of.hpp @@ -33,7 +33,7 @@ namespace boost { namespace fusion class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 > -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) struct tag_of, void > #else struct tag_of > @@ -43,7 +43,7 @@ namespace boost { namespace fusion }; template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) struct tag_of, void > #else struct tag_of > diff --git a/include/boost/fusion/adapted/std_pair.hpp b/include/boost/fusion/adapted/std_pair.hpp index ec0905de..ffc343bc 100644 --- a/include/boost/fusion/adapted/std_pair.hpp +++ b/include/boost/fusion/adapted/std_pair.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { @@ -20,7 +20,7 @@ namespace boost { namespace fusion namespace traits { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) struct tag_of, void > #else struct tag_of > diff --git a/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp index f207c1c7..68df41dc 100644 --- a/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp +++ b/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) #define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp index 4aa2daa2..9469723b 100644 --- a/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp +++ b/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/std_pair/tag_of.hpp b/include/boost/fusion/adapted/std_pair/tag_of.hpp index 3211efad..7b63d287 100644 --- a/include/boost/fusion/adapted/std_pair/tag_of.hpp +++ b/include/boost/fusion/adapted/std_pair/tag_of.hpp @@ -10,7 +10,7 @@ #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index c355d4b3..e8ee31b9 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -31,7 +31,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { namespace extension { template diff --git a/include/boost/fusion/adapted/struct/adapt_struct.hpp b/include/boost/fusion/adapted/struct/adapt_struct.hpp index e8eb6a67..41de5b1e 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct.hpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include #define BOOST_FUSION_ADAPT_STRUCT(name, bseq) \ BOOST_FUSION_ADAPT_STRUCT_I( \ diff --git a/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp b/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp index 9e7f9df4..c23b9751 100644 --- a/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) #define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/struct/struct_iterator.hpp b/include/boost/fusion/adapted/struct/struct_iterator.hpp index caea895b..f2eb7ea9 100644 --- a/include/boost/fusion/adapted/struct/struct_iterator.hpp +++ b/include/boost/fusion/adapted/struct/struct_iterator.hpp @@ -17,7 +17,7 @@ #include #include #include -#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 4a521532..681319bc 100644 --- a/include/boost/fusion/algorithm/transformation/transform.hpp +++ b/include/boost/fusion/algorithm/transformation/transform.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion }; template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) struct transform #else struct transform diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index 4f20a845..ff6e6b1a 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion { namespace result_of { template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) > -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/generation/deque_tie.hpp b/include/boost/fusion/container/generation/deque_tie.hpp index bc5e52e2..c5d26c97 100644 --- a/include/boost/fusion/container/generation/deque_tie.hpp +++ b/include/boost/fusion/container/generation/deque_tie.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/generation/list_tie.hpp b/include/boost/fusion/container/generation/list_tie.hpp index a6c546a4..44691e02 100644 --- a/include/boost/fusion/container/generation/list_tie.hpp +++ b/include/boost/fusion/container/generation/list_tie.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/generation/make_deque.hpp b/include/boost/fusion/container/generation/make_deque.hpp index ee33b2fe..90d146e9 100644 --- a/include/boost/fusion/container/generation/make_deque.hpp +++ b/include/boost/fusion/container/generation/make_deque.hpp @@ -73,7 +73,7 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/generation/make_list.hpp b/include/boost/fusion/container/generation/make_list.hpp index 6e765f87..b4cfd012 100644 --- a/include/boost/fusion/container/generation/make_list.hpp +++ b/include/boost/fusion/container/generation/make_list.hpp @@ -66,7 +66,7 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/generation/make_map.hpp b/include/boost/fusion/container/generation/make_map.hpp index 54a3ddb1..865d5a20 100644 --- a/include/boost/fusion/container/generation/make_map.hpp +++ b/include/boost/fusion/container/generation/make_map.hpp @@ -78,7 +78,7 @@ namespace boost { namespace fusion BOOST_PP_ENUM_PARAMS(N, typename K) , BOOST_PP_ENUM_PARAMS(N, typename D) > -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_map #undef TEXT diff --git a/include/boost/fusion/container/generation/make_set.hpp b/include/boost/fusion/container/generation/make_set.hpp index ec12f833..52aa952d 100644 --- a/include/boost/fusion/container/generation/make_set.hpp +++ b/include/boost/fusion/container/generation/make_set.hpp @@ -68,7 +68,7 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/generation/make_vector.hpp b/include/boost/fusion/container/generation/make_vector.hpp index 6bec6848..3f9b27f2 100644 --- a/include/boost/fusion/container/generation/make_vector.hpp +++ b/include/boost/fusion/container/generation/make_vector.hpp @@ -66,7 +66,7 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/generation/map_tie.hpp b/include/boost/fusion/container/generation/map_tie.hpp index a3cf3f9a..39d1e945 100644 --- a/include/boost/fusion/container/generation/map_tie.hpp +++ b/include/boost/fusion/container/generation/map_tie.hpp @@ -81,7 +81,7 @@ namespace boost { namespace fusion BOOST_PP_ENUM_PARAMS(N, typename K) , BOOST_PP_ENUM_PARAMS(N, typename D) > -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct map_tie diff --git a/include/boost/fusion/container/generation/vector_tie.hpp b/include/boost/fusion/container/generation/vector_tie.hpp index f5c1cfe6..7f7aaba3 100644 --- a/include/boost/fusion/container/generation/vector_tie.hpp +++ b/include/boost/fusion/container/generation/vector_tie.hpp @@ -53,7 +53,7 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > #undef TEXT diff --git a/include/boost/fusion/container/list/detail/end_impl.hpp b/include/boost/fusion/container/list/detail/end_impl.hpp index 49dca855..03b5e21d 100644 --- a/include/boost/fusion/container/list/detail/end_impl.hpp +++ b/include/boost/fusion/container/list/detail/end_impl.hpp @@ -39,7 +39,7 @@ namespace boost { namespace fusion type; static type - call(Sequence& t) + call(Sequence&) { return type(); } diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index f7730773..bac695cc 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 Joao Abecasis + Copyright (c) 2005-2006 João Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index c509a2c3..f0f6e4eb 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 Joao Abecasis + Copyright (c) 2005-2006 João Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp index 60bf2390..31822ade 100644 --- a/include/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 Joao Abecasis + Copyright (c) 2005-2006 João Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index 209ceeff..282da411 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include namespace boost { diff --git a/include/boost/fusion/view/transform_view/transform_view.hpp b/include/boost/fusion/view/transform_view/transform_view.hpp index 1585cd74..fcf876a0 100644 --- a/include/boost/fusion/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/view/transform_view/transform_view.hpp @@ -73,7 +73,7 @@ namespace boost { namespace fusion // Unary Version template -#if defined(BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS) +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) struct transform_view : sequence_base > #else struct transform_view : sequence_base > From 57725cb393b5aec7f707ea21c8a52742cda2a357 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 8 Jul 2008 02:43:21 +0000 Subject: [PATCH 11/82] merge from trunk [SVN r47205] --- doc/html/fusion/acknowledgements.html | 11 +- doc/html/fusion/adapted.html | 31 ++- doc/html/fusion/adapted/adapt_assoc.html | 75 +++--- doc/html/fusion/adapted/adapt_struct.html | 69 ++--- doc/html/fusion/adapted/boost__array.html | 63 ++--- doc/html/fusion/adapted/boost__tuple.html | 55 ++-- doc/html/fusion/adapted/mpl_sequence.html | 60 +++-- doc/html/fusion/adapted/std__pair.html | 63 ++--- doc/html/fusion/algorithm.html | 69 +++-- doc/html/fusion/algorithm/iteration.html | 19 +- .../fusion/algorithm/iteration/functions.html | 11 +- .../iteration/functions/accumulate.html | 88 +++--- .../algorithm/iteration/functions/fold.html | 88 +++--- .../iteration/functions/for_each.html | 77 +++--- .../algorithm/iteration/metafunctions.html | 11 +- .../iteration/metafunctions/accumulate.html | 74 ++--- .../iteration/metafunctions/fold.html | 74 ++--- .../iteration/metafunctions/for_each.html | 64 ++--- doc/html/fusion/algorithm/query.html | 19 +- .../fusion/algorithm/query/functions.html | 11 +- .../fusion/algorithm/query/functions/all.html | 86 +++--- .../fusion/algorithm/query/functions/any.html | 86 +++--- .../algorithm/query/functions/count.html | 76 +++--- .../algorithm/query/functions/count_if.html | 74 ++--- .../algorithm/query/functions/find.html | 72 ++--- .../algorithm/query/functions/find_if.html | 70 ++--- .../algorithm/query/functions/none.html | 86 +++--- .../fusion/algorithm/query/metafunctions.html | 11 +- .../algorithm/query/metafunctions/all.html | 68 ++--- .../algorithm/query/metafunctions/any.html | 68 ++--- .../algorithm/query/metafunctions/count.html | 58 ++-- .../query/metafunctions/count_if.html | 58 ++-- .../algorithm/query/metafunctions/find.html | 62 ++--- .../query/metafunctions/find_if.html | 64 ++--- .../algorithm/query/metafunctions/none.html | 68 ++--- doc/html/fusion/algorithm/transformation.html | 21 +- .../algorithm/transformation/functions.html | 11 +- .../transformation/functions/clear.html | 61 ++--- .../transformation/functions/erase.html | 96 +++---- .../transformation/functions/erase_key.html | 71 ++--- .../transformation/functions/filter.html | 69 ++--- .../transformation/functions/filter_if.html | 73 ++--- .../transformation/functions/insert.html | 72 ++--- .../functions/insert_range.html | 77 +++--- .../transformation/functions/join.html | 72 ++--- .../transformation/functions/pop_back.html | 63 ++--- .../transformation/functions/pop_front.html | 63 ++--- .../transformation/functions/push_back.html | 67 ++--- .../transformation/functions/push_front.html | 67 ++--- .../transformation/functions/remove.html | 69 ++--- .../transformation/functions/remove_if.html | 71 ++--- .../transformation/functions/replace.html | 79 +++--- .../transformation/functions/replace_if.html | 79 +++--- .../transformation/functions/reverse.html | 61 ++--- .../transformation/functions/transform.html | 128 ++++----- .../transformation/functions/zip.html | 77 +++--- .../transformation/metafunctions.html | 11 +- .../transformation/metafunctions/clear.html | 50 ++-- .../transformation/metafunctions/erase.html | 76 +++--- .../metafunctions/erase_key.html | 59 ++-- .../transformation/metafunctions/filter.html | 63 ++--- .../metafunctions/filter_if.html | 61 ++--- .../transformation/metafunctions/insert.html | 66 ++--- .../metafunctions/insert_range.html | 69 ++--- .../transformation/metafunctions/join.html | 42 +-- .../metafunctions/pop_back.html | 55 ++-- .../metafunctions/pop_front.html | 51 ++-- .../metafunctions/push_back.html | 55 ++-- .../metafunctions/push_front.html | 55 ++-- .../transformation/metafunctions/remove.html | 63 ++--- .../metafunctions/remove_if.html | 63 ++--- .../transformation/metafunctions/replace.html | 57 ++-- .../metafunctions/replace_if.html | 65 ++--- .../transformation/metafunctions/reverse.html | 55 ++-- .../metafunctions/transform.html | 128 ++++----- .../transformation/metafunctions/zip.html | 53 ++-- doc/html/fusion/change_log.html | 19 +- doc/html/fusion/container.html | 24 +- doc/html/fusion/container/cons.html | 184 ++++++------- doc/html/fusion/container/conversion.html | 21 +- .../container/conversion/functions.html | 11 +- .../conversion/functions/as_list.html | 47 ++-- .../conversion/functions/as_map.html | 55 ++-- .../conversion/functions/as_set.html | 49 ++-- .../conversion/functions/as_vector.html | 47 ++-- .../container/conversion/metafunctions.html | 11 +- .../conversion/metafunctions/as_list.html | 51 ++-- .../conversion/metafunctions/as_map.html | 59 ++-- .../conversion/metafunctions/as_set.html | 53 ++-- .../conversion/metafunctions/as_vector.html | 51 ++-- doc/html/fusion/container/generation.html | 21 +- .../container/generation/functions.html | 11 +- .../generation/functions/list_tie.html | 61 +++-- .../generation/functions/make_cons.html | 65 +++-- .../generation/functions/make_list.html | 67 +++-- .../generation/functions/make_map.html | 93 ++++--- .../generation/functions/make_set.html | 77 +++--- .../generation/functions/make_vector.html | 67 +++-- .../generation/functions/map_tie.html | 69 +++-- .../container/generation/functions/tiers.html | 41 ++- .../generation/functions/vector_tie.html | 61 +++-- .../container/generation/metafunctions.html | 11 +- .../generation/metafunctions/list_tie.html | 57 ++-- .../generation/metafunctions/make_cons.html | 53 ++-- .../generation/metafunctions/make_list.html | 59 ++-- .../generation/metafunctions/make_map.html | 81 +++--- .../generation/metafunctions/make_set.html | 69 +++-- .../generation/metafunctions/make_vector.html | 59 ++-- .../generation/metafunctions/map_tie.html | 65 +++-- .../generation/metafunctions/vector_tie.html | 57 ++-- doc/html/fusion/container/list.html | 164 +++++------ doc/html/fusion/container/map.html | 155 ++++++----- doc/html/fusion/container/set.html | 143 +++++----- doc/html/fusion/container/vector.html | 141 +++++----- doc/html/fusion/extension.html | 13 +- doc/html/fusion/extension/ext_full.html | 254 +++++++++--------- .../fusion/extension/iterator_facade.html | 153 ++++++----- .../fusion/extension/sequence_facade.html | 125 +++++---- doc/html/fusion/functional.html | 56 ++-- doc/html/fusion/functional/adapters.html | 16 +- .../fusion/functional/adapters/fused.html | 146 +++++----- .../adapters/fused_function_object.html | 145 +++++----- .../functional/adapters/fused_procedure.html | 148 +++++----- .../functional/adapters/unfused_generic.html | 149 +++++----- .../adapters/unfused_lvalue_args.html | 138 +++++----- .../adapters/unfused_rvalue_args.html | 140 +++++----- .../functional/adapters/unfused_typed.html | 168 ++++++------ doc/html/fusion/functional/concepts.html | 13 +- .../fusion/functional/concepts/callable.html | 43 +-- .../functional/concepts/def_callable.html | 121 +++++---- doc/html/fusion/functional/concepts/poly.html | 108 ++++---- .../functional/concepts/reg_callable.html | 89 +++--- doc/html/fusion/functional/generation.html | 11 +- .../functional/generation/functions.html | 14 +- .../generation/functions/mk_fused.html | 82 +++--- .../generation/functions/mk_fused_fobj.html | 87 +++--- .../generation/functions/mk_fused_proc.html | 82 +++--- .../functions/mk_unfused_genrc.html | 79 +++--- .../functions/mk_unfused_lvargs.html | 81 +++--- .../functions/mk_unfused_rvargs.html | 76 +++--- .../functional/generation/metafunctions.html | 17 +- .../generation/metafunctions/mk_fused.html | 42 +-- .../metafunctions/mk_fused_fobj.html | 45 ++-- .../metafunctions/mk_fused_proc.html | 45 ++-- .../metafunctions/mk_unfused_genrc.html | 45 ++-- .../metafunctions/mk_unfused_lvargs.html | 45 ++-- .../metafunctions/mk_unfused_rvargs.html | 42 +-- doc/html/fusion/functional/invocation.html | 14 +- .../functional/invocation/functions.html | 11 +- .../invocation/functions/invoke.html | 85 +++--- .../invocation/functions/invoke_fobj.html | 85 +++--- .../invocation/functions/invoke_proc.html | 87 +++--- .../functional/invocation/metafunctions.html | 14 +- .../invocation/metafunctions/invoke.html | 32 +-- .../invocation/metafunctions/invoke_fobj.html | 42 +-- .../invocation/metafunctions/invoke_proc.html | 40 +-- doc/html/fusion/introduction.html | 43 ++- doc/html/fusion/iterator.html | 21 +- doc/html/fusion/iterator/concepts.html | 29 +- .../concepts/bidirectional_iterator.html | 151 ++++++----- .../iterator/concepts/forward_iterator.html | 217 +++++++-------- .../concepts/random_access_iterator.html | 131 ++++----- doc/html/fusion/iterator/functions.html | 14 +- .../fusion/iterator/functions/advance.html | 87 +++--- .../fusion/iterator/functions/advance_c.html | 87 +++--- doc/html/fusion/iterator/functions/deref.html | 80 +++--- .../fusion/iterator/functions/distance.html | 76 +++--- doc/html/fusion/iterator/functions/next.html | 80 +++--- doc/html/fusion/iterator/functions/prior.html | 80 +++--- doc/html/fusion/iterator/metafunctions.html | 14 +- .../iterator/metafunctions/advance.html | 89 +++--- .../iterator/metafunctions/advance_c.html | 91 +++---- .../fusion/iterator/metafunctions/deref.html | 84 +++--- .../iterator/metafunctions/distance.html | 82 +++--- .../iterator/metafunctions/equal_to.html | 83 +++--- .../fusion/iterator/metafunctions/next.html | 78 +++--- .../fusion/iterator/metafunctions/prior.html | 82 +++--- .../iterator/metafunctions/value_of.html | 84 +++--- doc/html/fusion/iterator/operator.html | 14 +- .../iterator/operator/operator_equality.html | 71 ++--- .../operator/operator_inequality.html | 68 ++--- .../operator/operator_unary_star.html | 87 +++--- doc/html/fusion/notes.html | 159 +++++------ doc/html/fusion/organization.html | 49 ++-- doc/html/fusion/preface.html | 53 ++-- doc/html/fusion/quick_start.html | 149 +++++----- doc/html/fusion/references.html | 11 +- doc/html/fusion/sequence.html | 25 +- doc/html/fusion/sequence/concepts.html | 50 ++-- .../concepts/associative_sequence.html | 135 +++++----- .../concepts/bidirectional_sequence.html | 140 +++++----- .../sequence/concepts/forward_sequence.html | 182 +++++++------ .../concepts/random_access_sequence.html | 163 +++++------ doc/html/fusion/sequence/intrinsic.html | 34 +-- .../fusion/sequence/intrinsic/functions.html | 11 +- .../sequence/intrinsic/functions/at.html | 66 ++--- .../sequence/intrinsic/functions/at_c.html | 66 ++--- .../sequence/intrinsic/functions/at_key.html | 62 ++--- .../sequence/intrinsic/functions/back.html | 60 ++--- .../sequence/intrinsic/functions/begin.html | 74 ++--- .../sequence/intrinsic/functions/empty.html | 56 ++-- .../sequence/intrinsic/functions/end.html | 74 ++--- .../sequence/intrinsic/functions/front.html | 60 ++--- .../sequence/intrinsic/functions/has_key.html | 58 ++-- .../sequence/intrinsic/functions/size.html | 50 ++-- .../sequence/intrinsic/functions/swap.html | 48 ++-- .../sequence/intrinsic/metafunctions.html | 11 +- .../sequence/intrinsic/metafunctions/at.html | 66 ++--- .../intrinsic/metafunctions/at_c.html | 66 ++--- .../intrinsic/metafunctions/at_key.html | 70 ++--- .../intrinsic/metafunctions/back.html | 52 ++-- .../intrinsic/metafunctions/begin.html | 56 ++-- .../intrinsic/metafunctions/empty.html | 58 ++-- .../sequence/intrinsic/metafunctions/end.html | 56 ++-- .../intrinsic/metafunctions/front.html | 54 ++-- .../intrinsic/metafunctions/has_key.html | 60 ++--- .../intrinsic/metafunctions/size.html | 52 ++-- .../intrinsic/metafunctions/swap.html | 40 +-- .../intrinsic/metafunctions/value_at.html | 54 ++-- .../intrinsic/metafunctions/value_at_c.html | 54 ++-- .../intrinsic/metafunctions/value_at_key.html | 56 ++-- doc/html/fusion/sequence/operator.html | 13 +- .../fusion/sequence/operator/comparison.html | 27 +- .../sequence/operator/comparison/equal.html | 72 ++--- .../operator/comparison/greater_than.html | 71 ++--- .../comparison/greater_than_equal.html | 68 ++--- .../operator/comparison/less_than.html | 75 +++--- .../operator/comparison/less_than_equal.html | 71 ++--- .../operator/comparison/not_equal.html | 66 ++--- doc/html/fusion/sequence/operator/i_o.html | 71 +++-- doc/html/fusion/sequence/operator/i_o/in.html | 49 ++-- .../fusion/sequence/operator/i_o/out.html | 49 ++-- doc/html/fusion/support.html | 11 +- doc/html/fusion/support/category_of.html | 77 +++--- doc/html/fusion/support/deduce.html | 61 +++-- doc/html/fusion/support/deduce_sequence.html | 65 ++--- doc/html/fusion/support/is_sequence.html | 83 +++--- doc/html/fusion/support/is_view.html | 81 +++--- doc/html/fusion/support/pair.html | 133 +++++---- doc/html/fusion/support/tag_of.html | 79 +++--- doc/html/fusion/tuple.html | 15 +- .../fusion/tuple/class_template_tuple.html | 24 +- .../class_template_tuple/construction.html | 80 +++--- .../class_template_tuple/element_access.html | 73 ++--- .../relational_operators.html | 148 +++++----- .../tuple_creation_functions.html | 56 ++-- .../tuple_helper_classes.html | 63 ++--- doc/html/fusion/tuple/pairs.html | 68 ++--- doc/html/fusion/view.html | 19 +- doc/html/fusion/view/filter_view.html | 129 ++++----- doc/html/fusion/view/iterator_range.html | 147 +++++----- doc/html/fusion/view/joint_view.html | 137 +++++----- doc/html/fusion/view/reverse_view.html | 112 ++++---- doc/html/fusion/view/single_view.html | 107 ++++---- doc/html/fusion/view/transform_view.html | 202 +++++++------- doc/html/fusion/view/zip_view.html | 136 +++++----- doc/html/index.html | 12 +- test/functional/invoke.cpp | 2 +- test/functional/invoke_function_object.cpp | 2 +- test/functional/invoke_procedure.cpp | 2 +- 260 files changed, 9039 insertions(+), 8720 deletions(-) diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 7f08fcdd..d10ff6f0 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@

    Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey Gurtovoy, Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 340ad860..2d5c7a20 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -3,7 +3,7 @@ Adapted - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,8 +24,7 @@

    - 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 Fusion's - non-intrusive Extension mechanism. + 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 - [13] + [13] .

    Fusion also provides various schemes to make it easy for the user to adapt various data structures, non-intrusively, as full fledged Fusion sequences.

    -

    - - Header -

    +

    + + Header +

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


    -

    [13] +

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

    diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index 2f976dbf..d5fde8a6 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -1,21 +1,21 @@ -BOOST_FUSION_ADAPT_ASSOC_STRUCT + BOOST_FUSION_ADAPT_ASSOC_STRUCT - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,23 @@
    +

    + + Description +

    BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all - the necessary boilerplate to make an arbitrary struct into a model of Random Access Sequence - and Associative + the necessary boilerplate to make an arbitrary struct into a model of Random Access Sequence + and Associative Sequence.

    -
    - - Synopsis -
    +

    + + Synopsis +

     BOOST_FUSION_ADAPT_ASSOC_STRUCT(
         struct_name
    @@ -48,36 +49,38 @@
         ...
         )
     
    -
    - - Semantics -
    +

    + + Semantics +

    - The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence and Associative - Sequence. The sequence of (member_typeN, + The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence and Associative + Sequence. The sequence of (member_typeN, member_nameN, - key_typeN) + key_typeN) triples declare the type, name and key type of each of the struct members that will be part of the sequence.

    - The macro should be used at global scope, and struct_name + The macro should be used at global scope, and struct_name should be the fully namespace qualified name of the struct to be converted.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    -
    - - Example -
    +

    + + Example +

     namespace demo
     {
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index f87c9af3..640267cf 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -1,21 +1,21 @@
     
     
     
    -BOOST_FUSION_ADAPT_STRUCT
    + BOOST_FUSION_ADAPT_STRUCT
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,21 +24,21 @@ +

    + + Description +

    BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the - necessary boilerplate to make an arbitrary struct into a Random + necessary boilerplate to make an arbitrary struct into a Random Access Sequence.

    -
    - - Synopsis -
    +

    + + Synopsis +

     BOOST_FUSION_ADAPT_STRUCT(
         struct_name
    @@ -47,34 +47,35 @@
         ...
         )
     
    -
    - - Semantics -
    +

    + + Semantics +

    - The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence. The sequence of (member_typeN, - member_nameN) + The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence. The sequence of (member_typeN, + member_nameN) pairs declare the type and names of each of the struct members that will be part of the sequence.

    - The macro should be used at global scope, and struct_name + The macro should be used at global scope, and struct_name should be the fully namespace qualified name of the struct to be converted.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    -
    - - Example -
    +

    + + Example +

     namespace demo
     {
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index e497820e..3925b1b0 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -3,7 +3,7 @@
     
     boost::array
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,45 +24,46 @@

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

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     
    -
    - - Model of -
    -

    - This module provides adapters for boost::tuple. - Including the module header makes boost::tuple - a fully conforming Forward + This module provides adapters for boost::tuple. + Including the module header makes boost::tuple + a fully conforming Forward Sequence.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     
    -
    - - Model of -
    - -
    - - Example -
    +

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

    + + See also +

    Boost.Tuple Library diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index df5b3e22..b960669c 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -3,7 +3,7 @@ mpl sequence - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,60 +24,62 @@

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

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/adapted/mpl.hpp>
     #include <boost/fusion/include/mpl.hpp>
     
    -
    - - Model of -
    +

    + + Model of +

    -
    - - Example -
    +

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

    + + See also +

    MPL

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 1fe05fa0..f3ca5a54 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -3,7 +3,7 @@ std::pair - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,46 +24,47 @@

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

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/adapted/std_pair.hpp>
     #include <boost/fusion/include/std_pair.hpp>
     
    -
    - - Model of -
    -
    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 1a160183..ea7053b2 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -3,19 +3,19 @@ Algorithm - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Iteration
    @@ -43,10 +42,10 @@
    Metafunctions
    -

    - - Lazy Evaluation -

    +

    + + Lazy Evaluation +

    Unlike MPL, Fusion algorithms are lazy and non sequence-type preserving. What does that mean? @@ -58,41 +57,41 @@ 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 -

    +

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

    +

    + + Header +

     #include <boost/fusion/algorithm.hpp>
     #include <boost/fusion/include/algorithm.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index a2c906db..1ea968a1 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -3,7 +3,7 @@
     
     Iteration
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Functions
    Metafunctions
    @@ -34,10 +33,10 @@ The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/algorithm/iteration.hpp>
     #include <boost/fusion/include/iteration.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html
    index 376eaeed..155c47c9 100644
    --- a/doc/html/fusion/algorithm/iteration/functions.html
    +++ b/doc/html/fusion/algorithm/iteration/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    fold
    accumulate
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index 66771de7..1eb774cf 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,21 @@
    - - Description + + Description

    - For a sequence Seq, initial - state, and binary function object or function pointer f, - accumulate repeatedly applies binary f - to each element of Seq + 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 + + Synopsis
     template<
    @@ -47,12 +46,12 @@
         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

    +
    @@ -79,16 +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 + 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

    @@ -100,7 +100,7 @@

    - initial_state + initial_state

    @@ -117,14 +117,14 @@

    - f + f

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

    @@ -134,41 +134,41 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - - Example + + Example
     struct make_string
    @@ -182,8 +182,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/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html index aa2ccc54..c1e05d1d 100644 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -3,7 +3,7 @@ fold - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,21 @@
    -fold -
    +fold
    - - Description + + Description

    - For a sequence Seq, initial - state, and binary function object or function pointer f, - fold repeatedly applies binary f - to each element of Seq + 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 + + Synopsis
     template<
    @@ -47,12 +46,12 @@
         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

    +
    @@ -79,16 +78,17 @@ -

    - seq + seq

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

    @@ -100,7 +100,7 @@

    - initial_state + initial_state

    @@ -117,14 +117,14 @@

    - f + f

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

    @@ -134,41 +134,41 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - - Example + + Example
     struct make_string
    @@ -182,8 +182,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/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html index 3f0d3052..4b6265b3 100644 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
         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

    +
    @@ -74,15 +73,16 @@ @@ -110,41 +111,41 @@ -

    - seq + seq

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

    @@ -94,12 +94,13 @@

    - f + f

    - A unary Regular + A unary Regular Callable Object

    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - - Example + + Example
     struct increment
    @@ -156,9 +157,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/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html index 4236387c..198e3a48 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    fold
    accumulate
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index fd7df622..6a74d790 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the result type of accumulate. + Returns the result type of accumulate.

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.37. Parameters

    -
    +

    Table 1.37. Parameters

    +
    @@ -76,12 +75,13 @@ @@ -94,7 +94,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - 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

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

    @@ -128,36 +128,36 @@
    +
    -
    - - Expression +
    + + 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 function object or function pointer 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/iteration/accumulate.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index 6d9022a7..c79e8b6d 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -3,7 +3,7 @@
     
     fold
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -fold -
    +fold
    - - Description + + Description

    - Returns the result type of fold. + Returns the result type of fold.

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.36. Parameters

    -
    +

    Table 1.36. Parameters

    +
    @@ -76,12 +75,13 @@ @@ -94,7 +94,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - 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

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

    @@ -128,36 +128,36 @@
    +
    -
    - - Expression +
    + + 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 function object or function pointer 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/iteration/fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index 576fd07e..1cedc9bb 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -3,7 +3,7 @@
     
     for_each
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@

    - 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 + + Description
    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.38. Parameters

    -
    +

    Table 1.38. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - F + F

    @@ -110,36 +110,36 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/iteration/for_each.hpp>
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index bfd3cc29..83d1b667 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -3,7 +3,7 @@
     
     Query
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Functions
    Metafunctions
    @@ -33,10 +32,10 @@

    The query algorithms provide support for searching and analyzing sequences.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/algorithm/query.hpp>
     #include <boost/fusion/include/query.hpp>
    diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html
    index 012fd520..a77963a7 100644
    --- a/doc/html/fusion/algorithm/query/functions.html
    +++ b/doc/html/fusion/algorithm/query/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    any
    all
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index c0e9f414..5370bcb3 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -3,7 +3,7 @@ all - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,34 +24,33 @@
    -all -
    +all
    - - Description + + 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 + + Synopsis
     template<
         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

    +
    @@ -78,15 +77,16 @@ -

    - seq + seq

    - A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + A model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq

    @@ -98,7 +98,7 @@

    - f + f

    @@ -113,43 +113,43 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - - Example + + Example
     struct odd
    @@ -161,8 +161,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/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html index 8b39b24a..9766fb16 100644 --- a/doc/html/fusion/algorithm/query/functions/any.html +++ b/doc/html/fusion/algorithm/query/functions/any.html @@ -3,7 +3,7 @@ any - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,34 +24,33 @@
    -any -
    +any
    - - Description + + 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 + + Synopsis
     template<
         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

    +
    @@ -78,15 +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 + A model of Forward + Sequence, f(e) must be a valid expression, convertible + to bool, for each + element e in seq

    @@ -98,7 +98,7 @@

    - f + f

    @@ -113,43 +113,43 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - - Example + + Example
     struct odd
    @@ -161,8 +161,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/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html index 5d4dc081..2a276254 100644 --- a/doc/html/fusion/algorithm/query/functions/count.html +++ b/doc/html/fusion/algorithm/query/functions/count.html @@ -3,7 +3,7 @@ count - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
         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

    +
    @@ -74,16 +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 + A model of Forward + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq

    @@ -95,7 +95,7 @@

    - T + T

    @@ -110,46 +110,46 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - - Example + + 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/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html index 50cf54c4..ffa0422d 100644 --- a/doc/html/fusion/algorithm/query/functions/count_if.html +++ b/doc/html/fusion/algorithm/query/functions/count_if.html @@ -3,7 +3,7 @@ count_if - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    - - Description + + 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 + + Synopsis
     template<
         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

    +
    @@ -75,15 +74,16 @@ -

    - seq + seq

    - A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each - element e in seq + A model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for each + element e in seq

    @@ -95,7 +95,7 @@

    - f + f

    @@ -110,45 +110,45 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - - Example + + 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/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html index 786b17c4..7c2499ca 100644 --- a/doc/html/fusion/algorithm/query/functions/find.html +++ b/doc/html/fusion/algorithm/query/functions/find.html @@ -3,7 +3,7 @@ find - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -find -
    +find
    - - Description + + Description

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

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

    Table 1.42. Parameters

    -
    +

    Table 1.42. Parameters

    +
    @@ -79,12 +78,13 @@ @@ -97,7 +97,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -112,49 +112,49 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - - Example + + 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/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html index 500bf764..20b74c2b 100644 --- a/doc/html/fusion/algorithm/query/functions/find_if.html +++ b/doc/html/fusion/algorithm/query/functions/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,19 @@

    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 + + Description
    - - Synopsis + + Synopsis
     template<
    @@ -53,8 +52,8 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.43. Parameters

    -
    +

    Table 1.43. Parameters

    +
    @@ -81,12 +80,13 @@ @@ -99,7 +99,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - F + F

    @@ -115,45 +115,45 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    /algorithm/query/find_if.hpp>

    - - Example + + 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/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html index ca111331..9f613a5a 100644 --- a/doc/html/fusion/algorithm/query/functions/none.html +++ b/doc/html/fusion/algorithm/query/functions/none.html @@ -3,7 +3,7 @@ none - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,34 +24,33 @@
    -none -
    +none
    - - Description + + 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 + + Synopsis
     template<
         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

    +
    @@ -78,15 +77,16 @@ -

    - seq + seq

    - A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + A model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq

    @@ -98,7 +98,7 @@

    - f + f

    @@ -113,43 +113,43 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - - Example + + Example
     struct odd
    @@ -161,8 +161,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/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html index bf9747eb..68581c9e 100644 --- a/doc/html/fusion/algorithm/query/metafunctions.html +++ b/doc/html/fusion/algorithm/query/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    any
    all
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index 6ebfe97b..bcd98c6a 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -3,7 +3,7 @@ all - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -all -
    +all
    - - Description + + Description

    - A metafunction returning the result type of all. + A metafunction returning the result type of all.

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.47. Parameters

    -
    +

    Table 1.47. Parameters

    +
    @@ -76,12 +75,13 @@ @@ -94,12 +94,13 @@ @@ -110,37 +111,38 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - F + F

    - A model of unary Polymorphic + A model of unary Polymorphic Function Object

    +
    -
    - - Expression +
    + + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/query/all.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index 19b6d6df..d7eb4548 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -3,7 +3,7 @@
     
     any
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -any -
    +any
    - - Description + + Description

    - A metafunction returning the result type of any. + A metafunction returning the result type of any.

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.46. Parameters

    -
    +

    Table 1.46. Parameters

    +
    @@ -76,12 +75,13 @@ @@ -94,12 +94,13 @@ @@ -110,37 +111,38 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - F + F

    - A model of unary Polymorphic + A model of unary Polymorphic Function Object

    +
    -
    - - Expression +
    + + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/query/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index 6ceb8cbe..8716f4a2 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -3,7 +3,7 @@
     
     count
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.51. Parameters

    -
    +

    Table 1.51. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -110,34 +110,34 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/query/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index 730864a4..27402618 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -3,7 +3,7 @@
     
     count_if
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.52. Parameters

    -
    +

    Table 1.52. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - Pred + Pred

    @@ -110,34 +110,34 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/query/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index f76ad7c5..642f7077 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -3,7 +3,7 @@
     
     find
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    -find -
    +find
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.49. Parameters

    -
    +

    Table 1.49. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - Model of Forward + Model of Forward Sequence

    - T + T

    @@ -110,36 +110,36 @@
    +
    -
    - - Expression +
    + + 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 + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index 1ef4dbd4..0883d34c 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -3,7 +3,7 @@
     
     find_if
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.50. Parameters

    -
    +

    Table 1.50. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - Pred + Pred

    @@ -111,36 +111,36 @@
    +
    -
    - - Expression +
    + + 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 + + Complexity

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

    - - Header + + Header
     #include <boost/fusion/algorithm/query/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index ed153948..775bb347 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -3,7 +3,7 @@
     
     none
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -none -
    +none
    - - Description + + Description

    - A metafunction returning the result type of none. + A metafunction returning the result type of none.

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.48. Parameters

    -
    +

    Table 1.48. Parameters

    +
    @@ -76,12 +75,13 @@ @@ -94,12 +94,13 @@ @@ -110,37 +111,38 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - F + F

    - A model of unary Polymorphic + A model of unary Polymorphic Function Object

    +
    -
    - - Expression +
    + + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/query/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 8cd0d3cd..3b792522 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -3,7 +3,7 @@
     
     Transformation
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Functions
    Metafunctions
    @@ -40,16 +39,16 @@ [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 -
    +

    + + Header +

     #include <boost/fusion/algorithm/transformation.hpp>
     #include <boost/fusion/include/transformation.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html
    index 8b84f2d7..10863dc6 100644
    --- a/doc/html/fusion/algorithm/transformation/functions.html
    +++ b/doc/html/fusion/algorithm/transformation/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    filter
    filter_if
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index 550c4d8a..6a4b5581 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -3,7 +3,7 @@ clear - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@
    - - Description + + Description

    - clear returns an empty sequence. + clear returns an empty sequence.

    - - Synposis + + 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

    +
    @@ -71,12 +70,13 @@ @@ -86,45 +86,46 @@

    -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -clear(seq);
    +clear(seq);
     

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

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

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html index 089f28b0..cd28e649 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html @@ -3,7 +3,7 @@ erase - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@
    - - Description + + Description

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

    - - Synposis + + Synposis
     template<
         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<
    @@ -51,12 +50,12 @@
         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

    +
    @@ -83,12 +82,13 @@ @@ -101,95 +101,99 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - it1 + it1

    - A model of Forward + A model of Forward Iterator

    - Iterator into seq + Iterator into seq

    - it2 + it2

    - A model of Forward + A model of Forward Iterator

    - Iterator into seq - after it1 + Iterator into seq + after it1

    +
    -
    - - Expression +
    + + Expression Semantics
    -erase(seq, pos);
    +erase(seq, pos);
     

    - Return type: A model of Forward + 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 Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html index 1addb688..15803534 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html @@ -3,7 +3,7 @@ erase_key - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,23 @@
    - - Description + + Description

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

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

    Table 1.64. Parameters

    -
    +

    Table 1.64. Parameters

    +
    @@ -77,12 +78,13 @@ @@ -95,7 +97,7 @@ -

    - seq + seq

    - A model of Associative + A model of Associative Sequence

    - Key + Key

    @@ -110,46 +112,47 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -erase_key<Key>(seq);
    +erase_key<Key>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html index 93e5f651..72e7c175 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html @@ -3,7 +3,7 @@ filter - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
         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

    +
    @@ -74,12 +73,13 @@ @@ -92,7 +92,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -107,48 +107,49 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -filter<T>(seq);
    +filter<T>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html index 4e31dd82..d0c7000f 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html @@ -3,7 +3,7 @@ filter_if - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    - - Description + + 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 + + Synopsis
     template<
         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

    +
    @@ -75,12 +74,13 @@ @@ -93,7 +93,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - Pred + Pred

    @@ -109,49 +109,50 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -filter_if<Pred>(seq);
    +filter_if<Pred>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html index a46dfb3c..ac20b5bc 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html @@ -3,7 +3,7 @@ insert - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synposis
     template<
    @@ -47,8 +46,8 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.65. Parameters

    -
    +

    Table 1.65. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -93,12 +93,13 @@ @@ -111,7 +112,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - pos + pos

    - A model of Forward + A model of Forward Iterator

    - t + t

    @@ -126,49 +127,50 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -insert(seq, p, t);
    +insert(seq, p, t);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html index 9b326e0b..ed877215 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html @@ -3,7 +3,7 @@ insert_range - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + Description

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

    - - Synposis + + Synposis
     template<
    @@ -44,12 +43,12 @@
         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

    +
    @@ -76,12 +75,13 @@ @@ -94,12 +94,13 @@ @@ -112,12 +113,13 @@ @@ -128,49 +130,50 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - pos + pos

    - A model of Forward + A model of Forward Iterator

    - range + range

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -insert(seq, pos, range);
    +insert(seq, pos, range);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html index d769e569..52804fef 100644 --- a/doc/html/fusion/algorithm/transformation/functions/join.html +++ b/doc/html/fusion/algorithm/transformation/functions/join.html @@ -3,7 +3,7 @@ join - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +24,28 @@
    -join -
    +join
    - - Description + + Description

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

    - - Synopsis + + 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

    +
    @@ -73,12 +72,13 @@ @@ -91,12 +91,13 @@ @@ -107,49 +108,50 @@ -

    - lhs + lhs

    - A model of Forward + A model of Forward Sequence

    - rhs + rhs

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -join(lhs, rhs);
    +join(lhs, rhs);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html index 6d9d07da..f82f9ed2 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html @@ -3,7 +3,7 @@ pop_back - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@
    - - Description + + Description

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

    - - Synopsis + + 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

    +
    @@ -71,12 +70,13 @@ @@ -86,47 +86,48 @@

    -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -pop_back(seq);
    +pop_back(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html index 5a4ff794..526e745b 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html @@ -3,7 +3,7 @@ pop_front - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@
    - - Description + + Description

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

    - - Synopsis + + 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

    +
    @@ -71,12 +70,13 @@ @@ -86,47 +86,48 @@

    -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -pop_front(seq);
    +pop_front(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html index 7722b3d2..ea79a915 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
         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

    +
    @@ -74,12 +73,13 @@ @@ -92,7 +92,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - t + t

    @@ -107,47 +107,48 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/push_back.hpp>
     #include <boost/fusion/include/push_back.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html index d1013f95..3528ce78 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
         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

    +
    @@ -74,12 +73,13 @@ @@ -92,7 +92,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - t + t

    @@ -107,48 +107,49 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html index bab0a518..259c052f 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html @@ -3,7 +3,7 @@ remove - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
         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

    +
    @@ -74,12 +73,13 @@ @@ -92,7 +92,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -107,48 +107,49 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -remove<T>(seq);
    +remove<T>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html index 59773b47..1d875723 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html @@ -3,7 +3,7 @@ remove_if - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + 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 + + Synopsis
     template<
         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

    +
    @@ -74,12 +73,13 @@ @@ -92,7 +92,7 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - Pred + Pred

    @@ -108,49 +108,50 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -remove_if<Pred>(seq);
    +remove_if<Pred>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html index cf9cd37e..a7c7c7e0 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html @@ -3,7 +3,7 @@ replace - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
         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

    +
    @@ -75,17 +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 + 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

    @@ -97,7 +97,7 @@

    - old_value + old_value

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

    - new_value + new_value

    @@ -129,47 +129,48 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -replace(seq, old_value, new_value);
    +replace(seq, old_value, new_value);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html index 567fe11f..2345f1d5 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html @@ -3,7 +3,7 @@ replace_if - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,32 +24,31 @@
    - - Description + + 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 + + Synopsis
     template<
         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

    +
    @@ -76,12 +75,13 @@ @@ -94,14 +94,14 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - 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

    @@ -128,45 +128,46 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -replace_if(seq, f, new_value);
    +replace_if(seq, f, new_value);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - - Example + + Example
     struct odd
    @@ -178,7 +179,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/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html index 35bac585..6360f6ae 100644 --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html @@ -3,7 +3,7 @@ reverse - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@
    - - Description + + Description

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

    - - Synposis + + 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

    +
    @@ -71,12 +70,13 @@ @@ -86,46 +86,47 @@

    -

    - seq + seq

    - A model of Bidirectional + A model of Bidirectional Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -reverse(seq);
    +reverse(seq);
     

    - Return type: A model of Bidirectional + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html index d7676641..72062220 100644 --- a/doc/html/fusion/algorithm/transformation/functions/transform.html +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html @@ -3,7 +3,7 @@ transform - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,21 @@
    - - Description + + Description

    - 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. + 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 + + Unary version synopsis
    @@ -47,12 +46,12 @@
         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,12 +78,13 @@ @@ -97,15 +97,15 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - f + f

    - 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. + 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.

    @@ -115,28 +115,29 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -transform(seq, f);
    +transform(seq, f);
     

    - Return type: A model of Forward + 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 + + Binary version synopsis
    @@ -145,12 +146,12 @@
         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

    +
    @@ -177,12 +178,13 @@ @@ -195,12 +197,13 @@ @@ -213,16 +216,16 @@ -

    - seq1 + seq1

    - A model of Forward + A model of Forward Sequence

    - seq2 + seq2

    - A model of Forward + A model of Forward Sequence

    - f + 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 + 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

    @@ -232,35 +235,36 @@
    +
    -

    - Return type: A model of Forward +

    + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - - Example + + Example
     struct triple
    @@ -273,7 +277,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/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html index ed89d8ad..ed367e99 100644 --- a/doc/html/fusion/algorithm/transformation/functions/zip.html +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html @@ -3,7 +3,7 @@ zip - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    -zip -
    +zip
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -45,12 +44,12 @@
         ...
         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

    +
    @@ -76,12 +75,13 @@ @@ -91,53 +91,54 @@

    -

    - seq1 to seqN + seq1 to seqN

    - Each sequence is a model of Forward + Each sequence is a model of Forward Sequence.

    +
    -
    - - Expression +
    + + Expression Semantics
    -zip(seq1, seq2, ... seqN);
    +zip(seq1, seq2, ... seqN);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - - Example + + 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/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html index 89b55fd6..f6bad707 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    filter
    filter_if
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index c1ba3c21..a4487787 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -3,7 +3,7 @@ clear - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.82. Parameters

    -
    +

    Table 1.82. Parameters

    +
    @@ -75,7 +74,7 @@ -

    - Sequence + Sequence

    @@ -89,33 +88,34 @@

    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::clear<Sequence>::type
    +result_of::clear<Sequence>::type
     

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

    - Semantics: Returns an empty sequence. + Semantics: Returns an empty sequence.

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index 2a67cdc1..b09ce582 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -3,7 +3,7 @@
     
     erase
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@

    - 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 + + Description
    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.83. Parameters

    -
    +

    Table 1.83. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,12 +95,13 @@ @@ -113,12 +114,13 @@ @@ -129,46 +131,48 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - It1 + It1

    - A model of Forward + A model of Forward Iterator

    - It2 + It2

    - A model of Forward + A model of Forward Iterator

    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::erase<Sequence, It1>::type
    +result_of::erase<Sequence, It1>::type
     

    - Return type: A model of Forward + 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 Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index fb8856f2..c063d91f 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -3,7 +3,7 @@
     
     erase_key
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.84. Parameters

    -
    +

    Table 1.84. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Associative + A model of Associative Sequence

    - Key + Key

    @@ -110,35 +110,36 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::erase_key<Sequence, Key>::type
    +result_of::erase_key<Sequence, Key>::type
     

    - Return type: A model of Associative + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index 93d0e2c4..22688844 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -3,7 +3,7 @@
     
     filter
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.73. Parameter

    -
    +

    Table 1.73. Parameter

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -110,37 +110,38 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::filter<Sequence, T>::type
    +result_of::filter<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 47194fdc..2d696bc8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -3,7 +3,7 @@
     
     filter_if
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,19 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -50,8 +49,8 @@
     };
     
    -

    Table 1.74. Parameter

    -
    +

    Table 1.74. Parameter

    +
    @@ -78,12 +77,13 @@ @@ -96,7 +96,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - Pred + Pred

    @@ -112,36 +112,37 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::filter_if<Sequence, Pred>::type
    +result_of::filter_if<Sequence, Pred>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index feb560bc..9f1bc538 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -3,7 +3,7 @@
     
     insert
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -50,8 +49,8 @@
     };
     
    -

    Table 1.85. Parameters

    -
    +

    Table 1.85. Parameters

    +
    @@ -78,12 +77,13 @@ @@ -96,12 +96,13 @@ @@ -114,7 +115,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - Position + Position

    - A model of Forward + A model of Forward Iterator

    - T + T

    @@ -129,36 +130,37 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::insert<Sequence, Position, T>::type
    +result_of::insert<Sequence, Position, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index 08113676..b70d3a87 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -3,7 +3,7 @@
     
     insert_range
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -50,8 +49,8 @@
     };
     
    -

    Table 1.86. Parameters

    -
    +

    Table 1.86. Parameters

    +
    @@ -78,12 +77,13 @@ @@ -96,12 +96,13 @@ @@ -114,12 +115,13 @@ @@ -130,36 +132,37 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - Position + Position

    - A model of Forward + A model of Forward Iterator

    - Range + Range

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::insert_range<Sequence, Position, Range>::type
    +result_of::insert_range<Sequence, Position, Range>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 2b0d7fb6..93f693ed 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -3,7 +3,7 @@
     
     join
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -join -
    +join
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -48,33 +47,34 @@
     };
     
    - - Expression + + Expression Semantics
    -result_of::join<LhSequence, RhSequence>::type
    +result_of::join<LhSequence, RhSequence>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 523a3812..ad364d9c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -3,7 +3,7 @@
     
     pop_back
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.87. Parameters

    -
    +

    Table 1.87. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -90,35 +90,36 @@

    -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::pop_back<Sequence>::type
    +result_of::pop_back<Sequence>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/tranformation/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 9cbf01ab..11a37984 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -3,7 +3,7 @@
     
     pop_front
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.88. Parameters

    -
    +

    Table 1.88. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -90,28 +90,29 @@

    -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::pop_front<Sequence>::type
    +result_of::pop_front<Sequence>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 37389e12..8e276645 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.89. Parameters

    -
    +

    Table 1.89. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -110,29 +110,30 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::push_back<Sequence, T>::type
    +result_of::push_back<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index bf20eb9d..ad67daff 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.90. Parameters

    -
    +

    Table 1.90. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -110,29 +110,30 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::push_front<Sequence, T>::type
    +result_of::push_front<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index 0096701d..9a3acace 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -3,7 +3,7 @@ remove - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,19 +24,18 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.79. Parameters

    -
    +

    Table 1.79. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -110,37 +110,38 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::remove<Sequence, T>::type
    +result_of::remove<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 44d4c51f..44468eb4 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -3,7 +3,7 @@
     
     remove_if
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,19 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -50,8 +49,8 @@
     };
     
    -

    Table 1.80. Parameters

    -
    +

    Table 1.80. Parameters

    +
    @@ -78,12 +77,13 @@ @@ -96,7 +96,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - Pred + Pred

    @@ -107,41 +107,42 @@

    - Remove elements which evaluate to boost::mpl::true_ + Remove elements which evaluate to boost::mpl::true_

    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::remove_if<Sequence, Pred>::type
    +result_of::remove_if<Sequence, Pred>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 99a1869c..af240b9d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -3,7 +3,7 @@
     
     replace
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + 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 + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.77. Parameters

    -
    +

    Table 1.77. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - T + T

    @@ -110,34 +110,35 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::replace<Sequence,T>::type
    +result_of::replace<Sequence,T>::type
     

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

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

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index e9b535ff..26ac64bb 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -3,7 +3,7 @@
     
     replace_if
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,20 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -50,8 +50,8 @@
     };
     
    -

    Table 1.78. Parameters

    -
    +

    Table 1.78. Parameters

    +
    @@ -78,12 +78,13 @@ @@ -96,12 +97,13 @@ @@ -114,7 +116,7 @@ -

    - Sequence + Sequence

    - A model of Forward + A model of Forward Sequence

    - F + F

    - A model of unary Polymorphic + A model of unary Polymorphic Function Object

    - T + T

    @@ -129,34 +131,35 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::replace_if<Sequence,F,T>::type
    +result_of::replace_if<Sequence,F,T>::type
     

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

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

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index 3e69d744..84a08e9f 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -3,7 +3,7 @@
     
     reverse
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.81. Parameters

    -
    +

    Table 1.81. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -90,34 +90,35 @@

    -

    - Sequence + Sequence

    - A model of Bidirectional + A model of Bidirectional Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
    -result_of::reverse<Sequence>::type
    +result_of::reverse<Sequence>::type
     

    - Return type: A model of Bidirectional + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index 094a88fd..9f9c7e0f 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -3,7 +3,7 @@
     
     transform
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,21 @@
    - - Description + + Description

    - 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. + 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 + + Unary version synopsis
    @@ -47,12 +46,12 @@
         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.75. Parameters

    -
    +

    Table 1.75. Parameters

    +
    @@ -79,12 +78,13 @@ @@ -97,15 +97,15 @@ -

    - seq + seq

    - A model of Forward + A model of Forward Sequence

    - f + f

    - 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. + 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.

    @@ -115,28 +115,29 @@
    +
    -
    - - Expression +
    + + Expression Semantics
    -transform(seq, f);
    +transform(seq, f);
     

    - Return type: A model of Forward + 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 + + Binary version synopsis
    @@ -145,12 +146,12 @@
         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.76. Parameters

    -
    +

    Table 1.76. Parameters

    +
    @@ -177,12 +178,13 @@ @@ -195,12 +197,13 @@ @@ -213,16 +216,16 @@ -

    - seq1 + seq1

    - A model of Forward + A model of Forward Sequence

    - seq2 + seq2

    - A model of Forward + A model of Forward Sequence

    - f + 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 + 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

    @@ -232,35 +235,36 @@
    +
    -

    - Return type: A model of Forward +

    + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - - Example + + Example
     struct triple
    @@ -273,7 +277,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/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html index 701fef69..2cb12b87 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html @@ -3,7 +3,7 @@ zip - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    -zip -
    +zip
    - - Description + + Description

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

    - - Synopsis + + Synopsis
     template<
    @@ -51,38 +50,38 @@
     };
     
    - - Expression + + 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 + + Complexity

    Constant.

    - - Header + + Header
     #include <boost/fusion/algorithm/transformation/zip.hpp>
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
    index 1b6c2bca..8c356fee 100644
    --- a/doc/html/fusion/change_log.html
    +++ b/doc/html/fusion/change_log.html
    @@ -3,7 +3,7 @@
     
     Change log
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@

    This section summarizes significant changes to the Fusion library.

    • - Sep 27, 2006: Added boost::tuple + Sep 27, 2006: Added boost::tuple support. (Joel de Guzman)
    • - Nov 17, 2006: Added boost::variant + Nov 17, 2006: Added boost::variant support. (Joel de Guzman)
    • @@ -48,12 +47,12 @@ May 8, 2007: Added associative struct adapter. (Dan Marsden)
    • - Dec 20, 2007: Removed boost::variant + Dec 20, 2007: Removed boost::variant support. After thorough investigation, I think now that the move to make variant a fusion sequence is rather quirky. A variant will always have a size==1 regardless of the number of types it can contain and there's no way to know at compile time what it contains. Iterating over its types is simply - wrong. All these imply that the variant is not + wrong. All these imply that the variant is not a fusion sequence. (Joel de Guzman)
    diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index 774aa517..a08ca223 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -3,19 +3,20 @@ Container - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    vector
    cons
    @@ -45,13 +45,13 @@

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

    -

    - - Header -

    +

    + + Header +

     #include <boost/fusion/container.hpp>
     #include <boost/fusion/include/container.hpp>
    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index cf605a60..c98541f8 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -3,7 +3,7 @@
     
     cons
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,43 +24,43 @@

    -cons -

    -
    - - Description -
    +cons
    +

    + + 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 + 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 + each element is peculiarly constant (see Recursive Inlined Functions).

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/container/list/cons.hpp>
     #include <boost/fusion/include/cons.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <typename Car, typename Cdr = nil>
     struct cons;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

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

    - Car + Car

    @@ -104,7 +104,7 @@

    - Cdr + Cdr

    @@ -114,59 +114,62 @@

    - nil + nil

    -
    - - Model of -
    - +

    + + Model of +

    +

    Notation

    -
    nil
    +
    nil

    - An empty cons + An empty cons

    -
    C
    +
    C

    - A cons type + A cons type

    -
    l, - l2
    +
    l, + l2

    - Instances of cons + Instances of cons

    -
    car
    +
    car

    An arbitrary data

    -
    cdr
    +
    cdr

    - Another cons list + Another cons list

    -
    s
    +
    s

    - A Forward Sequence + A Forward Sequence

    -
    N
    +
    N

    An MPL Integral Constant

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -190,7 +193,7 @@ @@ -227,80 +230,81 @@

    - nil() + nil()

    @@ -202,7 +205,7 @@

    - C() + C()

    @@ -214,12 +217,12 @@

    - C(car) + C(car)

    - Creates a cons with car + Creates a cons with car head and default constructed tail.

    - 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. + Copy constructs a cons from a Forward + Sequence, s.

    - l = - s + l = + s

    - Assigns to a cons, l, - from a Forward - Sequence, s. + Assigns to a cons, l, + from a Forward + 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;
     
    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html index ee12e4e5..7b0a4c9d 100644 --- a/doc/html/fusion/container/conversion.html +++ b/doc/html/fusion/container/conversion.html @@ -3,7 +3,7 @@ Conversion - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,19 @@

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

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/include/convert.hpp>
     
    diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html index 58d5595e..62891875 100644 --- a/doc/html/fusion/container/conversion/functions.html +++ b/doc/html/fusion/container/conversion/functions.html @@ -3,7 +3,7 @@ Functions - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    as_list
    as_vector
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index 629247c7..1c0c7a3d 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -3,7 +3,7 @@ as_list - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Convert a fusion sequence to a list. + Convert a fusion sequence to a list.

    - - Synopsis + + Synopsis
     template <typename Sequence>
    @@ -47,8 +46,8 @@
     as_list(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -76,7 +75,7 @@

    - seq + seq

    @@ -92,34 +91,34 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - - Example + + Example
    -as_list(make_vector('x', 123, "hello"))
    +as_list(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html index 1337429b..19299e93 100644 --- a/doc/html/fusion/container/conversion/functions/as_map.html +++ b/doc/html/fusion/container/conversion/functions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Convert a fusion sequence to a map. + Convert a fusion sequence to a map.

    - - Synopsis + + Synopsis
     template <typename Sequence>
    @@ -47,8 +46,8 @@
     as_map(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -76,7 +75,7 @@

    - seq + seq

    @@ -92,41 +91,41 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - - Example + + 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/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html index c901224b..edede9ee 100644 --- a/doc/html/fusion/container/conversion/functions/as_set.html +++ b/doc/html/fusion/container/conversion/functions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Convert a fusion sequence to a set. + Convert a fusion sequence to a set.

    - - Synopsis + + Synopsis
     template <typename Sequence>
    @@ -47,8 +46,8 @@
     as_set(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -76,7 +75,7 @@

    - seq + seq

    @@ -92,38 +91,38 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - - Example + + Example
    -as_set(make_vector('x', 123, "hello"))
    +as_set(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html index f3f30411..d390bd72 100644 --- a/doc/html/fusion/container/conversion/functions/as_vector.html +++ b/doc/html/fusion/container/conversion/functions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Convert a fusion sequence to a vector. + Convert a fusion sequence to a vector.

    - - Synopsis + + Synopsis
     template <typename Sequence>
    @@ -47,8 +46,8 @@
     as_vector(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -76,7 +75,7 @@

    - seq + seq

    @@ -92,34 +91,34 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - - Example + + Example
    -as_vector(make_list('x', 123, "hello"))
    +as_vector(make_list('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html index 7ae55d1d..9e033417 100644 --- a/doc/html/fusion/container/conversion/metafunctions.html +++ b/doc/html/fusion/container/conversion/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    as_list
    as_vector
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index 39085c5d..ffe16a67 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -3,7 +3,7 @@ as_list - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@
    - - Description + + Description

    - Returns the result type of as_list. + Returns the result type of as_list.

    - - Synopsis + + Synopsis
     template <typename Sequence>
     struct as_list;
     
    - - Parameters + + Parameters
    @@ -71,12 +70,12 @@

    - Sequence + Sequence

    - A fusion Sequence + A fusion Sequence

    @@ -87,35 +86,35 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - - Example + + Example
    -result_of::as_list<vector<char, int> >::type
    +result_of::as_list<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html index 66c08547..674cd94a 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@
    - - Description + + Description

    - Returns the result type of as_map. + Returns the result type of as_map.

    - - Synopsis + + Synopsis
     template <typename Sequence>
     struct as_map;
     
    - - Parameters + + Parameters
    @@ -71,12 +70,12 @@

    - Sequence + Sequence

    - A fusion Sequence + A fusion Sequence

    @@ -87,42 +86,42 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - - Example + + 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/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html index 4d4ab6bc..a1df58c6 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@
    - - Description + + Description

    - Returns the result type of as_set. + Returns the result type of as_set.

    - - Synopsis + + Synopsis
     template <typename Sequence>
     struct as_set;
     
    - - Parameters + + Parameters
    @@ -71,12 +70,12 @@

    - Sequence + Sequence

    - A fusion Sequence + A fusion Sequence

    @@ -87,39 +86,39 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - - Example + + Example
    -result_of::as_set<vector<char, int> >::type
    +result_of::as_set<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html index 92085c12..785ce953 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@
    - - Description + + Description

    - Returns the result type of as_vector. + Returns the result type of as_vector.

    - - Synopsis + + Synopsis
     template <typename Sequence>
     struct as_vector;
     
    - - Parameters + + Parameters
    @@ -71,12 +70,12 @@

    - Sequence + Sequence

    - A fusion Sequence + A fusion Sequence

    @@ -87,35 +86,35 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - - Example + + Example
    -result_of::as_vector<list<char, int> >::type
    +result_of::as_vector<list<char, int> >::type
     
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html index 7bfc381d..45d6a9c1 100644 --- a/doc/html/fusion/container/generation.html +++ b/doc/html/fusion/container/generation.html @@ -3,7 +3,7 @@ Generation - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@

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

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/container/generation.hpp>
     #include <boost/fusion/include/generation.hpp>
    diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html
    index 5a0c3494..20861a17 100644
    --- a/doc/html/fusion/container/generation/functions.html
    +++ b/doc/html/fusion/container/generation/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    make_list
    make_cons
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index 11b76cf8..1d9ab235 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -3,7 +3,7 @@ list_tie - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,38 +24,37 @@
    - - Description + + Description

    - Constructs a tie using a list sequence. + Constructs a tie using a list sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -83,49 +82,49 @@

    - 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 + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - - Example + + Example
     int i = 123;
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index 5256366d..f010150f 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,33 +24,32 @@
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -79,12 +78,12 @@

    - car + car

    - Instance of Car + Instance of Car

    @@ -96,12 +95,12 @@

    - cdr + cdr

    - Instance of Cdr + Instance of Cdr

    @@ -113,43 +112,43 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - - Example + + Example
     make_cons('x', make_cons(123))
     
    - - See + + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 9b6e652e..e0746a10 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -3,7 +3,7 @@ make_list - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,39 +24,38 @@
    - - Description + + Description

    - Create a list + Create a list from one or more values.

    - - Synopsis + + 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 + + Parameters
    @@ -84,59 +83,59 @@

    - 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 + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - - Example + + Example
     make_list(123, "hello", 12.5)
     
    - - See + + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index b674053c..a274b9b2 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -3,7 +3,7 @@ make_map - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,42 +24,41 @@
    - - Description + + Description

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

    - - Synopsis + + 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 - [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 + + Parameters
    @@ -88,9 +87,9 @@

    - K0, + K0, K1,... - KN + KN

    @@ -100,83 +99,83 @@

    - 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 + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - - Example + + Example
     make_map(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"))
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"))
     
    - - See + + See also

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



    -

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

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

    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index f21f9bca..a1e64608 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,40 +24,39 @@
    - - Description + + Description

    - Create a set + Create a set from one or more values.

    - - Synopsis + + 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 - [8] - 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 + [8] + 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 + + Parameters
    @@ -85,69 +84,69 @@

    - 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 + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - - Example + + Example
     make_set(123, "hello", 12.5)
     
    - - See + + See also

    - boost::ref + boost::ref



    -

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

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

    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index 876ce94d..f0999784 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,39 +24,38 @@
    - - Description + + Description

    - Create a vector + Create a vector from one or more values.

    - - Synopsis + + 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 + + Parameters
    @@ -84,59 +83,59 @@

    - 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 + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - - Example + + Example
     make_vector(123, "hello", 12.5)
     
    - - See + + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 3ca69741..02c64edd 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -3,7 +3,7 @@ map_tie - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,38 +24,37 @@
    - - Description + + Description

    - Constructs a tie using a map sequence. + Constructs a tie using a map sequence.

    - - Synopsis + + 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<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 + 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 + + Parameters
    @@ -84,9 +83,9 @@ @@ -104,51 +103,51 @@

    - K0, + K0, K1,... - KN + KN

    @@ -96,7 +95,7 @@

    - The key types associated with each of the x1,x2,...,xN + The key types associated with each of the x1,x2,...,xN values

    - x0, + x0, x1,... - xN + xN

    - Instances of T0, T1,... TN + Instances of T0, T1,... TN

    - The arguments to map_tie + The arguments to map_tie

    - - Expression + + Expression Semantics
     map_tie<K0, K1,... KN>(x0, x1,... xN);
     

    - Return type: map<pair<K0, D0&>, pair<K1, - D1&>,... pair<KN, + 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 + Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - - Header + + Header
     #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - - Example + + Example
     struct int_key;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 783aaa72..5f852ba9 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -3,7 +3,7 @@
     
     Tiers
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@

    Tiers are sequences, where all elements are non-const reference types. They are constructed with a call to a couple of tie @@ -33,9 +32,9 @@ flavors.

    Example: @@ -43,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)) - [10] + 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)) + [10] .

    @@ -59,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;
     

    @@ -68,8 +67,8 @@ when calling functions which return sequences.

    - - Ignore + + Ignore

    There is also an object called ignore which allows @@ -79,13 +78,13 @@

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


    -

    [10] +

    [10] see Boost.Ref - for details about ref + for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 8e5cbcf4..0d816ce5 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -3,7 +3,7 @@ vector_tie - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,38 +24,37 @@
    - - Description + + Description

    - Constructs a tie using a vector sequence. + Constructs a tie using a vector sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -83,49 +82,49 @@

    - 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 + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - - Example + + Example
     int i = 123;
    diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html
    index c4e93919..e03be94d 100644
    --- a/doc/html/fusion/container/generation/metafunctions.html
    +++ b/doc/html/fusion/container/generation/metafunctions.html
    @@ -3,7 +3,7 @@
     
     MetaFunctions
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    make_list
    make_cons
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index 8d91da55..97396d3a 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -3,7 +3,7 @@ list_tie - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,37 +24,36 @@
    - - Description + + Description

    - Returns the result type of list_tie. + Returns the result type of list_tie.

    - - Synopsis + + 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 + 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 + + Parameters
    @@ -82,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -94,37 +93,37 @@

    - The arguments to list_tie + The arguments to list_tie

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - - Example + + Example
     result_of::list_tie<int, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index 9d0055fa..92a31faa 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@
    - - Description + + Description

    - Returns the result type of make_cons. + Returns the result type of make_cons.

    - - Synopsis + + Synopsis
     template <typename Car, typename Cdr = nil>
     struct make_cons;
     
    - - Parameters + + Parameters
    @@ -72,7 +71,7 @@

    - Car + Car

    @@ -89,12 +88,12 @@

    - Cdr + Cdr

    - A cons + A cons

    @@ -106,34 +105,34 @@
    - - Expression + + 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. + 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 + Semantics: Create a cons from Car + (head) and optional Cdr (tail).

    - - Header + + Header
     #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - - Example + + Example
     result_of::make_cons<char, result_of::make_cons<int>::type>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index f1acacd1..1442913b 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
    @@ -3,7 +3,7 @@
     
     make_list
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,37 +24,36 @@
    - - Description + + Description

    - Returns the result type of make_list. + Returns the result type of make_list.

    - - Synopsis + + 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 + 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 + + Parameters
    @@ -82,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -94,38 +93,38 @@

    - Template arguments to make_list + Template arguments to make_list

    - - Expression + + Expression Semantics
     result_of::make_list<T0, T1,... TN>::type
     

    - Return type: A list with elements of types - converted following the rules for element + 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 + + Header
     #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - - Example + + Example
     result_of::make_list<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index 705c764a..72ba51af 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
    @@ -3,7 +3,7 @@
     
     make_map
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the result type of make_map. + Returns the result type of make_map.

    - - Synopsis + + Synopsis
     template <
    @@ -44,20 +43,20 @@
     struct make_map;
     

    - 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 + + Parameters
    @@ -86,9 +85,9 @@

    - K0, + K0, K1,... - KN + KN

    @@ -98,16 +97,16 @@

    - Keys associated with T0, T1,... TN + Keys associated with T0, T1,... TN

    - T0, + T0, T1,... - TN + TN

    @@ -117,60 +116,60 @@

    - Data associated with keys K0, K1,... KN + Data associated with keys K0, K1,... KN

    - - Expression + + 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 + 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 + 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 + + Header
     #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - - Example + + Example
     result_of::make_map<int, double, char, double>::type
     
    - - See + + See also

    - fusion::pair + fusion::pair



    -

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

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

    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 5c0b56cc..284be2e8 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,38 +24,37 @@
    - - Description + + Description

    - Returns the result type of make_set. + Returns the result type of make_set.

    - - Synopsis + + Synopsis
     template <typename T0, typename T1,... typename TN>
     struct make_set;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [11] - 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 + [11] + 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 + + Parameters
    @@ -83,9 +82,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -95,51 +94,51 @@

    - The arguments to make_set + The arguments to make_set

    - - Expression + + Expression Semantics
     result_of::make_set<T0, T1,... TN>::type
     

    - Return type: A set with elements of types converted - following the rules for element + 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 + + Header
     #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - - Example + + Example
     result_of::make_set<int, char, double>::type
     


    -

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

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

    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index 685f6184..920036ae 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,37 +24,36 @@
    - - Description + + Description

    - Returns the result type of make_vector. + Returns the result type of make_vector.

    - - Synopsis + + 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 + 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 + + Parameters
    @@ -82,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -94,38 +93,38 @@

    - Template arguments to make_vector + Template arguments to make_vector

    - - Expression + + Expression Semantics
     result_of::make_vector<T0, T1,... TN>::type
     

    - Return type: A vector with elements of types - converted following the rules for element + 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 + + Header
     #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - - Example + + Example
     result_of::make_vector<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index 30d5a780..4e8f0c13 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -3,7 +3,7 @@
     
     map_tie
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,37 +24,36 @@
    - - Description + + Description

    - Returns the result type of map_tie. + Returns the result type of map_tie.

    - - Synopsis + + 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 + 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 + + Parameters
    @@ -83,9 +82,9 @@

    - K0, + K0, K1,... - KN + KN

    @@ -95,16 +94,16 @@

    - The key types for map_tie + The key types for map_tie

    - D0, + D0, D1,... - DN + DN

    @@ -114,39 +113,39 @@

    - The arguments types for map_tie + The arguments types for map_tie

    - - Expression + + Expression Semantics
     result_of::map_tie<K0, K1,... KN, D0, D1,... DN>::type;
     

    - Return type: map<pair<K0, D0&>, pair<K1, - D1&>,... pair<KN, + 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 + Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - - Header + + Header
     #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - - Example + + Example
     struct int_key;
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index 823fbeea..e4a40918 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -3,7 +3,7 @@
     
     vector_tie
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,37 +24,36 @@
    - - Description + + Description

    - Returns the result type of vector_tie. + Returns the result type of vector_tie.

    - - Synopsis + + 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 + 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 + + Parameters
    @@ -82,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -94,37 +93,37 @@

    - The arguments to vector_tie + The arguments to vector_tie

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - - Example + + Example
     result_of::vector_tie<int, double>::type
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index 2256df89..8cfac083 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/list.html
    @@ -3,7 +3,7 @@
     
     list
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,33 +24,33 @@

    -list -

    -
    - - Description -
    +list
    +

    + + Description +

    - list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector + 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). + runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/container/list.hpp>
     #include <boost/fusion/include/list.hpp>
     #include <boost/fusion/container/list/list_fwd.hpp>
     #include <boost/fusion/include/list_fwd.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <
         typename T0 = unspecified
    @@ -62,26 +62,26 @@
     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 -
    +

    + + Template parameters +

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

    - T0...TN + T0...TN

    @@ -123,44 +123,47 @@
    -
    - - Model of -
    - +

    + + Model of +

    +

    Notation

    -
    L
    +
    L

    - A list type + A list type

    -
    l
    +
    l

    - An instance of list + An instance of list

    -
    e0...en
    +
    e0...en

    Heterogeneous values

    -
    s
    +
    s

    - A Forward Sequence + A Forward Sequence

    -
    N
    +
    N

    An MPL Integral Constant

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -184,7 +187,7 @@

    - L() + L()

    @@ -196,78 +199,79 @@

    - L(e0, e1,... - en) + L(e0, e1,... + 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. + Copy constructs a list from a Forward + Sequence, s.

    - l = - s + l = + s

    - Assigns to a list, l, - from a Forward - Sequence, s. + Assigns to a list, l, + from a Forward + 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;
     
    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html index 37f435a4..c0f6098c 100644 --- a/doc/html/fusion/container/map.html +++ b/doc/html/fusion/container/map.html @@ -3,7 +3,7 @@ map - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,35 +24,35 @@

    -map -

    -
    - - Description -
    +map
    +

    + + Description +

    - map is an Associative + map is an Associative Sequence of heteregenous typed data elements. Each element is a key/data - pair (see fusion::pair) + 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). + (see Overloaded Functions).

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/container/map.hpp>
     #include <boost/fusion/include/map.hpp>
     #include <boost/fusion/container/map_fwd.hpp>
     #include <boost/fusion/include/map_fwd.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <
         typename T0 = unspecified
    @@ -64,26 +64,26 @@
     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 -
    +

    + + Template parameters +

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

    - T0...TN + T0...TN

    @@ -125,44 +125,49 @@
    -
    - - Model of -
    +

    + + Model of +

    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 Sequence + A Forward Sequence

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -186,7 +191,7 @@

    - M() + M()

    @@ -198,62 +203,64 @@

    - M(e0, e1,... - en) + M(e0, e1,... + en)

    - Creates a map with element pairs e0...en. + Creates a map with element pairs e0...en.

    - M(s) + M(s)

    - Copy constructs a map from a Forward - Sequence s. + Copy constructs a map from a Forward + Sequence s.

    - m = - s + m = + s

    - Assigns to a map, m, - from a Forward - Sequence s. + Assigns to a map, m, + from a Forward + Sequence s.

    -
    - - Example -
    +

    + + 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;
     
    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html index 9a4e0f81..8c062479 100644 --- a/doc/html/fusion/container/set.html +++ b/doc/html/fusion/container/set.html @@ -3,7 +3,7 @@ set - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,34 +24,34 @@

    -set -

    -
    - - Description -
    +set
    +

    + + Description +

    - set is an Associative + 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 + element key lookup has constant runtime complexity (see Overloaded Functions).

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/container/set.hpp>
     #include <boost/fusion/include/set.hpp>
     #include <boost/fusion/container/set_fwd.hpp>
     #include <boost/fusion/include/set_fwd.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <
         typename T0 = unspecified
    @@ -63,26 +63,26 @@
     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 -
    +

    + + Template parameters +

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

    - T0...TN + T0...TN

    @@ -124,44 +124,49 @@
    -
    - - Model of -
    +

    + + Model of +

    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 Sequence + A Forward Sequence

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -185,7 +190,7 @@

    - S() + S()

    @@ -197,56 +202,58 @@

    - S(e0, e1,... - en) + S(e0, e1,... + en)

    - Creates a set with elements e0...en. + Creates a set with elements e0...en.

    - S(fs) + S(fs)

    - Copy constructs a set from a Forward - Sequence fs. + Copy constructs a set from a Forward + Sequence fs.

    - s = - fs + s = + fs

    - Assigns to a set, s, - from a Forward - Sequence fs. + Assigns to a set, s, + from a Forward + Sequence fs.

    -
    - - Example -
    +

    + + 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/container/vector.html b/doc/html/fusion/container/vector.html index 56496ba9..954a2592 100644 --- a/doc/html/fusion/container/vector.html +++ b/doc/html/fusion/container/vector.html @@ -3,7 +3,7 @@ vector - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,24 +24,24 @@ +

    + + Description +

    - vector is a Random + 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 -
    +

    + + Header +

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

    + + Synopsis +

    - Numbered forms + Numbered forms

     template <>
    @@ -86,7 +86,7 @@
     struct vectorN;
     

    - Variadic form + Variadic form

     template <
    @@ -105,26 +105,26 @@
     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 -
    +

    + + Template parameters +

    @@ -151,7 +151,7 @@

    - T0...TN + T0...TN

    @@ -166,40 +166,43 @@
    -
    - - Model of -
    -
    diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index e6b2a5c1..b7c413cd 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,19 +3,19 @@ Extension - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    The Full Extension Mechanism
    Sequence Facade
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index cbdddd37..013c0e10 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -1,9 +1,9 @@ -The Full Extension Mechanism + The Full Extension Mechanism - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,12 +24,11 @@

    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 + easily be added. In fact, the library support for std::pair, + boost::array and MPL sequences is entirely provided using the extension mechanism.

    @@ -37,7 +36,7 @@

    1. - Enable the tag dispatching + Enable the tag dispatching mechanism used by Fusion for your sequence type
    2. @@ -48,10 +47,10 @@ sequence
    -
    - - Our example -
    +

    + + Our example +

    In order to illustrate enabling a new sequence type for use with Fusion, we are going to use the type: @@ -74,18 +73,19 @@

    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 + steps to enable example_struct + to serve as an Associative + Sequence as described in the Quick Start guide.

    -
    - - Enabling +

    + + Enabling Tag Dispatching -

    +

    - The Fusion extensibility mechanism uses tag + 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: @@ -96,9 +96,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 + our sequence. This is done by specializing traits::tag_of for our sequence type.

    @@ -114,8 +114,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:

    @@ -123,20 +123,20 @@ #include <boost/fusion/adapted/array/tag_of.hpp> #include <boost/fusion/include/tag_of.hpp>
    -
    - - Designing +

    + + 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. + 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>
    @@ -163,37 +163,37 @@
               index 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 + 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 +

    + + 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.

    @@ -218,30 +218,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 - uses tag dispatching + 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<>
    @@ -279,17 +279,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>
         {};
    @@ -297,24 +297,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.

    @@ -322,23 +322,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 +

    + + Implementing the remaining iterator functionality -

    +

    - Ok, now we have seen the way value_of and deref work, everything else will + 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<>
    @@ -360,37 +360,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 - 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 + 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 + 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 +

    + + 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:

    @@ -402,14 +405,14 @@
     };
     

    - 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 + 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 + get begin working so that we can get an iterator to start accessing the data in our sequence.

    @@ -432,32 +435,33 @@
     

    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. + For our Random + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl.

    -
    - - Enabling +

    + + 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:

    @@ -500,18 +504,18 @@
     

    Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the + 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 + 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 -
    +

    + + 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. @@ -519,8 +523,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/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 0b2ccd00..3403e178 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -3,7 +3,7 @@ Iterator Facade - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +24,28 @@ +

    + + Description +

    - The iterator_facade + The iterator_facade template provides an intrusive mechanism for producing a conforming Fusion iterator.

    -
    - - Synopsis -
    +

    + + Synopsis +

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

    + + Usage +

    The user of iterator_facade derives his iterator type from a specialization of iterator_facade and passes the derived iterator type as the first template @@ -58,8 +57,8 @@ type.

    -

    Table 1.93. Parameters

    -
    +

    Table 1.93. Parameters

    +
    @@ -80,20 +79,20 @@ -

    - iterator, It, It1, - It2 + iterator, It, It1, + It2

    - A type derived from iterator_facade + A type derived from iterator_facade

    - N + N

    @@ -104,11 +103,11 @@
    +
    -
    -

    Table 1.94. Key Expressions

    -
    +
    +

    Table 1.94. Key Expressions

    +
    @@ -135,12 +134,12 @@ @@ -311,13 +310,13 @@ -

    - iterator::template value_of<It>::type + iterator::template value_of<It>::type

    - The element stored at iterator position It + The element stored at iterator position It

    @@ -152,12 +151,12 @@

    - iterator::template deref<It>::type + iterator::template deref<It>::type

    - The type returned when dereferencing an iterator of type It + The type returned when dereferencing an iterator of type It

    @@ -169,12 +168,12 @@

    - iterator::template deref<It>::call(it) + iterator::template deref<It>::call(it)

    - Dereferences iterator it + Dereferences iterator it

    @@ -186,12 +185,12 @@

    - iterator::template next<It>::type + iterator::template next<It>::type

    - The type of the next element from It + The type of the next element from It

    @@ -203,12 +202,12 @@

    - iterator::template next<It>::call(it) + iterator::template next<It>::call(it)

    - The next iterator after it + The next iterator after it

    @@ -220,12 +219,12 @@

    - iterator::template prior<It>::type + iterator::template prior<It>::type

    - The type of the next element from It + The type of the next element from It

    @@ -237,12 +236,12 @@

    - iterator::template prior<It>::call(it) + iterator::template prior<It>::call(it)

    - The next iterator after it + The next iterator after it

    @@ -254,51 +253,51 @@

    - iterator::template advance<It, N>::type + iterator::template advance<It, N>::type

    - The type of an iterator advanced N - elements from It + The type of an iterator advanced N + elements from It

    - Implemented in terms of next - and prior + Implemented in terms of next + and prior

    - iterator::template advance<It, N>::call(it) + iterator::template advance<It, N>::call(it)

    - An iterator advanced N - elements from it + An iterator advanced N + elements from it

    - Implemented in terms of next - and prior + Implemented in terms of next + and prior

    - iterator::template distance<It1, It2>::type + iterator::template distance<It1, It2>::type

    - The distance between iterators of type It1 - and It2 as an MPL + The distance between iterators of type It1 + and It2 as an MPL Integral Constant

    - iterator::template distance<It1, It2>::call(it1, it2) + iterator::template distance<It1, It2>::call(it1, it2)

    - The distance between iterator it1 - and it2 + The distance between iterator it1 + and it2

    @@ -329,56 +328,56 @@

    - iterator::template equal_to<It1, It2>::type + iterator::template equal_to<It1, It2>::type

    - The distance between iterators of type It1 - and It2 + The distance between iterators of type It1 + and It2

    - boost::same_type<It1, It2>::type + boost::same_type<It1, It2>::type

    - iterator::template equal_to<It1, It2>::call(it1, it2) + iterator::template equal_to<It1, It2>::call(it1, it2)

    - The distance between iterators it1 - and it2 + The distance between iterators it1 + and it2

    - boost::same_type<It1, It2>::type() + boost::same_type<It1, It2>::type()

    +
    -
    - - Header -
    +

    + + Header +

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

    + + Example +

    - A full working example using iterator_facade is provided in triple.cpp + A full working example using iterator_facade is provided in triple.cpp in the extension examples.

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 4ddb6fc7..38c49e7d 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -3,19 +3,19 @@ Sequence Facade - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,35 +24,34 @@ +

    + + Description +

    - The sequence_facade + The sequence_facade template provides an intrusive mechanism for producing a conforming Fusion iterator.

    -
    - - Synopsis -
    +

    + + Synopsis +

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

    + + Usage +

    - The user of sequence_facade derives his sequence - type from a specialization of sequence_facade and passes the derived + The user of sequence_facade derives his sequence + type from a specialization of sequence_facade and passes the derived sequence type as the first template parameter. The second template parameter should be the traversal category of the sequence being implemented. The 3rd - parameter should be set to mpl::true_ + parameter should be set to mpl::true_ if the sequence is a view.

    @@ -60,8 +59,8 @@ type.

    -

    Table 1.91. Parameters

    -
    +

    Table 1.91. Parameters

    +
    @@ -82,19 +81,19 @@ -

    - sequence, Seq + sequence, Seq

    - A type derived from sequence_facade + A type derived from sequence_facade

    - N + N

    @@ -105,11 +104,11 @@
    +
    -
    -

    Table 1.92. Key Expressions

    -
    +
    +

    Table 1.92. Key Expressions

    +
    @@ -130,60 +129,60 @@ -

    - sequence::template begin<Seq>::type + sequence::template begin<Seq>::type

    - The type of an iterator to the beginning of a sequence of type Seq + The type of an iterator to the beginning of a sequence of type Seq

    - sequence::template begin<Seq>::call(seq) + sequence::template begin<Seq>::call(seq)

    - An iterator to the beginning of sequence seq + An iterator to the beginning of sequence seq

    - sequence::template end<Seq>::type + sequence::template end<Seq>::type

    - The type of an iterator to the end of a sequence of type Seq + The type of an iterator to the end of a sequence of type Seq

    - sequence::template end<Seq>::call(seq) + sequence::template end<Seq>::call(seq)

    - An iterator to the end of sequence seq + An iterator to the end of sequence seq

    - sequence::template size<Seq>::type + sequence::template size<Seq>::type

    - The size of a sequence of type Seq + The size of a sequence of type Seq as an MPL Integral Constant

    @@ -192,71 +191,71 @@

    - sequence::template size<Seq>::call(seq) + sequence::template size<Seq>::call(seq)

    - The size of sequence seq + The size of sequence seq

    - sequence::template at<Seq, N>::type + sequence::template at<Seq, N>::type

    - The type of element N - in a sequence of type Seq + The type of element N + in a sequence of type Seq

    - sequence::template at<Seq, N>::call(seq) + sequence::template at<Seq, N>::call(seq)

    - Element N in sequence - seq + Element N in sequence + seq

    - sequence::template value_at<Sequence, N>::type + sequence::template value_at<Sequence, N>::type

    - The type of the Nth - element in a sequence of type Seq + The type of the Nth + element in a sequence of type Seq

    +
    -
    - - Include -
    +

    + + Include +

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

    + + Example +

    - A full working example using sequence_facade is provided in triple.cpp + A full working example using sequence_facade is provided in triple.cpp in the extension examples.

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 119da0b6..c71c6ec8 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -3,7 +3,7 @@ Functional - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Concepts
    @@ -65,11 +64,11 @@

    /functional.hpp>

    -

    - - Fused and unfused +

    + + Fused and unfused forms -

    +

    What is a function call?

    @@ -80,33 +79,33 @@ 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 + 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 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 +

    + + 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 @@ -119,8 +118,9 @@

    Transforming an unfused function into its fused counterpart allows n-ary calls - from an algorithm that invokes an unary Polymorphic - Function Object with Sequence + from an algorithm that invokes an unary Polymorphic + Function Object with Sequence arguments.

    @@ -129,11 +129,11 @@ variant has a corresponding generator function template that returns an adapter instance for the given argument.

    -

    - - Making +

    + + 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 diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index 0839a84d..f5f0ecce 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -1,21 +1,22 @@ -Adapters + Adapters - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,8 +25,7 @@
    fused
    fused_procedure
    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index f6b677b2..28492b6c 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -3,19 +3,19 @@ fused - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,51 +24,53 @@

    -fused -

    -
    - - Description -
    +fused
    +
    + + Description +

    - An unary Polymorphic Function - Object adapter template for Deferred - Callable Object target functions. It takes a Forward + 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 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).

    /functional/adapter/fused.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <typename Function>
     class fused;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -95,12 +97,13 @@ @@ -110,44 +113,47 @@

    - Function + Function

    - A Deferred + A Deferred Callable Object

    -
    - - Model of -
    +
    + + Model of +

    Notation

    -
    R
    +
    R

    - A possibly const qualified Deferred + A possibly const qualified Deferred Callable Object type or reference type thereof

    -
    r
    +
    r

    - An object convertible to R + An object convertible to R

    -
    s
    +
    s

    - A Sequence of arguments that - are accepted by r + A Sequence of arguments that + are accepted by r

    -
    f
    +
    f

    - An instance of fused<R> + An instance of fused<R>

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -169,61 +175,61 @@

    - 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.

    -
    - - Example -
    +
    + + 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 -
    +
    + + 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 6c35f8e5..ea01cb4e 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -3,19 +3,19 @@ fused_function_object - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,41 +24,43 @@ +
    + + Description +

    - An unary Polymorphic Function - Object adapter template for a Polymorphic - Function Object target function. It takes a Forward + 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 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).

    /functional/adapter/fused_function_object.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class fused_function_object;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -85,12 +87,13 @@ @@ -100,45 +103,48 @@

    - Function + Function

    - Polymorphic Function + Polymorphic Function Object type

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    R
    +
    R

    - A possibly const qualified Polymorphic + A possibly const qualified Polymorphic Function Object type or reference type thereof

    -
    r
    +
    r

    - An object convertible to R + An object convertible to R

    -
    s
    +
    s

    - A Sequence of arguments that - are accepted by r + A Sequence of arguments that + are accepted by r

    -
    f
    +
    f

    - An instance of fused<R> + An instance of fused<R>

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -160,55 +166,55 @@

    - 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.

    -
    - - Example -
    +
    + + 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));
     }
     
    @@ -230,22 +236,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 +
    + + See also -
    + diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 3fb241c3..32fa9c5b 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -3,19 +3,19 @@ fused_procedure - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,37 +24,38 @@ +
    + + Description +

    - An unary Polymorphic Function - Object adapter template for Callable - Object target functions. It takes a Forward + 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 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 @@ -64,19 +65,19 @@

    /functional/adapter/fused_procedure.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <typename Function>
     class fused_procedure;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -103,12 +104,12 @@ @@ -118,45 +119,47 @@

    - Function + Function

    - Callable Object + Callable Object type

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    R
    +
    R

    - A possibly const qualified Callable + A possibly const qualified Callable Object type or reference type thereof

    -
    r
    +
    r

    - An object convertible to R + An object convertible to R

    -
    s
    +
    s

    - A Sequence of arguments that - are accepted by r + A Sequence of arguments that + are accepted by r

    -
    f
    +
    f

    - An instance of fused<R> + An instance of fused<R>

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -178,74 +181,75 @@

    - 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.

    -
    - - Example -
    +
    + + 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 +
    + + See also -
    + diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 487030d5..2466e19f 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -3,19 +3,19 @@ unfused_generic - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,53 +24,52 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + 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.

    -

    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).

    /functional/adapter/unfused_generic.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class unfused_generic;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -97,12 +96,13 @@ @@ -112,49 +112,52 @@

    - Function + Function

    - An unary Polymorphic + An unary Polymorphic Function Object

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    UG
    +
    UG

    - The type unfused_generic<F> + The type unfused_generic<F>

    -
    ug
    +
    ug

    - An instance of UG, - initialized with f + An instance of UG, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ug + Arguments to ug

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -176,48 +179,48 @@

    - 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 - Sequence that contains references - to the arguments a0...aN. + Calls f with a + Sequence that contains references + to the arguments a0...aN.

    -
    - - Example -
    +
    + + Example +
     template <typename Function, typename T>
     class fused_bound_1st
    @@ -265,17 +268,17 @@
         assert(bind_1st(std::plus<float>(), 1)(0.5f) == 1.5f);
     }
     
    -
    - - See +
    + + 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 6ffbe6d8..6e2511b5 100644 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -3,19 +3,19 @@ unfused_lvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,43 +24,45 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + bundled to a Random Access Sequence of references that is passed to the target function object. Only LValue arguments are accepted.

    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).

    /functional/adapter/unfused_lvalue_args.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class unfused_lvalue_args;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -87,12 +89,13 @@ @@ -102,49 +105,52 @@

    - Function + Function

    - A unary Polymorphic + A unary Polymorphic Function Object

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    UL
    +
    UL

    - The type unfused_lvalue_args<F> + The type unfused_lvalue_args<F>

    -
    ul
    +
    ul

    - An instance of UL, - initialized with f + An instance of UL, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ul + Arguments to ul

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -166,48 +172,48 @@

    - 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 - Sequence that contains references - to the arguments a0...aN. + Calls f with a + Sequence that contains references + to the arguments a0...aN.

    -
    - - Example -
    +
    + + Example +
     struct fused_incrementer
     {
    @@ -220,7 +226,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(s,++boost::lambda::_1);
    +        for_each(s,++boost::lambda::_1);
         }
     };
     
    @@ -232,15 +238,15 @@
         assert(a == 3 && b == 'Y');
     }
     
    -
    - - See +
    + + 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 37b9dcd9..b43863b9 100644 --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -3,19 +3,19 @@ unfused_rvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,43 +24,45 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + 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 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).

    /functional/adapter/unfused_rvalue_args.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function>
     class unfused_rvalue_args;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -87,12 +89,13 @@ @@ -102,49 +105,52 @@

    - Function + Function

    - A unary Polymorphic + A unary Polymorphic Function Object

    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    UR
    +
    UR

    - The type unfused_rvalue_args<F> + The type unfused_rvalue_args<F>

    -
    ur
    +
    ur

    - An instance of UR, - initialized with f + An instance of UR, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ur + Arguments to ur

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -166,48 +172,48 @@

    - 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 - Sequence that contains references - to the arguments a0...aN. + Calls f with a + Sequence that contains references + to the arguments a0...aN.

    -
    - - Example -
    +
    + + Example +
     struct sequence_printer
     {
    @@ -230,17 +236,17 @@
         print(24,"bottles of beer in",'a',"box.");
     }
     
    -
    - - See +
    + + See also -
    + diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 018c31fe..d7e4e349 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -3,19 +3,19 @@ unfused_typed - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,63 +24,59 @@ +
    + + Description +

    - An n-ary Polymorphic Function - Object adapter template for an unary Polymorphic + 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 + bundled to a Random Access Sequence that is passed to the target function object.

    The call operators of esulting function objects are strictly typed (in - other words, non-templatized) with the types from a Sequence. + 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. 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).

    -

    /functional/adapter/unfused_typed.hpp>

    -
    - - Synopsis -
    +
    + + Synopsis +
     template <class Function, class Sequence>
     class unfused_typed;
     
    -
    - - Template +
    + + Template parameters -
    +
    @@ -108,12 +104,13 @@ @@ -125,12 +122,12 @@

    - Function + Function

    - A unary Polymorphic + A unary Polymorphic Function Object

    - Sequence + Sequence

    - A Sequence + A Sequence

    @@ -140,54 +137,57 @@
    -
    - - Model +
    + + Model of -
    +

    Notation

    -
    F
    +
    F

    - A possibly const qualified, unary Polymorphic + A possibly const qualified, unary Polymorphic Function Object type or reference type thereof

    -
    f
    +
    f

    - An object convertible to F + An object convertible to F

    -
    S
    +
    S

    - A Sequence of parameter types + A Sequence of parameter types

    -
    UT
    +
    UT

    - The type unfused_typed<F,S> + The type unfused_typed<F,S>

    -
    ut
    +
    ut

    - An instance of UT, - initialized with f + An instance of UT, + initialized with f

    -
    a0...aN
    +
    a0...aN

    - Arguments to ut, convertible - to the types in S + Arguments to ut, convertible + to the types in S

    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -209,50 +209,50 @@

    - 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 -
    +
    + + Example +
     struct add_assign // applies operator+=
     {
    @@ -318,16 +318,16 @@
         assert(a == 8 && b == 'Z');
     }
     
    -
    - - See also -
    +
    + + See also +
    diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index e15cbd36..272e5858 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -3,19 +3,19 @@ Concepts - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@ +
    + + 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 -
    +
    + + Models +
    • function pointer types @@ -50,10 +50,10 @@ all kinds of function objects
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -63,7 +63,8 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     lambda::_1 += lambda::_2;
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html index d6ecf54c..0e8e17e9 100644 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -1,21 +1,24 @@ -Deferred Callable Object + Deferred + Callable Object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,66 +27,64 @@ +
    + + Description +

    - Callable Object + Callable Object types that work with Boost.ResultOf to determine the result of a call.

    -
    - - Refinement +
    + + Refinement of -
    - -

    Notation

    -
    F
    +
    F

    A possibly const qualified Deferred Callable Object type

    -
    A1 - ...AN
    +
    A1 + ...AN

    Argument types

    -
    a1 - ...aN
    +
    a1 + ...aN

    - Objects or references to objects with types A1 - ...AN + Objects or references to objects with types A1 + ...AN

    -
    T1 - ...TN
    +
    T1 + ...TN

    - Ti is Ai & - if ai is an LValue, - same as Ai, otherwise + Ti is Ai & + if ai is an LValue, + same as Ai, otherwise

    -
    - - Expression +
    + + Expression requirements -
    +
    @@ -104,36 +105,37 @@

    - 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 -
    +
    + + Models +
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -143,7 +145,8 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     // Note: Boost.Lambda expressions don't work with __boost_result_of__
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index da6457dc..3f79e4e7 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -1,21 +1,23 @@ -Polymorphic Function Object + Polymorphic Function + Object - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,64 +26,67 @@ +
    + + Description +

    - A non-member-pointer Deferred + A non-member-pointer Deferred Callable Object type.

    -
    - - Refinement +
    + + Refinement of -
    +

    Notation

    -
    F
    +
    F

    A possibly const-qualified Polymorphic Function Object type

    -
    f
    +
    f

    An object or reference to an object of type F

    -
    A1 - ...AN
    +
    A1 + ...AN

    Argument types

    -
    a1 - ...aN
    +
    a1 + ...aN

    - Objects or references to objects with types A1 - ...AN + Objects or references to objects with types A1 + ...AN

    -
    T1 - ...TN
    +
    T1 + ...TN

    - Ti is Ai & - if ai is an LValue, - same as Ai, otherwise + Ti is Ai & + if ai is an LValue, + same as Ai, otherwise

    -
    - - Expression +
    + + Expression requirements -
    +
    @@ -108,15 +113,15 @@

    - f(a1, - ...aN) + f(a1, + ...aN)

    - result_of< + result_of< F(T1, - ...TN) >::type + ...TN) >::type

    @@ -126,10 +131,10 @@
    -
    - - Models -
    +
    + + Models +
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -152,7 +157,8 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     // Note: Boost.Lambda expressions don't work with __boost_result_of__
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html index 737d78dc..d0273cb5 100644 --- a/doc/html/fusion/functional/concepts/reg_callable.html +++ b/doc/html/fusion/functional/concepts/reg_callable.html @@ -1,21 +1,23 @@ -Regular Callable Object + Regular Callable + Object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,53 +26,53 @@ +
    + + Description +

    - A non-member-pointer Callable + 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 +
    + + Refinement of -
    - + +

    Notation

    -
    F
    +
    F

    A possibly const qualified Deferred Callable Object type

    -
    f
    +
    f

    An object or reference to an object of type F

    -
    A1 - ...AN
    +
    A1 + ...AN

    Argument types

    -
    a1 - ...aN
    +
    a1 + ...aN

    - Objects or references to objects with types A1 - ...AN + Objects or references to objects with types A1 + ...AN

    -
    - - Expression +
    + + Expression requirements -
    +
    @@ -97,8 +99,8 @@

    - f(a1, - ...aN) + f(a1, + ...aN)

    @@ -113,10 +115,10 @@
    -
    - - Models -
    +
    + + Models +
    • function pointer types @@ -125,10 +127,10 @@ all kinds of function objects
    -
    - - Examples -
    +
    + + Examples +
     & a_free_function
     & a_class::a_static_member_function
    @@ -136,7 +138,8 @@
     // using namespace boost;
     bind(std::less<int>(), _1, 5)
     lambda::_1 += lambda::_2;
    -fusion::make_fused_function_object(std::less<int>())
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html index 7e4d78a6..3cea4633 100644 --- a/doc/html/fusion/functional/generation.html +++ b/doc/html/fusion/functional/generation.html @@ -3,7 +3,7 @@ Generation - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Functions
    Metafunctions
    diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index ea13ff5c..5deecb56 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -3,19 +3,20 @@ Functions - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    make_fused
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index d8736b7c..899edc04 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -1,21 +1,23 @@ -make_fused + + make_fused - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +26,32 @@
    - - Description + + Description

    - Creates a fused adapter for a given Deferred Callable Object. - The usual element + Creates a fused adapter for a given Deferred Callable Object. + The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_fused<F>::type
    +inline typename make_fused<F>::type
     make_fused(F const & f);
     
    - - Parameters + + Parameters
    @@ -75,12 +79,13 @@ @@ -92,52 +97,53 @@

    - f + f

    - Model of Deferred + Model of Deferred Callable Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - - Example + + 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>())));
    +    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 + + 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 501c7ee4..136548c9 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -1,21 +1,24 @@ -make_fused_function_object + + make_fused_function_object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +27,33 @@
    - - Description + + Description

    - Creates a fused_function_object adapter - for a given Deferred - Callable Object. The usual element + Creates a fused_function_object adapter + for a given Deferred + Callable Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_fused_function_object<F>::type
    +inline typename make_fused_function_object<F>::type
     make_fused_function_object(F const & f);
     
    - - Parameters + + Parameters
    @@ -76,12 +81,13 @@ @@ -93,31 +99,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - - Example + + Example
     struct sub
    @@ -138,21 +144,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 + + 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 18d51b37..44ae9d6c 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -1,21 +1,24 @@ -make_fused_procedure + + make_fused_procedure - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +27,33 @@
    - - Description + + Description

    - Creates a fused_procedure adapter for - a given Deferred - Callable Object. The usual element + Creates a fused_procedure adapter for + a given Deferred + Callable Object. The usual element conversion applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_fused_procedure<F>::type
    +inline typename make_fused_procedure<F>::type
     make_fused_procedure(F const & f);
     
    - - Parameters + + Parameters
    @@ -76,12 +81,12 @@ @@ -93,47 +98,48 @@

    - f + f

    - Model of Callable + Model of Callable Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - - Example + + 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 + + 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 23ce62fe..f11a9d87 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -1,21 +1,24 @@ -make_unfused_generic + + make_unfused_generic - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +27,33 @@
    - - Description + + Description

    - Creates a unfused_generic adapter for - a given, unary Polymorphic - Function Object. The usual element + Creates a unfused_generic adapter for + a given, unary Polymorphic + Function Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_unfused_generic<F>::type
    +inline typename make_unfused_generic<F>::type
     make_unfused_generic(F const & f);
     
    - - Parameters + + Parameters
    @@ -76,12 +81,13 @@ @@ -93,31 +99,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - - Example + + Example
     struct bottles_song
    @@ -152,14 +158,15 @@
     }
     
    - - See + + 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 928cd398..82876105 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -1,21 +1,24 @@ -make_unfused_lvalue_args + + make_unfused_lvalue_args - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +27,33 @@
    - - Description + + Description

    - Creates a unfused_lvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element + Creates a unfused_lvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_unfused_lvalue_args<F>::type
    +inline typename make_unfused_lvalue_args<F>::type
     make_unfused_lvalue_args(F const & f);
     
    - - Parameters + + Parameters
    @@ -76,12 +81,13 @@ @@ -93,31 +99,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - - Example + + Example
     struct fused_incrementer
    @@ -131,7 +137,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(s,++boost::lambda::_1);
    +        for_each(s,++boost::lambda::_1);
         }
     };
     
    @@ -143,14 +149,15 @@
     }
     
    - - See + + 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 b84a5acd..138b6e7b 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -1,21 +1,23 @@ -make_unfused_rvalue_args + + make_unfused_rvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +26,33 @@
    - - Description + + Description

    - Creates a unfused_rvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element + Creates a unfused_rvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element conversion is applied to the target function.

    - - Synopsis + + Synopsis
     template <typename F>
    -inline typename make_unfused_rvalue_args<F>::type
    +inline typename make_unfused_rvalue_args<F>::type
     make_unfused_rvalue_args(F const & f);
     
    - - Parameters + + Parameters
    @@ -76,12 +80,13 @@ @@ -93,31 +98,31 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - - Example + + Example
     struct sequence_printer
    @@ -142,14 +147,15 @@
     }
     
    - - See + + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index e3e40ce8..1dcc003f 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -3,19 +3,21 @@ Metafunctions - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +26,7 @@
    make_fused
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index 7d7fd7e5..d31f3854 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -1,21 +1,23 @@ -make_fused + + make_fused - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +26,28 @@
    - - Description + + Description

    - Returns the result type of make_fused. + Returns the result type of make_fused.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -57,11 +60,12 @@
     }
     
    - - See + + 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 5ef52865..dde99913 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -1,21 +1,24 @@ -make_fused_function_object + + make_fused_function_object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +27,28 @@
    - - Description + + Description

    - Returns the result type of make_fused_function_object. + Returns the result type of make_fused_function_object.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -57,11 +61,12 @@
     }
     
    - - See + + 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 e2aad7bb..bed50f2f 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -1,21 +1,24 @@ -make_fused_procedure + + make_fused_procedure - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +27,28 @@
    - - Description + + Description

    - Returns the result type of make_fused_procedure. + Returns the result type of make_fused_procedure.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -57,11 +61,12 @@
     }
     
    - - See + + 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 94a594a4..f065e18d 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -1,21 +1,24 @@ -make_unfused_generic + + make_unfused_generic - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +27,28 @@
    - - Description + + Description

    - Returns the result type of make_unfused_generic. + Returns the result type of make_unfused_generic.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -57,11 +61,12 @@
     }
     
    - - See + + 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 dc938553..77172343 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -1,21 +1,24 @@ -make_unfused_lvalue_args + + make_unfused_lvalue_args - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +27,28 @@
    - - Description + + Description

    - Returns the result type of make_unfused_lvalue_args. + Returns the result type of make_unfused_lvalue_args.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -57,11 +61,12 @@
     }
     
    - - See + + 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 55baf667..90d1841a 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -1,21 +1,23 @@ -make_unfused_rvalue_args + + make_unfused_rvalue_args - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,27 +26,28 @@
    - - Description + + Description

    - Returns the result type of make_unfused_rvalue_args. + Returns the result type of make_unfused_rvalue_args.

    - - Header + + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - - Synopsis + + Synopsis
     namespace result_of
    @@ -57,11 +60,12 @@
     }
     
    - - See + + See also
    - + diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 29085191..107b46e1 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -3,19 +3,20 @@ Invocation - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    Functions
    Metafunctions
    diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index d7a18181..f2820769 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -3,7 +3,7 @@ Functions - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    - - Description + + Description

    - Calls a Deferred - Callable Object with the arguments from a Sequence. + Calls a Deferred + Callable Object with the arguments from a Sequence.

    The first template parameter can be specialized explicitly to avoid copying @@ -41,32 +42,32 @@

    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 + + Synopsis
     template<
         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 + + Parameters
    @@ -95,12 +96,13 @@ @@ -113,12 +115,13 @@ @@ -131,43 +134,45 @@

    - f + f

    - A Deferred + A Deferred Callable Object

    - s + s

    - A Forward + A Forward Sequence

    - - Expression + + Expression Semantics
     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.

    /functional/invocation/invoke.hpp>

    - - Example + + 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 + + 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 475ed4f7..f58d50cd 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -1,21 +1,23 @@ -invoke_function_object + + invoke_function_object - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,43 +26,46 @@
    - - Description + + Description

    - Calls a Polymorphic Function - Object with the arguments from a Sequence. + Calls a Polymorphic Function + Object with the arguments from a Sequence.

    The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object.

    - - Synopsis + + Synopsis
     template<
         typename Function,
         class Sequence
         >
    -typename result_of::invoke_function_object<Function, Sequence>::type
    +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
    +typename result_of::invoke_function_object<Function, Sequence const>::type
     invoke_function_object(Function f, Sequence const & s);
     
    - - Parameters + + Parameters
    @@ -89,12 +94,13 @@ @@ -107,12 +113,13 @@ @@ -125,28 +132,28 @@

    - f + f

    - Model of Polymorphic + Model of Polymorphic Function Object

    - s + s

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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.

    /functional/invocation/invoke_function_object.hpp>

    - - Example + + Example
     struct sub
    @@ -168,19 +175,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 + + 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 8a088a94..04dd70b2 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -1,21 +1,23 @@ -invoke_procedure + + invoke_procedure - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,16 +26,16 @@
    - - Description + + Description

    - Calls a Callable - Object with the arguments from a Sequence. + Calls a Callable + Object with the arguments from a Sequence. The result of the call is ignored.

    @@ -43,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 @@ -52,27 +54,29 @@ isn't implemented).

    - - Synopsis + + Synopsis
     template<
         typename Function,
         class Sequence
         >
    -typename result_of::invoke_procedure<Function, Sequence>::type
    +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
    +typename result_of::invoke_procedure<Function, Sequence const>::type
     invoke_procedure(Function f, Sequence const & s);
     
    - - Parameters + + Parameters
    @@ -101,12 +105,12 @@ @@ -119,12 +123,13 @@ @@ -137,44 +142,46 @@

    - f + f

    - Model of Callable + Model of Callable Object

    - s + s

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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.

    /functional/invocation/invoke_procedure.hpp>

    - - Example + + 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 + + See also
    diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 1493bf5f..763b05f7 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -3,19 +3,20 @@ Metafunctions - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    - - Description + + Description

    - Returns the result type of invoke. + Returns the result type of invoke.

    - - Synopsis + + Synopsis
     namespace result_of
    @@ -51,13 +51,13 @@
     }
     
    - - See + + 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 bfdf53a2..f63eb321 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -1,21 +1,23 @@ -invoke_function_object + + invoke_function_object - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +26,20 @@
    - - Description + + Description

    - Returns the result type of invoke_function_object. + Returns the result type of invoke_function_object.

    - - Synopsis + + Synopsis
     namespace result_of
    @@ -52,13 +55,14 @@
     }
     
    - - See + + 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 c087b331..54452d8d 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -1,21 +1,23 @@ -invoke_procedure + + invoke_procedure - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +26,20 @@
    - - Description + + Description

    - Returns the result type of invoke_procedure. + Returns the result type of invoke_procedure.

    - - Synopsis + + Synopsis
     namespace result_of
    @@ -52,13 +55,14 @@
     }
     
    - - See + + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 3b762476..5d454021 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,7 +3,7 @@ Introduction - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,15 +24,14 @@

    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.

    @@ -42,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 @@ -52,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 @@ -90,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/iterator.html b/doc/html/fusion/iterator.html index cdcc37eb..d28a765e 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -3,7 +3,7 @@ Iterator - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Concepts
    @@ -72,12 +71,12 @@ iterators are a fundamental concept in Fusion. As with MPL and STL iterators describe positions, and provide access to data within an underlying - Sequence. + Sequence.

    -

    - - Header -

    +

    + + Header +

     #include <boost/fusion/iterator.hpp>
     #include <boost/fusion/include/iterator.hpp>
    diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html
    index 93d6eda5..33096998 100644
    --- a/doc/html/fusion/iterator/concepts.html
    +++ b/doc/html/fusion/iterator/concepts.html
    @@ -3,19 +3,20 @@
     
     Concepts
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    Forward Iterator
    @@ -35,11 +35,16 @@ Access Iterator

    - 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 + 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.

    diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 661087e9..048d5c1c 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -1,21 +1,24 @@ -Bidirectional Iterator +Bidirectional + Iterator - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,54 +27,56 @@ +
    + + Description +

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

    Notation

    -
    i
    +
    i

    A Bidirectional Iterator

    -
    I
    +
    I

    A Bidirectional Iterator type

    -
    M
    +
    M

    An MPL integral constant

    -
    N
    +
    N

    An integral constant

    -
    - - Refinement +
    + + Refinement of -
    +

    - Forward Iterator + Forward Iterator

    -
    - - Expression +
    + + Expression requirements -
    +

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

    @@ -101,12 +106,13 @@ @@ -119,12 +125,13 @@ @@ -137,12 +144,13 @@ @@ -155,12 +163,13 @@ @@ -172,11 +181,11 @@

    - next(i) + next(i)

    - Bidirectional + Bidirectional Iterator

    - prior(i) + prior(i)

    - Bidirectional + Bidirectional Iterator

    - advance_c<N>(i) + advance_c<N>(i)

    - Bidirectional + Bidirectional Iterator

    - advance<M>(i) + advance<M>(i)

    - Bidirectional + Bidirectional Iterator

    -
    - - Meta +
    + + Meta Expressions -
    +
    @@ -197,7 +206,7 @@

    - result_of::prior<I>::type + result_of::prior<I>::type

    @@ -207,14 +216,15 @@
    -
    - - Expression +
    + + Expression Semantics -
    +

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

    @@ -237,60 +247,63 @@

    - prior(i) + prior(i)

    - An iterator to the element preceding i + An iterator to the element preceding i

    -
    - - Invariants -
    +
    + + Invariants +

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

    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 77858e8c..d26df336 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -1,21 +1,23 @@ -Forward Iterator +Forward + Iterator - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,47 +26,47 @@ +
    + + Description +

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

    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 +
    + + Expression requirements -
    +

    A type models Forward Iterator if, in addition to being CopyConstructable, the following expressions are valid: @@ -96,12 +98,13 @@

    - next(i) + next(i)

    - Forward + Forward Iterator

    @@ -114,8 +117,8 @@

    - i == - j + i == + j

    @@ -132,8 +135,8 @@

    - i != - j + i != + j

    @@ -150,12 +153,13 @@

    - advance_c<N>(i) + advance_c<N>(i)

    - Forward + Forward Iterator

    @@ -168,12 +172,13 @@

    - advance<M>(i) + advance<M>(i)

    - Forward + Forward Iterator

    @@ -186,14 +191,14 @@

    - distance(i, - j) + distance(i, + j)

    - result_of::distance<I, - J>::type + result_of::distance<I, + J>::type

    @@ -205,12 +210,12 @@

    - deref(i) + deref(i)

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

    @@ -222,12 +227,12 @@

    - *i + *i

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

    @@ -238,11 +243,11 @@ -
    - - Meta +
    + + Meta Expressions -
    +
    @@ -264,7 +269,7 @@

    - result_of::next<I>::type + result_of::next<I>::type

    @@ -276,8 +281,8 @@

    - result_of::equal_to<I, - J>::type + result_of::equal_to<I, + J>::type

    @@ -289,8 +294,8 @@

    - result_of::advance_c<I, - N>::type + result_of::advance_c<I, + N>::type

    @@ -302,7 +307,7 @@

    - result_of::advance<I ,M>::type + result_of::advance<I ,M>::type

    @@ -314,7 +319,7 @@

    - result_of::distance<I ,J>::type + result_of::distance<I ,J>::type

    @@ -326,7 +331,7 @@

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

    @@ -338,7 +343,7 @@

    - result_of::value_of<I>::type + result_of::value_of<I>::type

    @@ -349,11 +354,11 @@
    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -375,20 +380,20 @@ @@ -426,134 +431,134 @@

    - next(i) + next(i)

    - An iterator to the element following i + An iterator to the element following i

    - i == - j + i == + j

    @@ -400,8 +405,8 @@

    - i != - j + i != + j

    @@ -413,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

    - 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 -
    +
    + + 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 -
    +
    + + Models +
    diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 4a7dbf79..10060527 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -1,21 +1,23 @@ -Random Access Iterator +Random + Access Iterator - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,58 +26,60 @@ +
    + + Description +

    - A Random Access Iterator traverses a Sequence + 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
    +
    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 +
    + + Refinement of -
    +

    - Bidirectional + Bidirectional Iterator

    -
    - - Expression +
    + + Expression requirements -
    +

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

    @@ -105,12 +109,13 @@ @@ -123,12 +128,13 @@ @@ -141,12 +147,13 @@ @@ -159,12 +166,13 @@ @@ -176,11 +184,11 @@

    - next(i) + next(i)

    - Random + Random Access Iterator

    - prior(i) + prior(i)

    - Random + Random Access Iterator

    - advance_c<N>(i) + advance_c<N>(i)

    - Random + Random Access Iterator

    - advance<M>(i) + advance<M>(i)

    - Random + Random Access Iterator

    -
    - - Meta +
    + + Meta Expressions -
    +
    @@ -202,8 +210,8 @@

    - result_of::advance_c<I, - N>::type + result_of::advance_c<I, + N>::type

    @@ -215,8 +223,8 @@

    - result_of::advance<I, - M>::type + result_of::advance<I, + M>::type

    @@ -228,7 +236,7 @@

    - result_of::distance<I ,J>::type + result_of::distance<I ,J>::type

    @@ -239,36 +247,39 @@
    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 08625595..71e3ab8f 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -3,19 +3,20 @@ Functions - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    deref
    next
    diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index dc330461..ba2cf230 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -3,7 +3,7 @@ advance - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +24,28 @@
    +
    + + Description +

    Moves an iterator by a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         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

    +
    @@ -73,12 +72,13 @@ @@ -91,7 +91,7 @@ -

    - i + i

    - Model of Forward + Model of Forward Iterator

    - N + N

    @@ -107,45 +107,46 @@
    +
    -
    - - Expression +
    + + 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 - is a Bidirectional - Iterator then M + Semantics: Returns an iterator to the + element M positions from + i. If i + is a Bidirectional + Iterator then M may be negative.

    -
    - - Header -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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);
     
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html index b97ce686..39b87e3d 100644 --- a/doc/html/fusion/iterator/functions/advance_c.html +++ b/doc/html/fusion/iterator/functions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +24,28 @@ +
    + + Description +

    Moves an iterator by a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         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

    +
    @@ -73,12 +72,13 @@ @@ -91,7 +91,7 @@ -

    - i + i

    - Model of Forward + Model of Forward Iterator

    - N + N

    @@ -106,45 +106,46 @@
    +
    -
    - - Expression +
    + + 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 - is a Bidirectional - Iterator then N + Semantics: Returns an iterator to the + element N positions from + i. If i + is a Bidirectional + Iterator then N may be negative.

    -
    - - Header -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html index 291c3501..af8ff882 100644 --- a/doc/html/fusion/iterator/functions/deref.html +++ b/doc/html/fusion/iterator/functions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@

    -deref -

    -
    - - Description -
    +deref
    +
    + + Description +

    Deferences an iterator.

    -
    - - Synopsis -
    +
    + + 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

    +
    @@ -71,12 +70,13 @@ @@ -86,43 +86,43 @@

    -

    - i + i

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html index b593d416..65186c5c 100644 --- a/doc/html/fusion/iterator/functions/distance.html +++ b/doc/html/fusion/iterator/functions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +24,28 @@ +
    + + Description +

    Returns the distance between 2 iterators.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         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

    +
    @@ -72,12 +71,13 @@ @@ -87,40 +87,40 @@

    -

    - i, j + i, j

    - Models of Forward + Models of Forward Iterator into the same sequence

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html index 7bd29b2d..dc248b3d 100644 --- a/doc/html/fusion/iterator/functions/next.html +++ b/doc/html/fusion/iterator/functions/next.html @@ -3,7 +3,7 @@ next - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@

    -next -

    -
    - - Description -
    +next
    +
    + + Description +

    Moves an iterator 1 position forwards.

    -
    - - Synopsis -
    +
    + + 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

    +
    @@ -71,12 +70,13 @@ @@ -86,43 +86,43 @@

    -

    - i + i

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + Expression Semantics -
    +
     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 -
    +
    + + Header +
     #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html index b247d235..707453ea 100644 --- a/doc/html/fusion/iterator/functions/prior.html +++ b/doc/html/fusion/iterator/functions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@

    -prior -

    -
    - - Description -
    +prior
    +
    + + Description +

    Moves an iterator 1 position backwards.

    -
    - - Synopsis -
    +
    + + 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

    +
    @@ -71,12 +70,13 @@ @@ -86,42 +86,42 @@

    -

    - i + i

    - Model of Bidirectional + Model of Bidirectional Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html index ee5bbc49..edae7021 100644 --- a/doc/html/fusion/iterator/metafunctions.html +++ b/doc/html/fusion/iterator/metafunctions.html @@ -3,19 +3,20 @@ Metafunctions - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    value_of
    deref
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index 91723b52..45827c81 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -3,7 +3,7 @@ advance - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    +
    + + Description +

    Moves an iterator a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.17. Parameters

    -
    +

    Table 1.17. Parameters

    +
    @@ -76,12 +75,13 @@ @@ -94,7 +94,7 @@ -

    - I + I

    - Model of Forward + Model of Forward Iterator

    - M + M

    @@ -110,46 +110,47 @@
    +
    -
    - - Expression +
    + + 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 Bidirectional - Iterator then M + Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional + Iterator then M may be negative.

    -
    - - Header -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html index 728501a0..8132124c 100644 --- a/doc/html/fusion/iterator/metafunctions/advance_c.html +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@ +
    + + Description +

    Moves an iterator by a specified distance.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.18. Parameters

    -
    +

    Table 1.18. Parameters

    +
    @@ -76,12 +75,13 @@ @@ -94,7 +94,7 @@ -

    - I + I

    - Model of Forward + Model of Forward Iterator

    - N + N

    @@ -109,46 +109,47 @@
    +
    -
    - - Expression +
    + + 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 Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html index 8ed1820e..594ad5e3 100644 --- a/doc/html/fusion/iterator/metafunctions/deref.html +++ b/doc/html/fusion/iterator/metafunctions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@

    -deref -

    -
    - - Description -
    +deref
    +
    + + Description +

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

    -
    - - Synposis -
    +
    + + Synposis +
     template<
         typename I
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.12. Parameters

    -
    +

    Table 1.12. Parameters

    +
    @@ -74,12 +73,13 @@ @@ -89,46 +89,46 @@

    -

    - I + I

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html index e337b227..4c2abeca 100644 --- a/doc/html/fusion/iterator/metafunctions/distance.html +++ b/doc/html/fusion/iterator/metafunctions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@ +
    + + Description +

    Returns the distance between two iterators.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -48,8 +47,8 @@
     };
     
    -

    Table 1.16. Parameters

    -
    +

    Table 1.16. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -90,43 +90,43 @@

    -

    - I, J + I, J

    - Models of Forward + Models of Forward Iterator into the same sequence

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html index 5fba76e1..6c5ae850 100644 --- a/doc/html/fusion/iterator/metafunctions/equal_to.html +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html @@ -3,7 +3,7 @@ equal_to - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,21 +24,20 @@ +
    + + Description +

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

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -50,8 +49,8 @@
     };
     
    -

    Table 1.15. Parameters

    -
    +

    Table 1.15. Parameters

    +
    @@ -77,7 +76,7 @@ -

    - I, J + I, J

    @@ -91,43 +90,43 @@

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html index 46847fab..20f63e19 100644 --- a/doc/html/fusion/iterator/metafunctions/next.html +++ b/doc/html/fusion/iterator/metafunctions/next.html @@ -3,7 +3,7 @@ next - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@

    -next -

    -
    - - Description -
    +next
    +
    + + Description +

    Returns the type of the next iterator in a sequence.

    -
    - - Synposis -
    +
    + + Synposis +
     template<
         typename I
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.13. Parameters

    -
    +

    Table 1.13. Parameters

    +
    @@ -74,12 +73,13 @@ @@ -89,41 +89,41 @@

    -

    - I + I

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html index 03c03660..e76eacb4 100644 --- a/doc/html/fusion/iterator/metafunctions/prior.html +++ b/doc/html/fusion/iterator/metafunctions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@

    -prior -

    -
    - - Description -
    +prior
    +
    + + Description +

    Returns the type of the previous iterator in a sequence.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.14. Parameters

    -
    +

    Table 1.14. Parameters

    +
    @@ -74,12 +73,13 @@ @@ -89,44 +89,44 @@

    -

    - I + I

    - Model of Bidirectional + Model of Bidirectional Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html index eb18a0a1..91d72481 100644 --- a/doc/html/fusion/iterator/metafunctions/value_of.html +++ b/doc/html/fusion/iterator/metafunctions/value_of.html @@ -3,7 +3,7 @@ value_of - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@ +
    + + Description +

    Returns the type stored at the position of an iterator.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.11. Parameters

    -
    +

    Table 1.11. Parameters

    +
    @@ -74,12 +73,13 @@ @@ -89,44 +89,44 @@

    -

    - I + I

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    -
    - - Example -
    +
    + + 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/iterator/operator.html b/doc/html/fusion/iterator/operator.html index 79289534..f2a8c05a 100644 --- a/doc/html/fusion/iterator/operator.html +++ b/doc/html/fusion/iterator/operator.html @@ -3,19 +3,20 @@ Operator - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    Operator *
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index 583c8eaf..8e1c7e0f 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -1,21 +1,24 @@ -Operator == + Operator + == - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +27,20 @@
    +
    + + Description +

    Compares 2 iterators for equality.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -46,8 +49,8 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    -
    +

    Table 1.9. Parameters

    +
    @@ -73,7 +76,7 @@ -

    - i, j + i, j

    @@ -87,28 +90,28 @@

    +
    -
    - - Expression +
    + + Expression Semantics -
    +
     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 -
    +
    + + Header +
     #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index 2900a1a0..848af738 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -1,21 +1,23 @@
     
     
     
    -Operator !=
    + Operator
    +        !=
     
    -
    +
     
     
    -
    +
     
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +26,20 @@ +
    + + Description +

    Compares 2 iterators for inequality.

    -
    - - Synopsis -
    +
    + + Synopsis +
     template<
         typename I,
    @@ -46,8 +48,8 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    -
    +

    Table 1.10. Parameters

    +
    @@ -73,7 +75,7 @@ -

    - i, j + i, j

    @@ -87,25 +89,25 @@

    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
     #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 59bce2f8..8aee90c3 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -1,21 +1,23 @@
     
     
     
    -Operator *
    + Operator
    +        *
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +26,29 @@ +
    + + Description +

    Dereferences an iterator.

    -
    - - Synopsis -
    +
    + + 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

    +
    @@ -72,12 +74,13 @@ @@ -87,43 +90,43 @@

    -

    - i + i

    - Model of Forward + Model of Forward Iterator

    +
    -
    - - Expression +
    + + Expression Semantics -
    +
     *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 -
    +
    + + Header +
     #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    -
    - - Example -
    +
    + + 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 a4a9e95a..6633e462 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -3,19 +3,20 @@ Notes - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,35 +25,35 @@ +

    + + Recursive Inlined Functions -

    +

    - An interesting peculiarity of functions like at when applied to a Forward - Sequence like list + 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 -

    +

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

    +

    + + Tag Dispatching +

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

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

    @@ -87,24 +88,24 @@
         

    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 -

    +

    + + Extensibility +

    Unlike MPL, there is no extensibe sequence concept in fusion. This does not mean that Fusion @@ -112,69 +113,69 @@ 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. + 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 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 + 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 + 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 -

    +

    + + 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 +184,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 -

    +

    + + 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 +225,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 +237,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 04e38384..f8b81d23 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,7 +3,7 @@ Organization - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@

    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 @@ -34,10 +33,10 @@

    The library is organized in three layers:

    -

    - - Layers -

    +

    + + Layers +

    @@ -48,15 +47,15 @@

    - The entire library is found in the "boost/fusion" + 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" + there exists "boost/fusion/support.hpp" in the same directory as "boost/fusion/support". Everything, except those found inside "detail" directories, is public.

    - There is also a "boost/fusion/include/" + There is also a "boost/fusion/include/" directory that contains all the headers to all the components and modules. If you are unsure where to find a specific component or module, or don't want to fuss with hierarchy and nesting, use this. @@ -65,10 +64,10 @@ The library is header-only. There is no need to build object files to link against.

    -

    - - Directory -

    +

    + + Directory +

    • tuple @@ -186,12 +185,12 @@ support
    -

    - - Example -

    +

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

    @@ -202,13 +201,13 @@ #include <boost/fusion/include/list.hpp>

    - The first includes all containers The second includes only list - [3] + The first includes all containers The second 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 cad6bad0..dd0d2c31 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,7 +3,7 @@ Preface - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@

    @@ -39,15 +38,15 @@

    - --Niklaus Wirth + --Niklaus Wirth

    -

    - - Description -

    +

    + + Description +

    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, @@ -62,10 +61,10 @@ It is named "fusion" because the library is a "fusion" of compile time metaprogramming with runtime programming.

    -

    - - Motivation -

    +

    + + Motivation +

    Tuples are powerful beasts. After having developed two significant projects (Spirit and Phoenix) @@ -88,17 +87,17 @@ had an adhoc collection of tuple manipulation and traversal routines. It was an instant AHA! moment.

    -

    - - How to use this manual -

    +

    + + 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 1.1. Icons

    -
    +

    Table 1.1. Icons

    +
    @@ -192,17 +191,17 @@ -
    +
    -

    +

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

    -

    - - Support -

    +

    + + Support +

    Please direct all questions to Spirit's mailing list. You can subscribe to the Spirit diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index cf4c6e69..5ddda68f 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,7 +3,7 @@ Quick Start - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,17 +24,16 @@

    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] + For starters, we shall include all of Fusion's Sequence(s) + [1] :

    @@ -42,29 +41,29 @@
     #include <boost/fusion/include/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 +

    + + Print the vector as XML -

    +

    First, let's include the algorithms:

    @@ -94,38 +93,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 - print just about any Fusion Sequence. + for_each is generic. With + print_xml, you can use it to + print just about any Fusion Sequence.

    -

    - - Print only pointers -

    +

    + + 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:

    @@ -138,37 +137,37 @@
     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 -

    +

    + + Associative tuples +

    Ok, moving on...

    - Apart from vector, + 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 + its own characteristics. We have list, set, map, plus a multitude of views that provide various ways to present the sequences.

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

     namespace fields
    @@ -177,32 +176,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:

    @@ -218,19 +217,19 @@
     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 -

    +

    + + 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, @@ -239,14 +238,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 + 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 0ec48142..783cd2f8 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,7 +3,7 @@ References - + @@ -11,10 +11,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -23,8 +23,7 @@
    Concepts
    @@ -52,17 +51,17 @@

    Like MPL, the Sequence is a fundamental concept in Fusion. A Sequence may or may not actually - store or contain data. Container are - sequences that hold data. Views, on the + store or contain data. Container 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 + Sequence have an associated Iterator type that can be used to iterate through the Sequence's elements.

    -

    - - Header -

    +

    + + Header +

     #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 8351e7a5..b0e6586e 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -3,19 +3,20 @@
     
     Concepts
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +25,7 @@
    Forward Sequence
    @@ -39,25 +39,31 @@

    Fusion Sequences are organized into a hierarchy of concepts.

    -
    - - Traversal -
    +

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

    + + Associativity +

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

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 772523bd..52601047 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -1,21 +1,23 @@ -Associative Sequence +Associative + Sequence - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,13 +26,13 @@
    +
    + + Description +

    An Associative Sequence allows efficient retrieval of elements based on keys. Like associative sequences in MPL, @@ -46,33 +48,33 @@

    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 +
    + + Valid Expressions -
    +

    For any Associative Sequence the following expressions must be valid:

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

    - has_key<K>(s) + has_key<K>(s)

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

    - at_key<K>(s) + at_key<K>(s)

    @@ -152,8 +154,8 @@

    - at_key<K>(s) - = o + at_key<K>(s) + = o

    @@ -163,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.

    @@ -177,11 +179,11 @@ -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -203,8 +205,8 @@

    - result_of::has_key<S, - K>::type + result_of::has_key<S, + K>::type

    @@ -216,8 +218,8 @@

    - result_of::at_key<S, - K>::type + result_of::at_key<S, + K>::type

    @@ -229,8 +231,8 @@

    - result_of::value_at_key<S, - K>::type + result_of::value_at_key<S, + K>::type

    @@ -241,22 +243,19 @@
    - +
    + + Expression Semantics -
    +
    @@ -278,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 -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index f6b6a22b..29873750 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -1,21 +1,24 @@ -Bidirectional Sequence +Bidirectional + Sequence - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,54 +27,58 @@ +
    + + Description +

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

    -
    - - Refinement +
    + + Refinement of -
    +

    - Forward Sequence + Forward Sequence

    Notation

    -
    s
    +
    s

    A Forward Sequence

    -
    S
    +
    S

    A Forward Sequence type

    -
    o
    +
    o

    An arbitrary object

    -
    e
    +
    e

    A Sequence element

    -
    - - Valid +
    + + Valid Expressions -
    +

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

    @@ -107,12 +114,13 @@ @@ -129,12 +137,13 @@ @@ -151,7 +160,7 @@ @@ -197,11 +206,11 @@

    - begin(s) + begin(s)

    - Bidirectional + Bidirectional Iterator

    - end(s) + end(s)

    - Bidirectional + Bidirectional Iterator

    - back(s) + back(s)

    @@ -172,8 +181,8 @@

    - back(s) - = o + back(s) + = o

    @@ -183,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.

    -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -223,7 +232,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -235,7 +244,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -247,7 +256,7 @@

    - result_of::back<S>::type + result_of::back<S>::type

    @@ -258,14 +267,15 @@
    -
    - - Expression +
    + + Expression Semantics -
    +

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

    @@ -288,35 +298,35 @@

    - back(s) + back(s)

    - The last element in the sequence; see back. + The last element in the sequence; see back.

    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 7c5ed91b..72234679 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -1,21 +1,23 @@ -Forward Sequence +Forward + Sequence - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,13 +26,13 @@ +
    + + 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. @@ -41,29 +43,29 @@

    Notation

    -
    s
    +
    s

    A Forward Sequence

    -
    S
    +
    S

    A Forward Sequence type

    -
    o
    +
    o

    An arbitrary object

    -
    e
    +
    e

    A Sequence element

    -
    - - Valid +
    + + Valid Expressions -
    +

    For any Forward Sequence the following expressions must be valid:

    @@ -100,12 +102,13 @@

    - begin(s) + begin(s)

    - Forward + Forward Iterator

    @@ -122,12 +125,13 @@

    - end(s) + end(s)

    - Forward + Forward Iterator

    @@ -144,7 +148,7 @@

    - size(s) + size(s)

    @@ -166,7 +170,7 @@

    - empty(s) + empty(s)

    @@ -188,7 +192,7 @@

    - front(s) + front(s)

    @@ -209,8 +213,8 @@

    - front(s) - = o + front(s) + = o

    @@ -220,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.

    @@ -234,11 +238,11 @@ -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -260,7 +264,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -272,7 +276,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -284,7 +288,7 @@

    - result_of::size<S>::type + result_of::size<S>::type

    @@ -296,7 +300,7 @@

    - result_of::empty<S>::type + result_of::empty<S>::type

    @@ -308,7 +312,7 @@

    - result_of::front<S>::type + result_of::front<S>::type

    @@ -319,11 +323,11 @@
    -
    - - Expression +
    + + Expression Semantics -
    +
    @@ -345,113 +349,113 @@

    - 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 -
    +
    + + Invariants +

    For any Forward Sequence s the following invariants always hold:

    • -[begin(s), end(s)) is always a valid range. +[begin(s), end(s)) is always a valid range.
    • - An Algorithm that iterates through - the range [begin(s), end(s)) will pass through every element of - s exactly once. + An Algorithm that iterates through + the range [begin(s), end(s)) will pass through every element of + s exactly once.
    • -begin(s) - is identical to end(s)) - if and only if s is empty. +begin(s) + is identical to end(s)) + if and only if s is empty.
    • - Two different iterations through s + Two different iterations through s will access its elements in the same order.
    -
    - - Models -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 5f5ae7b9..3ac377a8 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -1,21 +1,24 @@ -Random Access Sequence +Random + Access Sequence - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,61 +27,65 @@ +
    + + Description +

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

    -
    - - Refinement +
    + + Refinement of -
    +

    - Bidirectional + Bidirectional Sequence

    Notation

    -
    s
    +
    s

    A Random Access Sequence

    -
    S
    +
    S

    A Random Access Sequence type

    -
    N
    +
    N

    An MPL Integral Constant

    -
    o
    +
    o

    An arbitrary object

    -
    e
    +
    e

    A Sequence element

    -
    - - Valid +
    + + Valid Expressions -
    +

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

    @@ -114,12 +121,13 @@ @@ -136,12 +144,13 @@ @@ -158,7 +167,7 @@ @@ -204,11 +213,11 @@

    - begin(s) + begin(s)

    - Random + Random Access Iterator

    - end(s) + end(s)

    - Random + Random Access Iterator

    - at<N>(s) + at<N>(s)

    @@ -179,8 +188,8 @@

    - at<N>(s) - = o + at<N>(s) + = o

    @@ -190,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.

    -
    - - Result +
    + + Result Type Expressions -
    +
    @@ -230,7 +239,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -242,7 +251,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -254,8 +263,8 @@

    - result_of::at<S, - N>::type + result_of::at<S, + N>::type

    @@ -267,8 +276,8 @@

    - result_of::value_at<S, - N>::type + result_of::value_at<S, + N>::type

    @@ -279,25 +288,23 @@
    - +
    + + Expression Semantics -
    +

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

    @@ -320,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 -
    +
    + + Models +
    diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 7582a4ae..c52186f1 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -3,19 +3,20 @@ Intrinsic - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,33 +25,32 @@

    - Intrinsic form the essential interface of every Fusion Sequence. + Intrinsic 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 - [4] + Intrinsic functions, unlike Algorithms, + are not generic across the full Sequence + repertoire. They need to be implemented for each Fusion Sequence + [4] .

    -
    - - Header -
    +

    + + Header +

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


    -

    [4] +

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

    diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index 95be11a2..850a95b6 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -3,7 +3,7 @@ Functions - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    begin
    end
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 00fd97c1..0da653e0 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -3,7 +3,7 @@ at - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    -at -
    +at
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@

    - seq + seq

    - Model of Random + Model of Random Access Sequence

    - N + N

    @@ -113,47 +113,47 @@
    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html index 82b82f62..2a3fa109 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    -at_c -
    +at_c
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@

    - seq + seq

    - Model of Random + Model of Random Access Sequence

    - N + N

    @@ -112,48 +112,48 @@
    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/at_c.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html index 0d8c6543..7bb0c710 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    - - Description + + Description

    Returns the element associated with a Key from the sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@

    - seq + seq

    - Model of Associative + Model of Associative Sequence

    - Key + Key

    @@ -112,43 +112,43 @@
    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html index dc88a8e5..6628b362 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/back.html +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html @@ -3,7 +3,7 @@ back - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    -back -
    +back
    - - Description + + Description

    Returns the last element in the sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -76,12 +75,13 @@ @@ -93,43 +93,43 @@

    - seq + seq

    - Model of Bidirectional + Model of Bidirectional Sequence

    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html index d5e56321..65f3d483 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -76,12 +75,13 @@ @@ -93,44 +93,50 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + 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 + 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 + Semantics: Returns an iterator pointing to the first element in the sequence.

    - - Header + + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html index 0cb5935a..6123710a 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,29 +24,28 @@
    - - Description + + 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 + + Synopsis
     template <typename Sequence>
    -typename result_of::empty<Sequence>::type
    +typename result_of::empty<Sequence>::type
     empty(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -74,12 +73,13 @@ @@ -91,34 +91,34 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html index de42b363..7b203fdf 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/end.html +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html @@ -3,7 +3,7 @@ end - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    -end -
    +end
    - - Description + + Description

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

    - - Synopsis + + 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 + + Parameters
    @@ -76,12 +75,13 @@ @@ -93,44 +93,50 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + 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 + 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 + Semantics: Returns an iterator pointing to one element past the end of the sequence.

    - - Header + + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html index 944e5098..a65fecac 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/front.html +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html @@ -3,7 +3,7 @@ front - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,30 @@
    - - Description + + Description

    Returns the first element in the sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -76,12 +75,13 @@ @@ -93,43 +93,43 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + 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 + 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 + + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html index 17f0e6eb..28343c9f 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,30 +24,29 @@
    - - Description + + 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 + + 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 + + Parameters
    @@ -76,12 +75,13 @@ @@ -94,7 +94,7 @@

    - seq + seq

    - Model of Associative + Model of Associative Sequence

    - Key + Key

    @@ -111,34 +111,34 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html index d635353f..5e14fe96 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/size.html +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html @@ -3,7 +3,7 @@ size - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,28 +24,27 @@
    -size -
    +size
    - - Description + + Description

    - Returns a type convertible to int + Returns a type convertible to int that evaluates the number of elements in the sequence.

    - - Synopsis + + Synopsis
     template <typename Sequence>
    -typename result_of::size<Sequence>::type
    +typename result_of::size<Sequence>::type
     size(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -73,12 +72,13 @@ @@ -90,34 +90,34 @@

    - seq + seq

    - Model of Forward + Model of Forward Sequence

    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - - Example + + 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/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html index 4ddc594b..fdc17831 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html @@ -3,7 +3,7 @@ swap - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@
    -swap -
    +swap
    - - Description + + Description

    Performs an element by element swap of the elements in 2 sequences.

    - - Synopsis + + Synopsis
     template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - - Parameters + + Parameters
    @@ -71,12 +70,13 @@ @@ -88,34 +88,34 @@

    - seq1, seq2 + seq1, seq2

    - Models of Forward + Models of Forward Sequence

    - - Expression + + Expression Semantics
     swap(seq1, seq2);
     

    - Return type: void + Return type: void

    - Precondition: size(seq1) == size(seq2) + Precondition: size(seq1) == size(seq2)

    - Semantics: Calls swap(a1, b1) for corresponding elements in seq1 and seq2. + Semantics: Calls swap(a1, b1) for corresponding elements in seq1 and seq2.

    /sequence/intrinsic/swap.hpp>

    - - Example + + Example
    -vector<int, std::string> v1(1, "hello"), v2(2, "world");
    +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"));
    +assert(v1 == make_vector(2, "world"));
    +assert(v2 == make_vector(1, "hello"));
     
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html index 201a5af3..39bfd37b 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    begin
    end
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index 950b6715..f64d3635 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -3,7 +3,7 @@ at - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,19 @@
    -at -
    +at
    - - Description + + Description

    - Returns the result type of at - [5] + Returns the result type of at + [5] .

    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.25. Parameters

    -
    +

    Table 1.25. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - N + N

    @@ -111,41 +111,41 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/at.hpp>

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


    -

    [5] - 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 +

    [5] + result_of::at reflects the actual return + type of the function at. Sequence(s) + typically return references to its elements via the at function. If you want + to get the actual element type, use result_of::value_at

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 5c542c52..9a1467cf 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,19 @@
    -at_c -
    +at_c
    - - Description + + Description

    - Returns the result type of at_c - [6] + Returns the result type of at_c + [6] .

    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.26. Parameters

    -
    +

    Table 1.26. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - M + M

    @@ -110,41 +110,41 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/at.hpp>

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


    -

    [6] - 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 +

    [6] + result_of::at_c reflects the actual + return type of the function at_c. Sequence(s) + typically return references to its elements via the at_c function. If you want + to get the actual element type, use result_of::value_at_c

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 7a9363f4..616c7e69 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,20 +24,19 @@
    - - Description + + Description

    - Returns the result type of at_key - [7] + Returns the result type of at_key + [7] .

    - - Synopsis + + Synopsis
     template<
    @@ -49,8 +48,8 @@
     };
     
    -

    Table 1.30. Parameters

    -
    +

    Table 1.30. Parameters

    +
    @@ -77,12 +76,13 @@ @@ -95,7 +95,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - Key + Key

    @@ -110,43 +110,43 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/at_key.hpp>

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


    -

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

    [7] + result_of::at_key reflects the actual + return type of the function at_key. _sequence_s + typically return references to its elements via the at_key function. If you + want to get the actual element type, use result_of::value_at_key

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 765ab178..0c036000 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -3,7 +3,7 @@ back - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -back -
    +back
    - - Description + + Description

    - Returns the result type of back. + Returns the result type of back.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -45,8 +44,8 @@
     };
     
    -

    Table 1.23. Parameters

    -
    +

    Table 1.23. Parameters

    +
    @@ -72,12 +71,13 @@ @@ -87,33 +87,33 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/back.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html index 55e04aec..01959372 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the result type of begin. + Returns the result type of begin.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -45,8 +44,8 @@
     };
     
    -

    Table 1.19. Parameters

    -
    +

    Table 1.19. Parameters

    +
    @@ -72,12 +71,13 @@ @@ -87,35 +87,35 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/begin.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html index 362f1504..46b6ecd6 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the result type of empty. + Returns the result type of empty.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -45,8 +44,8 @@
     };
     
    -

    Table 1.21. Parameters

    -
    +

    Table 1.21. Parameters

    +
    @@ -72,12 +71,13 @@ @@ -87,38 +87,38 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/empty.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html index 08add2ba..9996629f 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html @@ -3,7 +3,7 @@ end - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -end -
    +end
    - - Description + + Description

    - Returns the result type of end. + Returns the result type of end.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -45,8 +44,8 @@
     };
     
    -

    Table 1.20. Parameters

    -
    +

    Table 1.20. Parameters

    +
    @@ -72,12 +71,13 @@ @@ -87,35 +87,35 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/end.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html index 77ef826d..e7ac5200 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html @@ -3,7 +3,7 @@ front - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the result type of front. + Returns the result type of front.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -45,8 +44,8 @@
     };
     
    -

    Table 1.22. Parameters

    -
    +

    Table 1.22. Parameters

    +
    @@ -72,12 +71,13 @@ @@ -87,34 +87,34 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/front.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html index ff2230fb..ec2f92cc 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the result type of has_key. + Returns the result type of has_key.

    - - Synopsis + + Synopsis
     template<
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.29. Parameters

    -
    +

    Table 1.29. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - Key + Key

    @@ -108,37 +108,37 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/has_key.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html index 83d28869..d1406503 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html @@ -3,7 +3,7 @@ size - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -size -
    +size
    - - Description + + Description

    - Returns the result type of size. + Returns the result type of size.

    - - Synopsis + + Synopsis
     template<typename Seq>
    @@ -45,8 +44,8 @@
     };
     
    -

    Table 1.24. Parameters

    -
    +

    Table 1.24. Parameters

    +
    @@ -72,12 +71,13 @@ @@ -87,34 +87,34 @@

    -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/size.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html index 8f00c0f2..0311007f 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html @@ -3,7 +3,7 @@ swap - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    -swap -
    +swap
    - - Description + + Description

    Returns the return type of swap.

    - - Synopsis + + Synopsis
     template<typename Seq1, typename Seq2>
    @@ -45,8 +44,8 @@
     };
     
    -

    Table 1.32. Parameters

    -
    +

    Table 1.32. Parameters

    +
    @@ -72,12 +71,13 @@ @@ -87,21 +87,21 @@

    -

    - Seq1, Seq2 + Seq1, Seq2

    - Models of Forward + Models of Forward Sequence

    +
    -
    - - Expression +
    + + Expression Semantics
     result_of::swap<Seq1, Seq2>::type
     

    - Return type: void. + Return type: void.

    - Semantics: Always returns void. + Semantics: Always returns void.

    /sequence/intrinsic/swap.hpp> diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index bc06c629..2c526a2e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html @@ -3,7 +3,7 @@ value_at - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the actual type at a given index from the Sequence. + Returns the actual type at a given index from the Sequence.

    - - Synopsis + + Synopsis
     template<
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.27. Parameters

    -
    +

    Table 1.27. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - N + N

    @@ -109,33 +109,33 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/value_at.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html index 65e73bc8..ce8f269d 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html @@ -3,7 +3,7 @@ value_at_c - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the actual type at a given index from the Sequence. + Returns the actual type at a given index from the Sequence.

    - - Synopsis + + Synopsis
     template<
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.28. Parameters

    -
    +

    Table 1.28. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - M + M

    @@ -108,33 +108,33 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/value_at.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html index ee0e93fa..1e59c484 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html @@ -3,7 +3,7 @@ value_at_key - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +24,17 @@
    - - Description + + Description

    - Returns the actual element type associated with a Key from the Sequence. + Returns the actual element type associated with a Key from the Sequence.

    - - Synopsis + + Synopsis
     template<
    @@ -47,8 +46,8 @@
     };
     
    -

    Table 1.31. Parameters

    -
    +

    Table 1.31. Parameters

    +
    @@ -75,12 +74,13 @@ @@ -93,7 +93,7 @@ -

    - Seq + Seq

    - A model of Forward + A model of Forward Sequence

    - Key + Key

    @@ -108,34 +108,34 @@
    +
    -
    - - Expression +
    + + Expression Semantics
     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.

    /sequence/intrinsic/value_at_key.hpp>

    - - Example + + 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/sequence/operator.html b/doc/html/fusion/sequence/operator.html index fbda4009..1b52d062 100644 --- a/doc/html/fusion/sequence/operator.html +++ b/doc/html/fusion/sequence/operator.html @@ -3,7 +3,7 @@ Operator - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,14 +24,13 @@

    - These operators, like the Algorithms, + These operators, like the Algorithms, work generically on all Fusion sequences. All conforming Fusion sequences automatically get these operators for free.

    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index 6067c78b..d672ae90 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -3,7 +3,7 @@ Comparison - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@

    - 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 -
    +
    + + Header +
     #include <boost/fusion/sequence/comparison.hpp>
     #include <boost/fusion/include/comparison.hpp>
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index 9ba43046..ac58ba16 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -3,19 +3,20 @@
     
     equal
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,18 +25,17 @@
    - - Description + + Description

    Compare two sequences for equality.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -43,8 +43,8 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -72,41 +72,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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,31 +114,31 @@ 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 + + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - - Example + + 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/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html index 59e60624..2220a666 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html @@ -1,21 +1,24 @@ -greater than +greater + than - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,15 +27,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -40,8 +43,8 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -69,41 +72,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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.

    @@ -111,24 +114,24 @@ compile time error.

    - Semantics: Returns b < a. + Semantics: Returns b < a.

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html index e0e224ee..821bbe24 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html @@ -1,21 +1,23 @@ -greater than equal +greater + than equal - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,15 +26,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -40,8 +42,8 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -69,41 +71,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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.

    @@ -111,24 +113,24 @@ compile time error.

    - Semantics: Returns !(a < b). + Semantics: Returns !(a < b).

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html index ad89b6f8..be1cc13c 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html @@ -1,21 +1,24 @@ -less than +less + than - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,15 +27,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -40,8 +43,8 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -69,41 +72,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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.

    @@ -111,26 +114,26 @@ compile time error.

    - Semantics: Returns the lexicographical - comparison of between a - and b. + Semantics: Returns the lexicographical + comparison of between a + and b.

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - - Example + + 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/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html index f7854d63..fbd644ff 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html @@ -1,21 +1,24 @@ -less than equal +less + than equal - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,15 +27,15 @@

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -40,8 +43,8 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -69,41 +72,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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.

    @@ -111,24 +114,24 @@ compile time error.

    - Semantics: Returns !(b < a). + Semantics: Returns !(b < a).

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html index 670b29fa..df6ff637 100644 --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html @@ -1,21 +1,23 @@ -not equal +not + equal - + - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,15 +26,15 @@

    Compare two sequences for inequality.

    - - Synopsis + + Synopsis
     template <typename Seq1, typename Seq2>
    @@ -40,8 +42,8 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -69,41 +71,41 @@

    - a, - b + a, + b

    - Instances of Sequence + Instances of Sequence

    - Sequence(s) to compare + Sequence(s) to compare

    - - Expression + + Expression Semantics
     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.

    @@ -111,26 +113,26 @@ compile time error.

    - Semantics: + Semantics:

    Returns !(a == b).

    - - Header + + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - - Example + + 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/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 675f840f..7a89ecfb 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -3,7 +3,7 @@
     
     I/O
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,32 +24,31 @@

    -I/O -

    +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 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<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 + outputs the vector as: (1.0 2 Howdy folks!)

    @@ -58,23 +57,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.

    @@ -84,12 +83,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:

    @@ -99,27 +98,27 @@
               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(':');
     std::cin >> j;
     

    - reads the data into the vector(s) i - and 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 + 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 -
    +
    + + Header +
     #include <boost/fusion/sequence/io.hpp>
     #include <boost/fusion/include/io.hpp>
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index 93285545..cf361fb6 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -3,7 +3,7 @@
     
     in
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    -in -
    +in
    - - Description + + Description

    - Read a Sequence from an input + Read a Sequence from an input stream.

    - - Synopsis + + Synopsis
     template <typename IStream, typename Sequence>
    @@ -44,8 +43,8 @@
     operator>>(IStream& is, Sequence& seq);
     
    - - Parameters + + Parameters
    @@ -96,7 +95,7 @@

    - A Sequence. + A Sequence.

    @@ -108,35 +107,35 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - - Example + + Example
    -vector<int, std::string, char> v;
    +vector<int, std::string, char> v;
     std::cin >> v;
     
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html index bd543744..dc94b7e4 100644 --- a/doc/html/fusion/sequence/operator/i_o/out.html +++ b/doc/html/fusion/sequence/operator/i_o/out.html @@ -3,7 +3,7 @@ out - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,19 +24,18 @@
    -out -
    +out
    - - Description + + Description

    - Write a Sequence to an output + Write a Sequence to an output stream.

    - - Synopsis + + Synopsis
     template <typename OStream, typename Sequence>
    @@ -44,8 +43,8 @@
     operator<<(OStream& os, Sequence& seq);
     
    - - Parameters + + Parameters
    @@ -96,7 +95,7 @@

    - A Sequence. + A Sequence.

    @@ -108,35 +107,35 @@
    - - Expression + + Expression Semantics
     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 + + Header
     #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - - Example + + 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/support.html b/doc/html/fusion/support.html index 83bf6cf2..949ca5d8 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,7 +3,7 @@ Support - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    is_sequence
    is_view
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index b138e819..4aa7854c 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,7 +3,7 @@ category_of - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,22 +24,21 @@
    +

    + + Description +

    A metafunction that establishes the conceptual classification of a particular - Sequence or Iterator - (see Iterator Concepts and - Sequence Concepts). + Sequence or Iterator + (see Iterator Concepts and + Sequence Concepts).

    -
    - - Synopsis -
    +

    + + Synopsis +

     namespace traits
     {
    @@ -50,10 +49,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -80,7 +79,7 @@

    - T + T

    @@ -95,16 +94,16 @@
    -
    - - Expression +

    + + Expression Semantics -

    +
     typedef traits::category_of<T>::type category;
     

    - Return type: + Return type:

    For Iterators, the return type is derived from one of: @@ -158,25 +157,25 @@ }}

    - Semantics: Establishes the conceptual classification - of a particular Sequence or Iterator. + Semantics: Establishes the conceptual classification + of a particular Sequence or Iterator.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    -
    - - Example -
    +

    + + 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 91cb0563..e38e4188 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -3,7 +3,7 @@ deduce - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,33 +24,32 @@ +

    + + Description +

    - Metafunction to apply element + 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). + 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 -
    +

    + + Header +

     #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     namespace traits
     {
    @@ -61,10 +60,10 @@
         };
     }
     
    -
    - - Example -
    +

    + + Example +

     template <typename T>
     struct holder
    @@ -82,11 +81,11 @@
         return holder<T>(a);
     }
     
    -
    - - See also -
    - +

    + + See also +

    + diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 0c81669f..19498df8 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,7 +3,7 @@ deduce_sequence - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,31 +24,32 @@ +

    + + Description +

    - Applies element - conversion to each element in a Forward - Sequence. The resulting type is a Random + 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 -
    +

    + + Header +

     #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     namespace traits
     {
    @@ -59,10 +60,10 @@
         };
     }
     
    -
    - - Example -
    +

    + + Example +

     template <class Seq>
     struct holder
    @@ -75,18 +76,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 -
    - +

    + + See also +

    + diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index a33ff987..ff60883a 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,7 +3,7 @@ is_sequence - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,23 +24,22 @@ +

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

    + + Synopsis +

     namespace traits
     {
    @@ -51,10 +50,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -81,7 +80,7 @@

    - T + T

    @@ -96,43 +95,43 @@
    -
    - - Expression +

    + + Expression Semantics -

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

    + + Header +

     #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    -
    - - Example -
    +

    + + 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 f3c94ec3..b9183d07 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -3,7 +3,7 @@ is_view - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@ +

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

    + + Synopsis +

     namespace traits
     {
    @@ -54,10 +53,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -84,7 +83,7 @@

    - T + T

    @@ -99,43 +98,43 @@
    -
    - - Expression Semantics -
    +

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

    + + Header +

     #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    -
    - - Example -
    +

    + + 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;
    +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 a7ea2689..9ebf447f 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -3,7 +3,7 @@ pair - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,23 +24,22 @@

    -pair -

    -
    - - Description -
    +pair
    +

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

    + + Synopsis +

     template <typename First, typename Second>
     struct pair;
    @@ -61,10 +60,10 @@
     typename result_of::make_pair<First,Second>::type
     make_pair(Second const &);
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -112,38 +111,38 @@

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

    + + Expression Semantics +

    @@ -167,13 +166,13 @@ @@ -181,13 +180,13 @@ @@ -195,7 +194,7 @@ @@ -221,12 +220,12 @@ @@ -234,36 +233,36 @@ @@ -275,18 +274,18 @@

    - 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()

    @@ -208,12 +207,12 @@

    - 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.second + p.second

    - Get the data from p1.]] [[p - = p2] [Assigns a + Get the data from p1.]] [[p + = p2] [Assigns a pair, - p1, from - another pair, p2.]] + p1, from + another pair, p2.]] [[make_pair<F>(s)] [Make a pair given the first type, - F, and + F, and a value for the - second type, s. + 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] + 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 + for equality.]] [[p != p2`

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    -
    - - Example -
    +

    + + Example +

     pair<int, char> p('X');
     std::cout << p << std::endl;
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index b17f6e16..5c2438c8 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -3,7 +3,7 @@
     
     tag_of
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,26 +24,25 @@ +

    + + Description +

    All conforming Fusion sequences and iterators have an associated tag type. - The purpose of the tag is to enable tag - dispatching from Intrinsic + 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.

    -
    - - Synopsis -
    +

    + + Synopsis +

     namespace traits
     {
    @@ -54,10 +53,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -84,7 +83,7 @@

    - T + T

    @@ -99,37 +98,37 @@
    -
    - - Expression Semantics -
    +

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

    + + Header +

     #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     
    -
    - - Example -
    +

    + + 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/tuple.html b/doc/html/fusion/tuple.html
    index a9620c2f..8319ff15 100644
    --- a/doc/html/fusion/tuple.html
    +++ b/doc/html/fusion/tuple.html
    @@ -3,7 +3,7 @@
     
     Tuple
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@
    Class template tuple
    @@ -44,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/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 1d9cfe61..64119b29 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -3,7 +3,7 @@ Class template tuple - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@

    Fusion's implementation of the TR1 - Tuple is also a fusion Forward + 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 + Currently tuple is basically a synonym for vector, although this may be changed in future releases of fusion.

    -
    - - Synopsis -
    +

    + + Synopsis +

     template<
         typename T1 = unspecified,
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index a4b71b5b..9b1cb593 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -3,19 +3,20 @@
     
     Construction
     
    -
    +
     
     
     
    -
    +
     
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,12 +25,11 @@ +
    + + Description +

    The TR1 Tuple type provides a default constructor, a constructor that takes @@ -37,34 +37,34 @@ copy constructor. The details of the various constructors are described in this section.

    -
    - - Specification -
    +
    + + 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 + The type of the ith element of a tuple

    -
    Pi
    +
    Pi

    - The type of the ith + The type of the ith parameter

    @@ -73,48 +73,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/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index eb8f30fa..450afe7c 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -1,21 +1,24 @@ -Element access +Element + access - + - - + +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,59 +27,59 @@ +
    + + 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 -
    +
    + + Specification +
     template<int I, T>
     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/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html index 85c7953a..c0ae67bd 100644 --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html @@ -1,21 +1,23 @@ -Relational operators +Relational + operators - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,45 +26,45 @@ +
    + + Description +

    The TR1 Tuple provides the standard boolean relational operators.

    -
    - - Specification -
    +
    + + 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 + The type of the ith element of a tuple

    -
    Pi
    +
    Pi

    - The type of the ith + The type of the ith parameter

    @@ -75,19 +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,
    @@ -97,16 +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,
    @@ -116,14 +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,
    @@ -133,14 +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,
    @@ -150,15 +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,
    @@ -168,14 +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).

    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index a53564fa..d9dccb61 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -1,21 +1,23 @@ -Tuple creation functions +Tuple + creation functions - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,44 +26,44 @@ +
    + + 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 -
    +
    + + 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. + 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/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html index 7aa69963..0b7368bc 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html @@ -1,21 +1,24 @@ -Tuple helper classes +Tuple + helper classes - + - - + + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,51 +27,51 @@ +
    + + Description +

    The TR1 Tuple provides 2 helper traits, for compile time access to the tuple size, and the element types.

    -
    - - Specification -
    +
    + + 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.

    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html index 2c8f24af..9e5d1283 100644 --- a/doc/html/fusion/tuple/pairs.html +++ b/doc/html/fusion/tuple/pairs.html @@ -3,19 +3,20 @@ Pairs - + - +
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,50 +25,49 @@

    -Pairs -

    -
    - - Description -
    +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 -
    +

    + + 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.

    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html index 47c3764d..180b732b 100644 --- a/doc/html/fusion/view.html +++ b/doc/html/fusion/view.html @@ -3,7 +3,7 @@ View - + @@ -12,10 +12,10 @@
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,8 +24,7 @@

    -View -

    +View
    single_view
    filter_view
    @@ -44,10 +43,10 @@ sequence(s) are actually accessed. Views' lazy nature make them very cheap to copy and be passed around by value.

    -

    - - Header -

    +

    + + Header +

     #include <boost/fusion/view.hpp>
     #include <boost/fusion/include/view.hpp>
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index bc5ee643..734b5ffe 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -3,7 +3,7 @@
     
     filter_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,39 +24,38 @@
    +

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

    + + Header +

     #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <typename Sequence, typename Pred>
     struct filter_view;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -84,12 +83,13 @@ @@ -101,12 +101,12 @@

    - Sequence + Sequence

    - A Forward + A Forward Sequence

    - Pred + Pred

    - Unary Metafunction returning an mpl::bool_ + Unary Metafunction returning an mpl::bool_

    @@ -116,36 +116,39 @@
    -
    - - Model of -
    - +

    + + Model of +

    +

    Notation

    -
    F
    +
    F

    - A filter_view type + A filter_view type

    -
    f, - f2
    +
    f, + f2

    - Instances of filter_view + Instances of filter_view

    -
    s
    +
    s

    - A Forward Sequence + A Forward Sequence

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -169,57 +172,57 @@

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

    + + Example +

     using boost::mpl::_;
     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/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index da52af1f..68a3b260 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -3,7 +3,7 @@
     
     iterator_range
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,36 +24,35 @@ +

    + + Description +

    - iterator_range presents a + iterator_range presents a sub-range of its underlying sequence delimited by a pair of iterators.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <typename First, typename Last>
     struct iterator_range;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -81,12 +80,12 @@

    - First + First

    - A fusion Iterator + A fusion Iterator

    @@ -97,12 +96,12 @@

    - Last + Last

    - A fusion Iterator + A fusion Iterator

    @@ -112,48 +111,52 @@
    -
    - - Model of -
    +

    + + Model of +

    Notation

    -
    IR
    +
    IR

    - An iterator_range type + An iterator_range type

    -
    f
    +
    f

    - An instance of First + An instance of First

    -
    l
    +
    l

    - An instance of Last + An instance of Last

    -
    ir, - ir2
    +
    ir, + ir2

    - Instances of iterator_range + Instances of iterator_range

    -
    - - Expression +

    + + Expression Semantics -

    +

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

    @@ -177,62 +180,62 @@

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

    + + 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/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 0505807e..1d617e57 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -3,7 +3,7 @@
     
     joint_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,36 +24,35 @@ +

    + + Description +

    - joint_view presents a view + joint_view presents a view which is a concatenation of two sequences.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <typename Sequence1, typename Sequence2>
     struct joint_view;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -81,12 +80,13 @@ @@ -98,12 +98,13 @@ @@ -114,40 +115,42 @@

    - Sequence1 + Sequence1

    - A Forward + A Forward Sequence

    - Sequence2 + Sequence2

    - A Forward + A Forward Sequence

    -
    - - Model of -
    - +

    + + Model of +

    +

    Notation

    -
    JV
    +
    JV

    - A joint_view type + A joint_view type

    -
    s1
    +
    s1

    - An instance of Sequence1 + An instance of Sequence1

    -
    s2
    +
    s2

    - An instance of Sequence2 + An instance of Sequence2

    -
    jv, - jv2
    +
    jv, + jv2

    - Instances of joint_view + Instances of joint_view

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -171,58 +174,58 @@

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

    + + 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/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html index c1515ca3..bc1ea08e 100644 --- a/doc/html/fusion/view/reverse_view.html +++ b/doc/html/fusion/view/reverse_view.html @@ -3,7 +3,7 @@ reverse_view - + @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,33 +24,32 @@

    - reverse_view presents a reversed + 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 -
    +

    + + Header +

     #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <typename Sequence>
     struct reverse_view;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -77,12 +76,13 @@ @@ -92,38 +92,40 @@

    - Sequence + Sequence

    - A Bidirectional + A Bidirectional Sequence

    -
    - - Model of -
    -
    • Bidirectional +

      + + Model of +

      +

      Notation

      -
      RV
      +
      RV

      - A reverse_view type + A reverse_view type

      -
      s
      +
      s

      - An instance of Sequence + An instance of Sequence

      -
      rv, - rv2
      +
      rv, + rv2

      - Instances of reverse_view + Instances of reverse_view

      -
      - - Expression +

      + + Expression Semantics -

      +

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

      @@ -147,53 +149,53 @@

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

      + + 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/view/single_view.html b/doc/html/fusion/view/single_view.html
      index 263b38c8..f302a863 100644
      --- a/doc/html/fusion/view/single_view.html
      +++ b/doc/html/fusion/view/single_view.html
      @@ -3,7 +3,7 @@
       
       single_view
       
      -
      +
       
       
       
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -24,32 +24,31 @@

    - single_view is a view into + single_view is a view into a value as a single element sequence.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <typename T>
     struct single_view;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -76,7 +75,7 @@

    - T + T

    @@ -90,36 +89,38 @@
    -
    - - Model of -
    - +

    + + Model of +

    +

    Notation

    -
    S
    +
    S

    - A single_view type + A single_view type

    -
    s, - s2
    +
    s, + s2

    - Instances of single_view + Instances of single_view

    -
    x
    +
    x

    - An instance of T + An instance of T

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -143,51 +144,51 @@

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

    + + Example +

     single_view<int> view(3);
     std::cout << view << std::endl;
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index a51e6be8..6baac9f9 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -3,7 +3,7 @@
     
     transform_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,47 +24,46 @@

    - The unary version of 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 + 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 + or function pointer. The transform_view + inherits the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence or sequences.

    -
    - - Header -
    +

    + + Header +

     #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

    - Unary Version + Unary Version

     template <typename Sequence, typename F1>
     struct transform_view;
     

    - Binary Version + Binary Version

     template <typename Sequence1, typename Sequence2, typename F2>
     struct transform_view;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -92,12 +91,13 @@ @@ -109,12 +109,13 @@ @@ -126,12 +127,13 @@ @@ -143,14 +145,14 @@ @@ -162,14 +164,14 @@ @@ -180,73 +182,79 @@

    - Sequence + Sequence

    - A Forward + A Forward Sequence

    - Sequence1 + Sequence1

    - A Forward + A Forward Sequence

    - Sequence2 + Sequence2

    - A Forward + A Forward Sequence

    - F1 + F1

    - 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 + 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 + 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 + 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.

    -
    - - Model of -
    +

    + + Model of +

    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

    -
    f1
    +
    f1

    - An instance of F1 + An instance of F1

    -
    f2
    +
    f2

    - An instance of F2 + An instance of F2

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

    + + 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) + defined in Forward + Sequence, Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence or sequences.

    @@ -270,68 +278,68 @@

    - UTV(s, f1) + UTV(s, f1)

    - Creates a unary transform_view - given sequence, s - and unary function object or function pointer, f1. + Creates a unary transform_view + given sequence, s + and unary function object or function pointer, f1.

    - BTV(s1, s2, f2) + BTV(s1, s2, f2)

    - Creates a binary transform_view - given sequences, s1 - and s2 and binary - function object or function pointer, f2. + 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 -
    +

    + + Example +

     struct square
     {
    @@ -350,7 +358,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/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index 49a3da12..fe54d444 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -3,7 +3,7 @@
     
     zip_view
     
    -
    +
     
     
     
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -24,39 +24,38 @@ +

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

    + + Header +

     #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

     template <typename Sequences>
     struct zip_view;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -83,12 +82,13 @@ @@ -98,43 +98,47 @@

    - Sequences + Sequences

    - A Forward + A Forward Sequence of references to other Fusion _sequence_s

    -
    - - Model of -
    +

    + + Model of +

    Notation

    -
    ZV
    +
    ZV

    - A joint_view type + A joint_view type

    -
    s
    +
    s

    - An instance of Sequences + An instance of Sequences

    -
    zv1, - zv2
    +
    zv1, + zv2

    - Instances of ZV + Instances of ZV

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

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

    @@ -158,12 +162,12 @@ @@ -171,44 +175,44 @@

    - ZV(s) + ZV(s)

    - Creates a zip_view + Creates 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. + 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 -
    +

    + + 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/index.html b/doc/html/index.html index 78810198..2cfc827a 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,17 +3,17 @@ Chapter 1. Fusion 2.0 - + - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,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)

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

    Last revised: March 15, 2008 at 13:47:43 GMT

    Last revised: December 20, 2007 at 05:09:32 GMT


    diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index be49938b..3960af17 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 Joao Abecasis + Copyright (c) 2005-2006 João Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp index 61504fb8..5f08f650 100644 --- a/test/functional/invoke_function_object.cpp +++ b/test/functional/invoke_function_object.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 Joao Abecasis + Copyright (c) 2005-2006 João Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software diff --git a/test/functional/invoke_procedure.cpp b/test/functional/invoke_procedure.cpp index 3e733974..810cb903 100644 --- a/test/functional/invoke_procedure.cpp +++ b/test/functional/invoke_procedure.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2006 Joao Abecasis + Copyright (c) 2005-2006 João Abecasis Copyright (c) 2006-2007 Tobias Schwinger Use modification and distribution are subject to the Boost Software From 36736edec5212fb7054ea5fd04f5693071491507 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 17 Jul 2008 23:59:40 +0000 Subject: [PATCH 12/82] pair doc fix [SVN r47528] --- doc/html/fusion/acknowledgements.html | 6 +- doc/html/fusion/adapted.html | 12 +- doc/html/fusion/adapted/adapt_assoc.html | 16 +-- doc/html/fusion/adapted/adapt_struct.html | 16 +-- doc/html/fusion/adapted/boost__array.html | 14 +- doc/html/fusion/adapted/boost__tuple.html | 14 +- doc/html/fusion/adapted/mpl_sequence.html | 14 +- doc/html/fusion/adapted/std__pair.html | 14 +- doc/html/fusion/algorithm.html | 12 +- doc/html/fusion/algorithm/iteration.html | 8 +- .../fusion/algorithm/iteration/functions.html | 6 +- .../iteration/functions/accumulate.html | 20 +-- .../algorithm/iteration/functions/fold.html | 20 +-- .../iteration/functions/for_each.html | 20 +-- .../algorithm/iteration/metafunctions.html | 6 +- .../iteration/metafunctions/accumulate.html | 18 +-- .../iteration/metafunctions/fold.html | 18 +-- .../iteration/metafunctions/for_each.html | 18 +-- doc/html/fusion/algorithm/query.html | 8 +- .../fusion/algorithm/query/functions.html | 6 +- .../fusion/algorithm/query/functions/all.html | 20 +-- .../fusion/algorithm/query/functions/any.html | 20 +-- .../algorithm/query/functions/count.html | 20 +-- .../algorithm/query/functions/count_if.html | 20 +-- .../algorithm/query/functions/find.html | 20 +-- .../algorithm/query/functions/find_if.html | 18 +-- .../algorithm/query/functions/none.html | 20 +-- .../fusion/algorithm/query/metafunctions.html | 6 +- .../algorithm/query/metafunctions/all.html | 18 +-- .../algorithm/query/metafunctions/any.html | 18 +-- .../algorithm/query/metafunctions/count.html | 18 +-- .../query/metafunctions/count_if.html | 18 +-- .../algorithm/query/metafunctions/find.html | 18 +-- .../query/metafunctions/find_if.html | 18 +-- .../algorithm/query/metafunctions/none.html | 18 +-- doc/html/fusion/algorithm/transformation.html | 8 +- .../algorithm/transformation/functions.html | 6 +- .../transformation/functions/clear.html | 20 +-- .../transformation/functions/erase.html | 20 +-- .../transformation/functions/erase_key.html | 20 +-- .../transformation/functions/filter.html | 20 +-- .../transformation/functions/filter_if.html | 20 +-- .../transformation/functions/insert.html | 20 +-- .../functions/insert_range.html | 20 +-- .../transformation/functions/join.html | 20 +-- .../transformation/functions/pop_back.html | 20 +-- .../transformation/functions/pop_front.html | 20 +-- .../transformation/functions/push_back.html | 20 +-- .../transformation/functions/push_front.html | 20 +-- .../transformation/functions/remove.html | 20 +-- .../transformation/functions/remove_if.html | 20 +-- .../transformation/functions/replace.html | 20 +-- .../transformation/functions/replace_if.html | 20 +-- .../transformation/functions/reverse.html | 20 +-- .../transformation/functions/transform.html | 24 ++-- .../transformation/functions/zip.html | 20 +-- .../transformation/metafunctions.html | 6 +- .../transformation/metafunctions/clear.html | 18 +-- .../transformation/metafunctions/erase.html | 18 +-- .../metafunctions/erase_key.html | 18 +-- .../transformation/metafunctions/filter.html | 18 +-- .../metafunctions/filter_if.html | 18 +-- .../transformation/metafunctions/insert.html | 18 +-- .../metafunctions/insert_range.html | 18 +-- .../transformation/metafunctions/join.html | 16 +-- .../metafunctions/pop_back.html | 18 +-- .../metafunctions/pop_front.html | 16 +-- .../metafunctions/push_back.html | 16 +-- .../metafunctions/push_front.html | 16 +-- .../transformation/metafunctions/remove.html | 18 +-- .../metafunctions/remove_if.html | 18 +-- .../transformation/metafunctions/replace.html | 18 +-- .../metafunctions/replace_if.html | 18 +-- .../transformation/metafunctions/reverse.html | 18 +-- .../metafunctions/transform.html | 24 ++-- .../transformation/metafunctions/zip.html | 16 +-- doc/html/fusion/change_log.html | 6 +- doc/html/fusion/container.html | 8 +- doc/html/fusion/container/cons.html | 20 +-- doc/html/fusion/container/conversion.html | 8 +- .../container/conversion/functions.html | 6 +- .../conversion/functions/as_list.html | 18 +-- .../conversion/functions/as_map.html | 18 +-- .../conversion/functions/as_set.html | 18 +-- .../conversion/functions/as_vector.html | 18 +-- .../container/conversion/metafunctions.html | 6 +- .../conversion/metafunctions/as_list.html | 18 +-- .../conversion/metafunctions/as_map.html | 18 +-- .../conversion/metafunctions/as_set.html | 18 +-- .../conversion/metafunctions/as_vector.html | 18 +-- doc/html/fusion/container/generation.html | 8 +- .../container/generation/functions.html | 6 +- .../generation/functions/list_tie.html | 18 +-- .../generation/functions/make_cons.html | 20 +-- .../generation/functions/make_list.html | 20 +-- .../generation/functions/make_map.html | 24 ++-- .../generation/functions/make_set.html | 24 ++-- .../generation/functions/make_vector.html | 20 +-- .../generation/functions/map_tie.html | 18 +-- .../container/generation/functions/tiers.html | 12 +- .../generation/functions/vector_tie.html | 18 +-- .../container/generation/metafunctions.html | 6 +- .../generation/metafunctions/list_tie.html | 18 +-- .../generation/metafunctions/make_cons.html | 18 +-- .../generation/metafunctions/make_list.html | 18 +-- .../generation/metafunctions/make_map.html | 24 ++-- .../generation/metafunctions/make_set.html | 22 +-- .../generation/metafunctions/make_vector.html | 18 +-- .../generation/metafunctions/map_tie.html | 18 +-- .../generation/metafunctions/vector_tie.html | 18 +-- doc/html/fusion/container/list.html | 20 +-- doc/html/fusion/container/map.html | 20 +-- doc/html/fusion/container/set.html | 20 +-- doc/html/fusion/container/vector.html | 20 +-- doc/html/fusion/extension.html | 6 +- doc/html/fusion/extension/ext_full.html | 22 +-- .../fusion/extension/iterator_facade.html | 20 +-- .../fusion/extension/sequence_facade.html | 20 +-- doc/html/fusion/functional.html | 12 +- doc/html/fusion/functional/adapters.html | 6 +- .../fusion/functional/adapters/fused.html | 20 +-- .../adapters/fused_function_object.html | 20 +-- .../functional/adapters/fused_procedure.html | 20 +-- .../functional/adapters/unfused_generic.html | 20 +-- .../adapters/unfused_lvalue_args.html | 20 +-- .../adapters/unfused_rvalue_args.html | 20 +-- .../functional/adapters/unfused_typed.html | 20 +-- doc/html/fusion/functional/concepts.html | 6 +- .../fusion/functional/concepts/callable.html | 12 +- .../functional/concepts/def_callable.html | 16 +-- doc/html/fusion/functional/concepts/poly.html | 16 +-- .../functional/concepts/reg_callable.html | 16 +-- doc/html/fusion/functional/generation.html | 6 +- .../functional/generation/functions.html | 6 +- .../generation/functions/mk_fused.html | 20 +-- .../generation/functions/mk_fused_fobj.html | 20 +-- .../generation/functions/mk_fused_proc.html | 20 +-- .../functions/mk_unfused_genrc.html | 20 +-- .../functions/mk_unfused_lvargs.html | 20 +-- .../functions/mk_unfused_rvargs.html | 20 +-- .../functional/generation/metafunctions.html | 6 +- .../generation/metafunctions/mk_fused.html | 14 +- .../metafunctions/mk_fused_fobj.html | 14 +- .../metafunctions/mk_fused_proc.html | 14 +- .../metafunctions/mk_unfused_genrc.html | 14 +- .../metafunctions/mk_unfused_lvargs.html | 14 +- .../metafunctions/mk_unfused_rvargs.html | 14 +- doc/html/fusion/functional/invocation.html | 6 +- .../functional/invocation/functions.html | 6 +- .../invocation/functions/invoke.html | 18 +-- .../invocation/functions/invoke_fobj.html | 18 +-- .../invocation/functions/invoke_proc.html | 18 +-- .../functional/invocation/metafunctions.html | 6 +- .../invocation/metafunctions/invoke.html | 12 +- .../invocation/metafunctions/invoke_fobj.html | 12 +- .../invocation/metafunctions/invoke_proc.html | 12 +- doc/html/fusion/introduction.html | 6 +- doc/html/fusion/iterator.html | 8 +- doc/html/fusion/iterator/concepts.html | 6 +- .../concepts/bidirectional_iterator.html | 20 +-- .../iterator/concepts/forward_iterator.html | 18 +-- .../concepts/random_access_iterator.html | 16 +-- doc/html/fusion/iterator/functions.html | 6 +- .../fusion/iterator/functions/advance.html | 18 +-- .../fusion/iterator/functions/advance_c.html | 18 +-- doc/html/fusion/iterator/functions/deref.html | 18 +-- .../fusion/iterator/functions/distance.html | 18 +-- doc/html/fusion/iterator/functions/next.html | 18 +-- doc/html/fusion/iterator/functions/prior.html | 18 +-- doc/html/fusion/iterator/metafunctions.html | 6 +- .../iterator/metafunctions/advance.html | 18 +-- .../iterator/metafunctions/advance_c.html | 18 +-- .../fusion/iterator/metafunctions/deref.html | 18 +-- .../iterator/metafunctions/distance.html | 18 +-- .../iterator/metafunctions/equal_to.html | 18 +-- .../fusion/iterator/metafunctions/next.html | 18 +-- .../fusion/iterator/metafunctions/prior.html | 18 +-- .../iterator/metafunctions/value_of.html | 18 +-- doc/html/fusion/iterator/operator.html | 6 +- .../iterator/operator/operator_equality.html | 16 +-- .../operator/operator_inequality.html | 16 +-- .../operator/operator_unary_star.html | 18 +-- doc/html/fusion/notes.html | 22 +-- doc/html/fusion/organization.html | 16 +-- doc/html/fusion/preface.html | 16 +-- doc/html/fusion/quick_start.html | 22 +-- doc/html/fusion/references.html | 6 +- doc/html/fusion/sequence.html | 8 +- doc/html/fusion/sequence/concepts.html | 10 +- .../concepts/associative_sequence.html | 16 +-- .../concepts/bidirectional_sequence.html | 18 +-- .../sequence/concepts/forward_sequence.html | 18 +-- .../concepts/random_access_sequence.html | 18 +-- doc/html/fusion/sequence/intrinsic.html | 12 +- .../fusion/sequence/intrinsic/functions.html | 6 +- .../sequence/intrinsic/functions/at.html | 18 +-- .../sequence/intrinsic/functions/at_c.html | 18 +-- .../sequence/intrinsic/functions/at_key.html | 18 +-- .../sequence/intrinsic/functions/back.html | 18 +-- .../sequence/intrinsic/functions/begin.html | 18 +-- .../sequence/intrinsic/functions/empty.html | 18 +-- .../sequence/intrinsic/functions/end.html | 18 +-- .../sequence/intrinsic/functions/front.html | 18 +-- .../sequence/intrinsic/functions/has_key.html | 18 +-- .../sequence/intrinsic/functions/size.html | 18 +-- .../sequence/intrinsic/functions/swap.html | 16 +-- .../sequence/intrinsic/metafunctions.html | 6 +- .../sequence/intrinsic/metafunctions/at.html | 20 +-- .../intrinsic/metafunctions/at_c.html | 20 +-- .../intrinsic/metafunctions/at_key.html | 20 +-- .../intrinsic/metafunctions/back.html | 16 +-- .../intrinsic/metafunctions/begin.html | 16 +-- .../intrinsic/metafunctions/empty.html | 16 +-- .../sequence/intrinsic/metafunctions/end.html | 16 +-- .../intrinsic/metafunctions/front.html | 16 +-- .../intrinsic/metafunctions/has_key.html | 16 +-- .../intrinsic/metafunctions/size.html | 16 +-- .../intrinsic/metafunctions/swap.html | 14 +- .../intrinsic/metafunctions/value_at.html | 16 +-- .../intrinsic/metafunctions/value_at_c.html | 16 +-- .../intrinsic/metafunctions/value_at_key.html | 16 +-- doc/html/fusion/sequence/operator.html | 6 +- .../fusion/sequence/operator/comparison.html | 8 +- .../sequence/operator/comparison/equal.html | 18 +-- .../operator/comparison/greater_than.html | 16 +-- .../comparison/greater_than_equal.html | 16 +-- .../operator/comparison/less_than.html | 16 +-- .../operator/comparison/less_than_equal.html | 16 +-- .../operator/comparison/not_equal.html | 16 +-- doc/html/fusion/sequence/operator/i_o.html | 8 +- doc/html/fusion/sequence/operator/i_o/in.html | 18 +-- .../fusion/sequence/operator/i_o/out.html | 18 +-- doc/html/fusion/support.html | 6 +- doc/html/fusion/support/category_of.html | 18 +-- doc/html/fusion/support/deduce.html | 16 +-- doc/html/fusion/support/deduce_sequence.html | 16 +-- doc/html/fusion/support/is_sequence.html | 18 +-- doc/html/fusion/support/is_view.html | 18 +-- doc/html/fusion/support/pair.html | 133 ++++++++++++------ doc/html/fusion/support/tag_of.html | 18 +-- doc/html/fusion/tuple.html | 6 +- .../fusion/tuple/class_template_tuple.html | 8 +- .../class_template_tuple/construction.html | 10 +- .../class_template_tuple/element_access.html | 10 +- .../relational_operators.html | 10 +- .../tuple_creation_functions.html | 10 +- .../tuple_helper_classes.html | 10 +- doc/html/fusion/tuple/pairs.html | 10 +- doc/html/fusion/view.html | 8 +- doc/html/fusion/view/filter_view.html | 20 +-- doc/html/fusion/view/iterator_range.html | 20 +-- doc/html/fusion/view/joint_view.html | 20 +-- doc/html/fusion/view/reverse_view.html | 18 +-- doc/html/fusion/view/single_view.html | 18 +-- doc/html/fusion/view/transform_view.html | 18 +-- doc/html/fusion/view/zip_view.html | 20 +-- doc/html/index.html | 10 +- doc/support.qbk | 62 ++++---- 258 files changed, 2138 insertions(+), 2093 deletions(-) diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index d10ff6f0..803937aa 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 2d5c7a20..bba631f1 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -40,7 +40,7 @@ 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 - [13] + [13] .

    @@ -48,7 +48,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

    @@ -57,7 +57,7 @@
     


    -

    [13] +

    [13] 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/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index d5fde8a6..a493a623 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -50,7 +50,7 @@
         )
     

    - + Semantics

    @@ -70,7 +70,7 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    @@ -78,7 +78,7 @@
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 640267cf..44aeea50 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -48,7 +48,7 @@
         )
     

    - + Semantics

    @@ -65,7 +65,7 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    @@ -73,7 +73,7 @@
     #include <boost/fusion/include/adapt_struct.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index 3925b1b0..5536896b 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

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

    - + Header

    @@ -41,14 +41,14 @@
     #include <boost/fusion/include/array.hpp>
     

    - + Model of

    - + Example

    @@ -61,7 +61,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index fb65d1ec..77a60656 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -33,7 +33,7 @@ Sequence.

    - + Header

    @@ -41,13 +41,13 @@
     #include <boost/fusion/include/boost_tuple.hpp>
     

    - + Model of

    - + Example

    @@ -56,7 +56,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     

    - + See also

    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index b960669c..3c3da108 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -31,7 +31,7 @@ sequences fully conforming fusion sequences.

    - + Header

    @@ -39,7 +39,7 @@
     #include <boost/fusion/include/mpl.hpp>
     

    - + Model of

      @@ -63,7 +63,7 @@

    - + Example

    @@ -77,7 +77,7 @@
     std::cout << at_c<1>(v) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index f3ca5a54..eeef7903 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


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

    - + Header

    @@ -41,14 +41,14 @@
     #include <boost/fusion/include/std_pair.hpp>
     

    - + Model of

    - + Example

    @@ -58,7 +58,7 @@
     std::cout << p << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index ea7053b2..6bc80386 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -43,7 +43,7 @@

    - + Lazy Evaluation

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

    - + Sequence Extension

    @@ -89,7 +89,7 @@ functions to convert back to the original sequence type.

    - + Header

    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index 1ea968a1..4caea19e 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,7 @@ a sequence repeatedly applying an operation to its elements.

    - + Header

    diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html
    index 155c47c9..49c28323 100644
    --- a/doc/html/fusion/algorithm/iteration/functions.html
    +++ b/doc/html/fusion/algorithm/iteration/functions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index 1eb774cf..bfd01597 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -37,7 +37,7 @@ and the previous state.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

    - + Complexity

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

    - + Header
    @@ -167,7 +167,7 @@
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index c1e05d1d..3851c3f3 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -37,7 +37,7 @@ and the previous state.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

    - + Complexity

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

    - + Header
    @@ -167,7 +167,7 @@
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index 4b6265b3..e1d99e1b 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.35. Parameters

    +

    Table 1.35. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ in seq.

    - + Complexity

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

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html
    index 198e3a48..6e338e90 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 6a74d790..e7ed62cb 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of accumulate.

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

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index c79e8b6d..830e0687 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of fold.

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

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index 1cedc9bb..7e1aded0 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,11 +30,11 @@ return type of for_each is always void.

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

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index 83d1b667..804b2ff2 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -33,7 +33,7 @@ The query algorithms provide support for searching and analyzing sequences.

    - + Header

    diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html
    index a77963a7..95f520ea 100644
    --- a/doc/html/fusion/algorithm/query/functions.html
    +++ b/doc/html/fusion/algorithm/query/functions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index 5370bcb3..374d6ac2 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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

    @@ -116,7 +116,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ element e in seq.

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index 9766fb16..5db56ce9 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/query/functions/any.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.39. Parameters

    +

    Table 1.39. Parameters

    @@ -116,7 +116,7 @@
    - + Expression semantics
    @@ -133,14 +133,14 @@ element e in seq.

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index 2a276254..8f23811a 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/query/functions/count.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.44. Parameters

    +

    Table 1.44. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ t in seq.

    - + Complexity

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

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index ffa0422d..3862d527 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.45. Parameters

    +

    Table 1.45. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -128,14 +128,14 @@ in seq where f evaluates to true.

    - + Complexity

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

    - + Header
    @@ -143,7 +143,7 @@
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index 7c2499ca..6621e233 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/query/functions/find.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.42. Parameters

    +

    Table 1.42. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index 20b74c2b..b8953025 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -31,11 +31,11 @@ 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

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

    - + Complexity

    @@ -147,7 +147,7 @@ /algorithm/query/find_if.hpp>

    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index 9f613a5a..b6b52b45 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/query/functions/none.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -116,7 +116,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html
    index 68581c9e..51fd7502 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index bcd98c6a..f5a8233c 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    A metafunction returning the result type of all.

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

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index d7eb4548..2c297528 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    A metafunction returning the result type of any.

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

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index 8716f4a2..1ea0cae5 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index 27402618..89985739 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index 642f7077..b7e12341 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ if there is no such element.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index 0883d34c..ffc8db41 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -132,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/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index 775bb347..e3c729b4 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    A metafunction returning the result type of none.

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

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 3b792522..0918d577 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -46,7 +46,7 @@

    - + Header

    diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html
    index 10863dc6..c6a3c502 100644
    --- a/doc/html/fusion/algorithm/transformation/functions.html
    +++ b/doc/html/fusion/algorithm/transformation/functions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index 6a4b5581..7d4eaefa 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.62. Parameters

    +

    Table 1.62. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index cd28e649..fc564b0d 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.63. Parameters

    +

    Table 1.63. Parameters

    @@ -141,7 +141,7 @@
    - + Expression Semantics
    @@ -172,14 +172,14 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -187,7 +187,7 @@
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index 15803534..b7e1f17f 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.64. Parameters

    +

    Table 1.64. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index 72e7c175..dd8c1e77 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.53. Parameters

    +

    Table 1.53. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index d0c7000f..73e21b29 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.54. Parameters

    +

    Table 1.54. Parameters

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -132,14 +132,14 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -147,7 +147,7 @@
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index ac20b5bc..e6e1d930 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.65. Parameters

    +

    Table 1.65. Parameters

    @@ -130,7 +130,7 @@
    - + Expression Semantics
    @@ -150,14 +150,14 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -165,7 +165,7 @@
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index ed877215..48672611 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.66. Parameters

    +

    Table 1.66. Parameters

    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -153,14 +153,14 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -168,7 +168,7 @@
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 52804fef..3f6f9b2f 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.67. Parameters

    +

    Table 1.67. Parameters

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -145,7 +145,7 @@
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index f82f9ed2..c99c556a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.69. Parameters

    +

    Table 1.69. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -108,14 +108,14 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 526e745b..9d1ffdce 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.70. Parameters

    +

    Table 1.70. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -108,14 +108,14 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index ea79a915..ed0b97db 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.71. Parameters

    +

    Table 1.71. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ 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
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index 3528ce78..206498dc 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.72. Parameters

    +

    Table 1.72. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -145,7 +145,7 @@
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index 259c052f..1e50bd19 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.59. Parameters

    +

    Table 1.59. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index 1d875723..08d882ba 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.60. Parameters

    +

    Table 1.60. Parameters

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -146,7 +146,7 @@
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index a7c7c7e0..5177aa39 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.57. Parameters

    +

    Table 1.57. Parameters

    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -166,7 +166,7 @@
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index 2345f1d5..9b17e4d3 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.58. Parameters

    +

    Table 1.58. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -166,7 +166,7 @@
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index 6360f6ae..b62baa9c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.61. Parameters

    +

    Table 1.61. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -107,14 +107,14 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 72062220..5c20d767 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -118,7 +118,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ within seq.

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

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -263,7 +263,7 @@
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index ed367e99..51e410c1 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -12,10 +12,10 @@
     
     
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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.68. Parameters

    +

    Table 1.68. Parameters

    @@ -94,7 +94,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -132,7 +132,7 @@
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html
    index f6bad707..9ffc7d57 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index a4487787..0f20d273 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -107,14 +107,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index b09ce582..f9ec70c7 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,11 +30,11 @@ and range delimiting iterator types.

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

    Table 1.83. Parameters

    +

    Table 1.83. Parameters

    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -164,14 +164,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index c063d91f..26993697 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.84. Parameters

    +

    Table 1.84. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index 22688844..fcea7aaa 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 2d696bc8..83bf3891 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.74. Parameter

    +

    Table 1.74. Parameter

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index 9f1bc538..14fbe3b8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index b70d3a87..a60f35eb 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -154,14 +154,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 93f693ed..9173e642 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index ad364d9c..ca01df85 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -111,14 +111,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 11a37984..5a50183f 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -111,7 +111,7 @@ except the first element.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 8e276645..1b023f99 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ added to the end.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index ad67daff..1c88757e 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ added to the beginning.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index 9a3acace..7fc0dee1 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 44468eb4..9db0fa3a 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index af240b9d..c85fedea 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index 26ac64bb..43f47086 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index 84a08e9f..15f9a322 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -110,14 +110,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index 9f9c7e0f..a32b3f08 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

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

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -118,7 +118,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ within seq.

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

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -263,7 +263,7 @@
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 2cb12b87..b2afedb4 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -12,10 +12,10 @@
     
     
    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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 8c356fee..0964a7a2 100644
    --- a/doc/html/fusion/change_log.html
    +++ b/doc/html/fusion/change_log.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index a08ca223..b455c09e 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -13,10 +13,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -49,7 +49,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index c98541f8..b35c6bdd 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

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

    - + Header

    @@ -50,7 +50,7 @@
     #include <boost/fusion/include/cons.hpp>
     

    - + Synopsis

    @@ -58,7 +58,7 @@
     struct cons;
     

    - + Template parameters

    @@ -121,7 +121,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index 7b0a4c9d..041b7cf5 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,7 @@ types using one of these conversion functions.

    - + Header

    diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html
    index 62891875..63cc387c 100644
    --- a/doc/html/fusion/container/conversion/functions.html
    +++ b/doc/html/fusion/container/conversion/functions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index 1c0c7a3d..bb49f15a 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ seq, to a list.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index 19299e93..5d60bbb4 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/conversion/functions/as_map.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a map.

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

    - + Header
    @@ -119,7 +119,7 @@
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index edede9ee..07021f95 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/conversion/functions/as_set.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -110,7 +110,7 @@ key types.

    - + Header
    @@ -118,7 +118,7 @@
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index d390bd72..67accc90 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/functions/as_vector.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ seq, to a vector.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html
    index 9e033417..fc5e7fc0 100644
    --- a/doc/html/fusion/container/conversion/metafunctions.html
    +++ b/doc/html/fusion/container/conversion/metafunctions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index ffe16a67..ebb79585 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_list;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -102,7 +102,7 @@ Sequence, to a list.

    - + Header
    @@ -110,7 +110,7 @@
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index 674cd94a..030383ae 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_map;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -107,7 +107,7 @@ There may be no duplicate fusion::pair key types.

    - + Header
    @@ -115,7 +115,7 @@
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index a1df58c6..06961ca2 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_set;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ key types.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index 785ce953..f97426a0 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_vector;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -102,7 +102,7 @@ Sequence, to a vector.

    - + Header
    @@ -110,7 +110,7 @@
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index 45d6a9c1..596b8880 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -33,7 +33,7 @@ These are the functions that you can use to generate various forms of Container from elemental values.

    - + Header

    diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html
    index 20861a17..da076b46 100644
    --- a/doc/html/fusion/container/generation/functions.html
    +++ b/doc/html/fusion/container/generation/functions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index 1d9ab235..b565b917 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index f010150f..4fd1b202 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -128,7 +128,7 @@ (tail).

    - + Header
    @@ -136,14 +136,14 @@
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index e0746a10..d535aaf8 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -54,7 +54,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -101,7 +101,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    @@ -123,14 +123,14 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index a274b9b2..1ae59169 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -47,7 +47,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 @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -125,7 +125,7 @@
    - + Expression Semantics
    @@ -146,7 +146,7 @@ key types.

    - + Header
    @@ -154,7 +154,7 @@
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    @@ -163,7 +163,7 @@
       , make_pair<double>("Men"))
     
    - + See also
    @@ -173,7 +173,7 @@



    -

    [9] +

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

    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index a1e64608..f0a975f4 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [8] + [8] 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
    @@ -102,7 +102,7 @@
    - + Expression Semantics
    @@ -120,7 +120,7 @@ key types.

    - + Header
    @@ -128,14 +128,14 @@
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also
    @@ -144,7 +144,7 @@



    -

    [8] +

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

    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index f0999784..b72eb17b 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -54,7 +54,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -101,7 +101,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    @@ -123,14 +123,14 @@
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 02c64edd..d43fcf0b 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -122,7 +122,7 @@
    - + Expression Semantics
    @@ -138,7 +138,7 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    @@ -146,7 +146,7 @@
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 5f852ba9..3512765c 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -49,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)) - [10] + [10] .

    @@ -67,7 +67,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -82,7 +82,7 @@



    -

    [10] +

    [10] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 0d816ce5..08e79b99 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html
    index e03be94d..0d62c1f0 100644
    --- a/doc/html/fusion/container/generation/metafunctions.html
    +++ b/doc/html/fusion/container/generation/metafunctions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index 97396d3a..0c61de79 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,7 +114,7 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index 92a31faa..d554649c 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct make_cons;
     
    - + Parameters
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ (tail).

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index 1442913b..b1d5fe0f 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index 72ba51af..36334852 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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 - [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 @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,7 +143,7 @@ key types.

    - + Header
    @@ -151,14 +151,14 @@
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also
    @@ -167,7 +167,7 @@



    -

    [12] +

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

    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 284be2e8..19a63d3e 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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 - [11] + [11] 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
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -120,7 +120,7 @@ key types.

    - + Header
    @@ -128,7 +128,7 @@
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    @@ -136,7 +136,7 @@
     


    -

    [11] +

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

    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index 920036ae..04fb849a 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index 4e8f0c13..2c244ad9 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -120,7 +120,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index e4a40918..ca5220d6 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,7 +114,7 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index 8cfac083..19b1480b 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/list.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

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

    - + Header

    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     

    - + Synopsis

    @@ -79,7 +79,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     

    - + Template parameters

    @@ -124,7 +124,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index c0f6098c..96cfb7ea 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

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

    - + Header

    @@ -50,7 +50,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     

    - + Synopsis

    @@ -81,7 +81,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     

    - + Template parameters

    @@ -126,7 +126,7 @@

    - + Model of

      @@ -159,7 +159,7 @@

    - + Expression Semantics

    @@ -246,7 +246,7 @@

    - + Example

    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index 8c062479..7f1a72d1 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

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

    - + Header

    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     

    - + Synopsis

    @@ -80,7 +80,7 @@
     #define FUSION_MAX_SET_SIZE 20
     

    - + Template parameters

    @@ -125,7 +125,7 @@

    - + Model of

      @@ -158,7 +158,7 @@

    - + Expression Semantics

    @@ -245,7 +245,7 @@

    - + Example

    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index 954a2592..8a25e2bf 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

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

    - + Header

    @@ -61,7 +61,7 @@
     #include <boost/fusion/include/vector50.hpp>
     

    - + Synopsis

    @@ -122,7 +122,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Template parameters

    @@ -167,7 +167,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
    index b7c413cd..5c2a61b6 100644
    --- a/doc/html/fusion/extension.html
    +++ b/doc/html/fusion/extension.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index 013c0e10..256c5dd8 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -48,7 +48,7 @@

    - + Our example

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

    - + Enabling Tag Dispatching

    @@ -124,7 +124,7 @@ #include <boost/fusion/include/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -187,7 +187,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features

    @@ -331,7 +331,7 @@

    - + Implementing the remaining iterator functionality

    @@ -386,7 +386,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    @@ -445,7 +445,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative container

    @@ -513,7 +513,7 @@ of is_associative_impl.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 3403e178..b8e83611 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -43,7 +43,7 @@
     struct iterator_facade;
     

    - + Usage

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

    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

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

    Table 1.94. Key Expressions

    +

    Table 1.94. Key Expressions

    @@ -365,7 +365,7 @@

    - + Header

    @@ -373,7 +373,7 @@
     #include <boost/fusion/include/iterator_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 38c49e7d..23ca8adc 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -43,7 +43,7 @@
     struct sequence_facade;
     

    - + Usage

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

    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

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

    Table 1.92. Key Expressions

    +

    Table 1.92. Key Expressions

    @@ -243,7 +243,7 @@

    - + Include

    @@ -251,7 +251,7 @@
     #include <boost/fusion/include/sequence_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index c71c6ec8..256cc8f7 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -65,7 +65,7 @@ /functional.hpp>

    - + Fused and unfused forms

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

    - + Calling functions and function objects

    @@ -130,7 +130,7 @@ instance for the given argument.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index f5f0ecce..6b152eb6 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -13,10 +13,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 28492b6c..45cce563 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -59,7 +59,7 @@ /functional/adapter/fused.hpp>

    - + Synopsis
    @@ -67,7 +67,7 @@
     class fused;
     
    - + Template parameters
    @@ -114,7 +114,7 @@
    - + Model of
      @@ -150,7 +150,7 @@
    - + Expression Semantics
    @@ -214,7 +214,7 @@
    - + Example
    @@ -222,7 +222,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 ea01cb4e..6a0c59de 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -12,10 +12,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -26,7 +26,7 @@
      - + Description

      @@ -49,7 +49,7 @@ /functional/adapter/fused_function_object.hpp>

      - + Synopsis
      @@ -57,7 +57,7 @@
       class fused_function_object;
       
      - + Template parameters
      @@ -104,7 +104,7 @@
    - + Model of
    @@ -141,7 +141,7 @@
    - + Expression Semantics
    @@ -205,7 +205,7 @@
    - + Example
    @@ -243,7 +243,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 32fa9c5b..09a70ccf 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -66,7 +66,7 @@ /functional/adapter/fused_procedure.hpp>

    - + Synopsis
    @@ -74,7 +74,7 @@
     class fused_procedure;
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    @@ -156,7 +156,7 @@
    - + Expression Semantics
    @@ -220,7 +220,7 @@
    - + Example
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 2466e19f..f937caab 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -58,7 +58,7 @@ /functional/adapter/unfused_generic.hpp>

    - + Synopsis
    @@ -66,7 +66,7 @@
     class unfused_generic;
     
    - + Template parameters
    @@ -113,7 +113,7 @@
    - + Model of
    @@ -154,7 +154,7 @@
    - + Expression Semantics
    @@ -218,7 +218,7 @@
    - + Example
    @@ -269,7 +269,7 @@
     }
     
    - + 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 6e2511b5..19480af9 100644 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -51,7 +51,7 @@ /functional/adapter/unfused_lvalue_args.hpp>

    - + Synopsis
    @@ -59,7 +59,7 @@
     class unfused_lvalue_args;
     
    - + Template parameters
    @@ -106,7 +106,7 @@
    - + Model of
    @@ -147,7 +147,7 @@
    - + Expression Semantics
    @@ -211,7 +211,7 @@
    - + Example
    @@ -239,7 +239,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 b43863b9..c42349a5 100644 --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -51,7 +51,7 @@ /functional/adapter/unfused_rvalue_args.hpp>

    - + Synopsis
    @@ -59,7 +59,7 @@
     class unfused_rvalue_args;
     
    - + Template parameters
    @@ -106,7 +106,7 @@
    - + Model of
    @@ -147,7 +147,7 @@
    - + Expression Semantics
    @@ -211,7 +211,7 @@
    - + Example
    @@ -237,7 +237,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index d7e4e349..5e647b0a 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -65,7 +65,7 @@ /functional/adapter/unfused_typed.hpp>

    - + Synopsis
    @@ -73,7 +73,7 @@
     class unfused_typed;
     
    - + Template parameters
    @@ -138,7 +138,7 @@
    - + Model of
    @@ -184,7 +184,7 @@
    - + Expression Semantics
    @@ -250,7 +250,7 @@
    - + Example
    @@ -319,7 +319,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index 272e5858..b6ddb1b3 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -12,10 +12,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index eba6689d..5bc41fe4 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -13,10 +13,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

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

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

      - + Models
        @@ -51,7 +51,7 @@
      - + Examples
      diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
      index 0e8e17e9..5cb8a0f8 100644
      --- a/doc/html/fusion/functional/concepts/def_callable.html
      +++ b/doc/html/fusion/functional/concepts/def_callable.html
      @@ -15,10 +15,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -31,7 +31,7 @@ Callable Object"> Deferred Callable Object
    - + Description

    @@ -40,7 +40,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -81,7 +81,7 @@
    - + Expression requirements
    @@ -119,7 +119,7 @@
    - + Models
      @@ -133,7 +133,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index 3f79e4e7..626811e1 100644
    --- a/doc/html/fusion/functional/concepts/poly.html
    +++ b/doc/html/fusion/functional/concepts/poly.html
    @@ -14,10 +14,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ Object"> Polymorphic Function Object
    - + Description

    @@ -39,7 +39,7 @@ Callable Object type.

    - + Refinement of
    @@ -83,7 +83,7 @@
    - + Expression requirements
    @@ -132,7 +132,7 @@
    - + Models
      @@ -147,7 +147,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index d0273cb5..62567f3a 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -14,10 +14,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ Object"> Regular Callable Object
    - + Description

    @@ -39,7 +39,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -69,7 +69,7 @@
    - + Expression requirements
    @@ -116,7 +116,7 @@
    - + Models
      @@ -128,7 +128,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html
    index 3cea4633..4620cf2c 100644
    --- a/doc/html/fusion/functional/generation.html
    +++ b/doc/html/fusion/functional/generation.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 5deecb56..c9603fba 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -13,10 +13,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index 899edc04..37f88ec4 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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,7 +111,7 @@ Semantics: Returns a fused adapter for f.

    - + Header
    @@ -119,7 +119,7 @@
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    @@ -135,7 +135,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 136548c9..18882982 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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,7 +114,7 @@ for f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    @@ -151,7 +151,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 44ae9d6c..2e1dc436 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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,7 +113,7 @@ f.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    @@ -131,7 +131,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 f11a9d87..11f8ce5c 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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,7 +114,7 @@ f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - + Example
    @@ -158,7 +158,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 82876105..1b3327ff 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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,7 +114,7 @@ for f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - + Example
    @@ -149,7 +149,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 138b6e7b..28cdbfd2 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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,7 +113,7 @@ for f.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - + Example
    @@ -147,7 +147,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 1dcc003f..5d165479 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index d31f3854..2d425902 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ make_fused"> make_fused
    - + Description

    @@ -38,7 +38,7 @@ make_fused">make_fused.

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    @@ -60,7 +60,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 dde99913..8b4f20f4 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -31,7 +31,7 @@ make_fused_function_object"> make_fused_function_object
    - + Description

    @@ -39,7 +39,7 @@ make_fused_function_object">make_fused_function_object.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 bed50f2f..a985890a 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -31,7 +31,7 @@ make_fused_procedure"> make_fused_procedure
    - + Description

    @@ -39,7 +39,7 @@ make_fused_procedure">make_fused_procedure.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 f065e18d..9e34014c 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -31,7 +31,7 @@ make_unfused_generic"> make_unfused_generic
    - + Description

    @@ -39,7 +39,7 @@ make_unfused_generic">make_unfused_generic.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 77172343..732f666a 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -31,7 +31,7 @@ make_unfused_lvalue_args"> make_unfused_lvalue_args
    - + Description

    @@ -39,7 +39,7 @@ make_unfused_lvalue_args">make_unfused_lvalue_args.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 90d1841a..45ee7e92 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ make_unfused_rvalue_args"> make_unfused_rvalue_args
    - + Description

    @@ -38,7 +38,7 @@ make_unfused_rvalue_args">make_unfused_rvalue_args.

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 107b46e1..d1a29b0a 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -13,10 +13,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index f2820769..abcc99ac 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index e16842b1..2d5bdaae 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -13,10 +13,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

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

    @@ -47,7 +47,7 @@ and boost::shared_ptr).

    - + Synopsis
    @@ -66,7 +66,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -154,7 +154,7 @@ /functional/invocation/invoke.hpp>

    - + Example
    @@ -162,7 +162,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 f58d50cd..550a68a8 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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
    @@ -64,7 +64,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -152,7 +152,7 @@ /functional/invocation/invoke_function_object.hpp>

    - + Example
    @@ -179,7 +179,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 04dd70b2..fc9b8590 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
    - + Description

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

    - + Synopsis
    @@ -75,7 +75,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -142,7 +142,7 @@
    - + Expression Semantics
    @@ -161,7 +161,7 @@ /functional/invocation/invoke_procedure.hpp>

    - + Example
    @@ -171,7 +171,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 763b05f7..93aafaf4 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -13,10 +13,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index f91eb6d2..7db3fa90 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -13,10 +13,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,14 +27,14 @@
    - + Description

    Returns the result type of invoke.

    - + Synopsis
    @@ -51,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 f63eb321..fb7f26c4 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ invoke_function_object"> invoke_function_object
    - + Description

    @@ -38,7 +38,7 @@ invoke_function_object">invoke_function_object.

    - + Synopsis
    @@ -55,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 54452d8d..a7a99107 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
    - + Description

    @@ -38,7 +38,7 @@ invoke_procedure">invoke_procedure.

    - + Synopsis
    @@ -55,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 5d454021..a4a3467b 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index d28a765e..1434eed3 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -74,7 +74,7 @@ Sequence.

    - + Header

    diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html
    index 33096998..62b3bb31 100644
    --- a/doc/html/fusion/iterator/concepts.html
    +++ b/doc/html/fusion/iterator/concepts.html
    @@ -13,10 +13,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 048d5c1c..d8976ee7 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -31,7 +31,7 @@ Iterator">Bidirectional Iterator
    - + Description

    @@ -61,7 +61,7 @@

    - + Refinement of
    @@ -70,7 +70,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -182,7 +182,7 @@
    - + Meta Expressions
    @@ -217,7 +217,7 @@
    - + Expression Semantics
    @@ -258,7 +258,7 @@
    - + Invariants

    @@ -275,7 +275,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index d26df336..26737303 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -14,10 +14,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Expression requirements
    @@ -244,7 +244,7 @@
    - + Meta Expressions
    @@ -355,7 +355,7 @@
    - + Expression Semantics
    @@ -481,7 +481,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 10060527..37943087 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -14,10 +14,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Refinement of
    @@ -73,7 +73,7 @@ Iterator

    - + Expression requirements
    @@ -185,7 +185,7 @@
    - + Meta Expressions
    @@ -248,7 +248,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 71e3ab8f..74b52d7f 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -13,10 +13,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index ba2cf230..51ad4f5f 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -12,10 +12,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -110,7 +110,7 @@
      - + Expression Semantics
      @@ -131,7 +131,7 @@ may be negative.

      - + Header
      @@ -139,7 +139,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
      index 39b87e3d..0eaf1c54 100644
      --- a/doc/html/fusion/iterator/functions/advance_c.html
      +++ b/doc/html/fusion/iterator/functions/advance_c.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -109,7 +109,7 @@
      - + Expression Semantics
      @@ -130,7 +130,7 @@ may be negative.

      - + Header
      @@ -138,7 +138,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
      index af8ff882..fb22ed6e 100644
      --- a/doc/html/fusion/iterator/functions/deref.html
      +++ b/doc/html/fusion/iterator/functions/deref.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -104,7 +104,7 @@ i.

      - + Header
      @@ -112,7 +112,7 @@
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
      index 65186c5c..afcfd8cc 100644
      --- a/doc/html/fusion/iterator/functions/distance.html
      +++ b/doc/html/fusion/iterator/functions/distance.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -90,7 +90,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ iterators i and j.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
      index dc248b3d..513d89b7 100644
      --- a/doc/html/fusion/iterator/functions/next.html
      +++ b/doc/html/fusion/iterator/functions/next.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ next element after i.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
      index 707453ea..a9f13b1e 100644
      --- a/doc/html/fusion/iterator/functions/prior.html
      +++ b/doc/html/fusion/iterator/functions/prior.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ element prior to i.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html
      index edae7021..a3796084 100644
      --- a/doc/html/fusion/iterator/metafunctions.html
      +++ b/doc/html/fusion/iterator/metafunctions.html
      @@ -13,10 +13,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index 45827c81..4e153e59 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -12,10 +12,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -26,14 +26,14 @@
      - + Description

      Moves an iterator a specified distance.

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

      Table 1.17. Parameters

      +

      Table 1.17. Parameters

      @@ -113,7 +113,7 @@
      - + Expression Semantics
      @@ -133,7 +133,7 @@ may be negative.

      - + Header
      @@ -141,7 +141,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
      index 8132124c..92377359 100644
      --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
      +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

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

      - + Header
      @@ -140,7 +140,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
      index 594ad5e3..c530ba7a 100644
      --- a/doc/html/fusion/iterator/metafunctions/deref.html
      +++ b/doc/html/fusion/iterator/metafunctions/deref.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -107,7 +107,7 @@ an iterator of type I.

      - + Header
      @@ -115,7 +115,7 @@
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
      index 4c2abeca..951c2554 100644
      --- a/doc/html/fusion/iterator/metafunctions/distance.html
      +++ b/doc/html/fusion/iterator/metafunctions/distance.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -26,14 +26,14 @@
      - + Description

      Returns the distance between two iterators.

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

      Table 1.16. Parameters

      +

      Table 1.16. Parameters

      @@ -93,7 +93,7 @@
      - + Expression Semantics
      @@ -110,7 +110,7 @@ J.

      - + Header
      @@ -118,7 +118,7 @@
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
      index 6c5ae850..9f9134af 100644
      --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
      +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -93,7 +93,7 @@
      - + Expression Semantics
      @@ -110,7 +110,7 @@ Returns boost::mpl::false_ otherwise.

      - + Header
      @@ -118,7 +118,7 @@
       #include <boost/fusion/include/equal_to.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
      index 20f63e19..490e34f7 100644
      --- a/doc/html/fusion/iterator/metafunctions/next.html
      +++ b/doc/html/fusion/iterator/metafunctions/next.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -108,7 +108,7 @@ next element in the sequence after I.

      - + Header
      @@ -116,7 +116,7 @@
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
      index e76eacb4..28747387 100644
      --- a/doc/html/fusion/iterator/metafunctions/prior.html
      +++ b/doc/html/fusion/iterator/metafunctions/prior.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -108,7 +108,7 @@ previous element in the sequence before I.

      - + Header
      @@ -116,7 +116,7 @@
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
      index 91d72481..c71282dc 100644
      --- a/doc/html/fusion/iterator/metafunctions/value_of.html
      +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
      @@ -12,10 +12,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -107,7 +107,7 @@ a sequence at iterator position I.

      - + Header
      @@ -115,7 +115,7 @@
       #include <boost/fusion/include/value_of.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html
      index f2a8c05a..b32d3c47 100644
      --- a/doc/html/fusion/iterator/operator.html
      +++ b/doc/html/fusion/iterator/operator.html
      @@ -13,10 +13,10 @@
       
       
      -
      +
      -
      -
      +
      +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index 8e1c7e0f..f1210022 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -15,10 +15,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index 848af738..c23b2ef4 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -14,10 +14,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -105,7 +105,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 8aee90c3..731433c0 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -14,10 +14,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ Semantics: Equivalent to deref(i).

    - + Header
    @@ -116,7 +116,7 @@
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index 6633e462..2126f5e9 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -13,10 +13,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

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

    - + Recursive Inlined Functions

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

    - + Overloaded Functions

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

    - + Tag Dispatching

    @@ -103,7 +103,7 @@

    - + Extensibility

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

    - + Element Conversion

    @@ -161,7 +161,7 @@

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

    @@ -194,7 +194,7 @@
     list<void (*)(int)>
     

    - + boost::ref

    @@ -237,7 +237,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 f8b81d23..d34c6be3 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -34,7 +34,7 @@ The library is organized in three layers:

    - + Layers

    @@ -65,7 +65,7 @@ against.

    - + Directory

      @@ -186,7 +186,7 @@

    - + Example

    @@ -202,12 +202,12 @@

    The first includes all containers The second 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 dd0d2c31..d97a948b 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

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

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

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 5ddda68f..529d34a8 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -12,10 +12,10 @@

    - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -33,7 +33,7 @@

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

    @@ -42,7 +42,7 @@
     

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

    @@ -60,7 +60,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

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

    - + Print only pointers

    @@ -152,7 +152,7 @@ Easy, right?

    - + Associative tuples

    @@ -227,7 +227,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -238,12 +238,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/references.html b/doc/html/fusion/references.html index 783cd2f8..e5d6d26a 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -11,10 +11,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 2153c0d1..47ddda51 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -59,7 +59,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index b0e6586e..18ca1062 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -13,10 +13,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 52601047..d3434fe4 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -30,7 +30,7 @@ Sequence">Associative Sequence
    - + Description

    @@ -71,7 +71,7 @@

    - + Valid Expressions
    @@ -180,7 +180,7 @@
    - + Result Type Expressions
    @@ -252,7 +252,7 @@ result_of::value_at_key<S, N>.

    - + Expression Semantics
    @@ -307,7 +307,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 29873750..18e07798 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -15,10 +15,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
    - + Description

    @@ -42,7 +42,7 @@ Iterator.

    - + Refinement of
    @@ -72,7 +72,7 @@
    - + Valid Expressions
    @@ -207,7 +207,7 @@
    - + Result Type Expressions
    @@ -268,7 +268,7 @@
    - + Expression Semantics
    @@ -309,7 +309,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 72234679..c530d85d 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -14,10 +14,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -62,7 +62,7 @@

    - + Valid Expressions
    @@ -239,7 +239,7 @@
    - + Result Type Expressions
    @@ -324,7 +324,7 @@
    - + Expression Semantics
    @@ -412,7 +412,7 @@
    - + Invariants

    @@ -438,7 +438,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 3ac377a8..8f353461 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -15,10 +15,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
    - + Description

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

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Valid Expressions
    @@ -214,7 +214,7 @@
    - + Result Type Expressions
    @@ -297,7 +297,7 @@ result_of::value_at<S, N>.

    - + Expression Semantics
    @@ -338,7 +338,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index c52186f1..b131dcff 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -13,10 +13,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -37,11 +37,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [4] + [4] .

      - + Header

      @@ -50,7 +50,7 @@
       


      -

      [4] +

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

      diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index 850a95b6..69208798 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -12,10 +12,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 0da653e0..8493fff6 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -12,10 +12,10 @@ - + - - + +
      Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

      @@ -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
      @@ -113,7 +113,7 @@
      - + Expression Semantics
      @@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
    - + Header
    @@ -149,7 +149,7 @@
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index 2a3fa109..2866bfc9 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
    - + Header
    @@ -149,7 +149,7 @@
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index 7bb0c710..a3861d5f 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ with Key.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index 6628b362..2685c8a0 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ in the sequence.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index 65f3d483..94ac29d3 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ to the first element in the sequence.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index 6123710a..3492aa2b 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ to false.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index 7b203fdf..29377d59 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ to one element past the end of the sequence.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index a65fecac..632784a4 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ in the sequence.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index 28343c9f..06757004 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -126,7 +126,7 @@ associated with Key, else, evaluates to false.

    - + Header
    @@ -134,7 +134,7 @@
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index 5e14fe96..42da5849 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -105,7 +105,7 @@ in the sequence.

    - + Header
    @@ -113,7 +113,7 @@
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index fdc17831..632a5704 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    @@ -41,7 +41,7 @@
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html
    index 39bfd37b..589d575b 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index f64d3635..0981ce31 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,16 +26,16 @@
    - + Description

    Returns the result type of at - [5] + [5] .

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

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ /sequence/intrinsic/at.hpp>

    - + Example
    @@ -141,7 +141,7 @@
     


    -

    [5] +

    [5] 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/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 9a1467cf..8da90fc2 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,16 +26,16 @@
    - + Description

    Returns the result type of at_c - [6] + [6] .

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

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,7 +131,7 @@ /sequence/intrinsic/at.hpp>

    - + Example
    @@ -140,7 +140,7 @@
     


    -

    [6] +

    [6] 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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 616c7e69..d4b45370 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,16 +26,16 @@
    - + Description

    Returns the result type of at_key - [7] + [7] .

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

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,7 +133,7 @@ /sequence/intrinsic/at_key.hpp>

    - + Example
    @@ -142,7 +142,7 @@
     


    -

    [7] +

    [7] 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/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 0c036000..85344454 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More


    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of back.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ /sequence/intrinsic/back.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index 01959372..47908f24 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of begin.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/begin.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index 46b6ecd6..4ce54898 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of empty.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -110,7 +110,7 @@ /sequence/intrinsic/empty.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index 9996629f..e4a341f4 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of end.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/end.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index e7ac5200..396a88b5 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of front.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/front.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index ec2f92cc..0eee5f60 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ /sequence/intrinsic/has_key.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index d1406503..7d42813e 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of size.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/size.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index 0311007f..cd14b573 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,14 +26,14 @@
    - + Description

    Returns the return type of swap.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index 2c526a2e..83060686 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -130,7 +130,7 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index ce8f269d..5d25567d 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -129,7 +129,7 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index 1e59c484..7b4d49ac 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -130,7 +130,7 @@ /sequence/intrinsic/value_at_key.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/operator.html b/doc/html/fusion/sequence/operator.html
    index 1b52d062..b60aa3bc 100644
    --- a/doc/html/fusion/sequence/operator.html
    +++ b/doc/html/fusion/sequence/operator.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index d672ae90..a51bd7f5 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -48,7 +48,7 @@ only until the result is clear.

    - + Header
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index ac58ba16..710df9fd 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -13,10 +13,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -27,14 +27,14 @@
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -125,7 +125,7 @@ true.

    - + Header
    @@ -133,7 +133,7 @@
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index 2220a666..c6253c1e 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    @@ -15,10 +15,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ Semantics: Returns b < a.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index 821bbe24..9c9cc08b 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    @@ -14,10 +14,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -33,7 +33,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -116,7 +116,7 @@ Semantics: Returns !(a < b).

    - + Header
    @@ -124,7 +124,7 @@
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index be1cc13c..d9f47658 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
    @@ -15,10 +15,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -119,7 +119,7 @@ and b.

    - + Header
    @@ -127,7 +127,7 @@
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index fbd644ff..1fbb151d 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    @@ -15,10 +15,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ Semantics: Returns !(b < a).

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index df6ff637..e580d23c 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    @@ -14,10 +14,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -33,7 +33,7 @@ Compare two sequences for inequality.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -119,7 +119,7 @@ Returns !(a == b).

    - + Header
    @@ -127,7 +127,7 @@
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 7a89ecfb..623d8ccd 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -116,7 +116,7 @@ representation may not be unambiguously parseable.

    - + Header
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index cf361fb6..69a3b51c 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ e.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index dc94b7e4..8a95450c 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/i_o/out.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ e.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html
    index 949ca5d8..3f08cffc 100644
    --- a/doc/html/fusion/support.html
    +++ b/doc/html/fusion/support.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 4aa7854c..c629aadc 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -36,7 +36,7 @@ Sequence Concepts).

    - + Synopsis

    @@ -50,7 +50,7 @@
     }
     

    - + Parameters

    @@ -95,7 +95,7 @@

    - + Expression Semantics

    @@ -161,7 +161,7 @@ of a particular Sequence or Iterator.

    - + Header

    @@ -169,7 +169,7 @@
     #include <boost/fusion/include/category_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index e38e4188..685bba16 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -39,7 +39,7 @@ Reference wrappers are removed (see boost::ref).

    - + Header

    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/deduce.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@
     }
     

    - + Example

    @@ -82,7 +82,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 19498df8..78f38eef 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -39,7 +39,7 @@ original type as its argument.

    - + Header

    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@
     }
     

    - + Example

    @@ -84,7 +84,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index ff60883a..d25c9fcc 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -37,7 +37,7 @@ conforming sequences.

    - + Synopsis

    @@ -51,7 +51,7 @@
     }
     

    - + Parameters

    @@ -96,7 +96,7 @@

    - + Expression Semantics

    @@ -114,7 +114,7 @@ otherwise.

    - + Header

    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/is_sequence.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index b9183d07..0fc85062 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -99,7 +99,7 @@

    - + Expression Semantics

    @@ -116,7 +116,7 @@
             otherwise.
           

    - + Header

    @@ -124,7 +124,7 @@
     #include <boost/fusion/include/is_view.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index 9ebf447f..54ec9e47 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -37,7 +37,7 @@ for example.

    - + Synopsis

    @@ -46,10 +46,10 @@
     
     namespace result_of
     {
    -    template <typename First, typename Second>
    +    template <typename Pair>
         struct first;
     
    -    template <typename First, typename Second>
    +    template <typename Pair>
         struct second;
     
         template <typename First, typename Second>
    @@ -61,7 +61,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -140,14 +140,13 @@

    - + Expression Semantics

    - - @@ -175,7 +173,6 @@ equivalent to result_of::first<P>::type.

    - - - - - + + + + + + + + + + + + + + + + + + + + + + +
    @@ -160,7 +159,6 @@ Semantics

     
     
    @@ -189,7 +186,6 @@ equivalent to result_of::second<P>::type.

     
    @@ -202,7 +198,6 @@ Default construction.

     
    @@ -215,7 +210,6 @@ Construct a pair given value for the second type, s.

     
    @@ -228,7 +222,6 @@ Copy constructs a pair from another pair, p2.

     
    @@ -238,32 +231,84 @@

    - Get the data from p1.]] [[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]] - [[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` + Get the data from p1. +

    +
    +

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

    +
    +

    + 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

    @@ -275,7 +320,7 @@

    - + Header

    @@ -283,7 +328,7 @@
     #include <boost/fusion/include/pair.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 5c2438c8..0c4cea83 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -40,7 +40,7 @@ conforming sequences.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -99,7 +99,7 @@

    - + Expression Semantics

    @@ -113,7 +113,7 @@
             with T.
           

    - + Header

    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/tag_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html
    index 8319ff15..cfa62786 100644
    --- a/doc/html/fusion/tuple.html
    +++ b/doc/html/fusion/tuple.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 64119b29..1acea42b 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -12,10 +12,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -48,7 +48,7 @@ in future releases of fusion.

    - + Synopsis

    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 9b1cb593..7701e26a 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -13,10 +13,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

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

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 450afe7c..3e4bc992 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -15,10 +15,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index c0ae67bd..fca7de33 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    @@ -14,10 +14,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index d9dccb61..4ac80256 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -14,10 +14,10 @@ - + - - + +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index 0b7368bc..d7cdb301 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -15,10 +15,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -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/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index 9e5d1283..270c05d5 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/pairs.html
    @@ -13,10 +13,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

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

    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification

    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
    index 180b732b..e16a12d4 100644
    --- a/doc/html/fusion/view.html
    +++ b/doc/html/fusion/view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -44,7 +44,7 @@ to copy and be passed around by value.

    - + Header

    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index 734b5ffe..68c5a05f 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -37,7 +37,7 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header

    @@ -45,7 +45,7 @@
     #include <boost/fusion/include/filter_view.hpp>
     

    - + Synopsis

    @@ -53,7 +53,7 @@
     struct filter_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 68a3b260..4784246c 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -34,7 +34,7 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header

    @@ -42,7 +42,7 @@
     #include <boost/fusion/include/iterator_range.hpp>
     

    - + Synopsis

    @@ -50,7 +50,7 @@
     struct iterator_range;
     

    - + Template parameters

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

    - + Model of

    • @@ -149,7 +149,7 @@

    - + Expression Semantics

    @@ -224,7 +224,7 @@

    - + Example

    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 1d617e57..4ac0c513 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -34,7 +34,7 @@ which is a concatenation of two sequences.

    - + Header

    @@ -42,7 +42,7 @@
     #include <boost/fusion/include/joint_view.hpp>
     

    - + Synopsis

    @@ -50,7 +50,7 @@
     struct joint_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index bc1ea08e..3b2f44a2 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -31,7 +31,7 @@ element will be its first.

    - + Header

    @@ -39,7 +39,7 @@
     #include <boost/fusion/include/reverse_view.hpp>
     

    - + Synopsis

    @@ -47,7 +47,7 @@
     struct reverse_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index f302a863..15c673b9 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -30,7 +30,7 @@ a value as a single element sequence.

    - + Header

    @@ -38,7 +38,7 @@
     #include <boost/fusion/include/single_view.hpp>
     

    - + Synopsis

    @@ -46,7 +46,7 @@
     struct single_view;
     

    - + Template parameters

    @@ -90,7 +90,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 6baac9f9..5d2e4a7e 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -35,7 +35,7 @@ Traversal Concept) of its underlying sequence or sequences.

    - + Header

    @@ -43,7 +43,7 @@
     #include <boost/fusion/include/transform_view.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@ struct transform_view;

    - + Template parameters

    @@ -183,7 +183,7 @@

    - + Model of

    • @@ -242,7 +242,7 @@

    - + Expression Semantics

    @@ -337,7 +337,7 @@

    - + Example

    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index fe54d444..fd07f5d4 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -12,10 +12,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -26,7 +26,7 @@

    - + Description

    @@ -37,7 +37,7 @@ to the component _sequence_s.

    - + Header

    @@ -45,7 +45,7 @@
     #include <boost/fusion/include/zip_view.hpp>
     

    - + Synopsis

    @@ -53,7 +53,7 @@
     struct zip_view;
     

    - + Template parameters

    @@ -99,7 +99,7 @@

    - + Model of

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

    - + Expression Semantics

    @@ -204,7 +204,7 @@

    - + Example

    diff --git a/doc/html/index.html b/doc/html/index.html
    index 2cfc827a..089b7251 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -10,10 +10,10 @@
     
     
    -
    +
    -
    -
    +
    +
    Boost C++ LibrariesHomeHome LibrariesPeopleFAQPeopleFAQ More

    @@ -34,7 +34,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)

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

    Last revised: December 20, 2007 at 05:09:32 GMT

    Last revised: July 17, 2008 at 23:52:47 GMT


    diff --git a/doc/support.qbk b/doc/support.qbk index cb5d9b1d..6418766e 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -204,48 +204,48 @@ __sequence_concepts__). For Iterators, the return type is derived from one of: - namespace boost { namespace fusion - { - 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: - namespace boost { namespace fusion - { - 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_traversal_tag - : single_pass_sequence_tag {}; + struct forward_traversal_tag + : single_pass_sequence_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 {}; + }} And optionally from: - namespace boost { namespace fusion - { - struct associative_sequence_tag {}; - }} + namespace boost { namespace fusion + { + struct associative_sequence_tag {}; + }} [*Semantics]: Establishes the conceptual classification of a particular __sequence__ or __iterator__. @@ -372,10 +372,10 @@ It is used as elements in __map__s, for example. namespace result_of { - template + template struct first; - template + template struct second; template @@ -414,7 +414,7 @@ It is used as elements in __map__s, for example. [[`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.second`] [Get the data from `p1.]] + [[`p.second`] [Get the data from `p1`.]] [[`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`]] From 0b58f052b357bf8311611ccdafae67d66d64ddd5 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 22 Jul 2008 02:06:42 +0000 Subject: [PATCH 13/82] doc updates (mini tweaks) [SVN r47668] --- doc/adapted.qbk | 18 +++++++--- doc/html/fusion/adapted.html | 35 ++++++++++++------- doc/html/fusion/adapted/adapt_assoc.html | 10 +++--- doc/html/fusion/adapted/adapt_struct.html | 10 +++--- doc/html/fusion/adapted/boost__array.html | 8 ++--- doc/html/fusion/adapted/boost__tuple.html | 8 ++--- doc/html/fusion/adapted/mpl_sequence.html | 8 ++--- doc/html/fusion/adapted/std__pair.html | 8 ++--- doc/html/fusion/algorithm.html | 6 ++-- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 ++++---- .../algorithm/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/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 ++++---- .../fusion/algorithm/query/functions/any.html | 14 ++++---- .../algorithm/query/functions/count.html | 14 ++++---- .../algorithm/query/functions/count_if.html | 14 ++++---- .../algorithm/query/functions/find.html | 14 ++++---- .../algorithm/query/functions/find_if.html | 12 +++---- .../algorithm/query/functions/none.html | 14 ++++---- .../algorithm/query/metafunctions/all.html | 12 +++---- .../algorithm/query/metafunctions/any.html | 12 +++---- .../algorithm/query/metafunctions/count.html | 12 +++---- .../query/metafunctions/count_if.html | 12 +++---- .../algorithm/query/metafunctions/find.html | 12 +++---- .../query/metafunctions/find_if.html | 12 +++---- .../algorithm/query/metafunctions/none.html | 12 +++---- doc/html/fusion/algorithm/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 | 10 +++--- .../metafunctions/push_back.html | 10 +++--- .../metafunctions/push_front.html | 10 +++--- .../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 | 18 +++++----- .../transformation/metafunctions/zip.html | 10 +++--- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 ++++---- doc/html/fusion/container/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/container/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 ++++---- .../generation/functions/map_tie.html | 12 +++---- .../container/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/map_tie.html | 12 +++---- .../generation/metafunctions/vector_tie.html | 12 +++---- doc/html/fusion/container/list.html | 14 ++++---- doc/html/fusion/container/map.html | 14 ++++---- doc/html/fusion/container/set.html | 14 ++++---- doc/html/fusion/container/vector.html | 14 ++++---- doc/html/fusion/extension/ext_full.html | 16 ++++----- .../fusion/extension/iterator_facade.html | 14 ++++---- .../fusion/extension/sequence_facade.html | 14 ++++---- doc/html/fusion/functional.html | 6 ++-- .../fusion/functional/adapters/fused.html | 14 ++++---- .../adapters/fused_function_object.html | 14 ++++---- .../functional/adapters/fused_procedure.html | 14 ++++---- .../functional/adapters/unfused_generic.html | 14 ++++---- .../adapters/unfused_lvalue_args.html | 14 ++++---- .../adapters/unfused_rvalue_args.html | 14 ++++---- .../functional/adapters/unfused_typed.html | 14 ++++---- .../fusion/functional/concepts/callable.html | 6 ++-- .../functional/concepts/def_callable.html | 10 +++--- doc/html/fusion/functional/concepts/poly.html | 10 +++--- .../functional/concepts/reg_callable.html | 10 +++--- .../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 | 12 +++---- .../invocation/functions/invoke_fobj.html | 12 +++---- .../invocation/functions/invoke_proc.html | 12 +++---- .../invocation/metafunctions/invoke.html | 6 ++-- .../invocation/metafunctions/invoke_fobj.html | 6 ++-- .../invocation/metafunctions/invoke_proc.html | 6 ++-- doc/html/fusion/introduction.html | 15 ++++++-- doc/html/fusion/iterator.html | 2 +- .../concepts/bidirectional_iterator.html | 14 ++++---- .../iterator/concepts/forward_iterator.html | 12 +++---- .../concepts/random_access_iterator.html | 10 +++--- .../fusion/iterator/functions/advance.html | 12 +++---- .../fusion/iterator/functions/advance_c.html | 12 +++---- doc/html/fusion/iterator/functions/deref.html | 12 +++---- .../fusion/iterator/functions/distance.html | 12 +++---- doc/html/fusion/iterator/functions/next.html | 12 +++---- doc/html/fusion/iterator/functions/prior.html | 12 +++---- .../iterator/metafunctions/advance.html | 12 +++---- .../iterator/metafunctions/advance_c.html | 12 +++---- .../fusion/iterator/metafunctions/deref.html | 12 +++---- .../iterator/metafunctions/distance.html | 12 +++---- .../iterator/metafunctions/equal_to.html | 12 +++---- .../fusion/iterator/metafunctions/next.html | 12 +++---- .../fusion/iterator/metafunctions/prior.html | 12 +++---- .../iterator/metafunctions/value_of.html | 12 +++---- .../iterator/operator/operator_equality.html | 10 +++--- .../operator/operator_inequality.html | 10 +++--- .../operator/operator_unary_star.html | 12 +++---- doc/html/fusion/notes.html | 16 ++++----- doc/html/fusion/organization.html | 10 +++--- doc/html/fusion/quick_start.html | 16 ++++----- doc/html/fusion/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 +-- .../concepts/associative_sequence.html | 10 +++--- .../concepts/bidirectional_sequence.html | 12 +++---- .../sequence/concepts/forward_sequence.html | 12 +++---- .../concepts/random_access_sequence.html | 12 +++---- doc/html/fusion/sequence/intrinsic.html | 6 ++-- .../sequence/intrinsic/functions/at.html | 12 +++---- .../sequence/intrinsic/functions/at_c.html | 12 +++---- .../sequence/intrinsic/functions/at_key.html | 12 +++---- .../sequence/intrinsic/functions/back.html | 12 +++---- .../sequence/intrinsic/functions/begin.html | 12 +++---- .../sequence/intrinsic/functions/empty.html | 12 +++---- .../sequence/intrinsic/functions/end.html | 12 +++---- .../sequence/intrinsic/functions/front.html | 12 +++---- .../sequence/intrinsic/functions/has_key.html | 12 +++---- .../sequence/intrinsic/functions/size.html | 12 +++---- .../sequence/intrinsic/functions/swap.html | 10 +++--- .../sequence/intrinsic/metafunctions/at.html | 14 ++++---- .../intrinsic/metafunctions/at_c.html | 14 ++++---- .../intrinsic/metafunctions/at_key.html | 14 ++++---- .../intrinsic/metafunctions/back.html | 10 +++--- .../intrinsic/metafunctions/begin.html | 10 +++--- .../intrinsic/metafunctions/empty.html | 10 +++--- .../sequence/intrinsic/metafunctions/end.html | 10 +++--- .../intrinsic/metafunctions/front.html | 10 +++--- .../intrinsic/metafunctions/has_key.html | 10 +++--- .../intrinsic/metafunctions/size.html | 10 +++--- .../intrinsic/metafunctions/swap.html | 8 ++--- .../intrinsic/metafunctions/value_at.html | 10 +++--- .../intrinsic/metafunctions/value_at_c.html | 10 +++--- .../intrinsic/metafunctions/value_at_key.html | 10 +++--- .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 12 +++---- .../operator/comparison/greater_than.html | 10 +++--- .../comparison/greater_than_equal.html | 10 +++--- .../operator/comparison/less_than.html | 10 +++--- .../operator/comparison/less_than_equal.html | 10 +++--- .../operator/comparison/not_equal.html | 10 +++--- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 +++---- .../fusion/sequence/operator/i_o/out.html | 12 +++---- doc/html/fusion/support/category_of.html | 12 +++---- doc/html/fusion/support/deduce.html | 10 +++--- doc/html/fusion/support/deduce_sequence.html | 10 +++--- 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/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 +-- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 ++++---- doc/html/fusion/view/iterator_range.html | 14 ++++---- doc/html/fusion/view/joint_view.html | 14 ++++---- doc/html/fusion/view/reverse_view.html | 12 +++---- doc/html/fusion/view/single_view.html | 12 +++---- doc/html/fusion/view/transform_view.html | 12 +++---- doc/html/fusion/view/zip_view.html | 14 ++++---- doc/html/index.html | 2 +- doc/introduction.qbk | 22 ++++++------ 227 files changed, 1308 insertions(+), 1276 deletions(-) diff --git a/doc/adapted.qbk b/doc/adapted.qbk index 991918c9..a19696fd 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -11,10 +11,7 @@ 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]. +they will be regarded as first-class, fully conforming fusion sequences. Fusion also provides various schemes to make it easy for the user to adapt various data structures, non-intrusively, as full fledged Fusion sequences. @@ -24,6 +21,19 @@ various data structures, non-intrusively, as full fledged Fusion sequences. #include #include +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. To make Fusion sequences fully conforming __mpl__ sequences, include: + + #include + +If you want bi-directional adaptation to and from __mpl__ and Fusion, simply +include: + + #include + +The header includes all the necessary headers. + [section std::pair] This module provides adapters for `std::pair`. Including the module header diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index bba631f1..b6b76769 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -39,31 +39,40 @@ 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 - [13] - . + files and they will be regarded as first-class, fully conforming fusion sequences.

    Fusion also provides various schemes to make it easy for the user to adapt various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

     #include <boost/fusion/adapted.hpp>
     #include <boost/fusion/include/adapted.hpp>
     
    -
    -

    -

    [13] - 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 -

    -
    +

    + 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. To make Fusion sequences fully conforming MPL + sequences, include: +

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

    + If you want bi-directional adaptation to and from MPL + and Fusion, simply include: +

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

    + The header includes all the necessary headers. +

    diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index a493a623..be8d2e5c 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -50,7 +50,7 @@
         )
     

    - + Semantics

    @@ -70,7 +70,7 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    @@ -78,7 +78,7 @@
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 44aeea50..54551be7 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Synopsis

    @@ -48,7 +48,7 @@
         )
     

    - + Semantics

    @@ -65,7 +65,7 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    @@ -73,7 +73,7 @@
     #include <boost/fusion/include/adapt_struct.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index 5536896b..6860532f 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Header

    @@ -41,14 +41,14 @@
     #include <boost/fusion/include/array.hpp>
     

    - + Model of

    - + Example

    @@ -61,7 +61,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index 77a60656..d0aa4e69 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -33,7 +33,7 @@ Sequence.

    - + Header

    @@ -41,13 +41,13 @@
     #include <boost/fusion/include/boost_tuple.hpp>
     

    - + Model of

    - + Example

    @@ -56,7 +56,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     

    - + See also

    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 3c3da108..0b0c30ce 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -31,7 +31,7 @@ sequences fully conforming fusion sequences.

    - + Header

    @@ -39,7 +39,7 @@
     #include <boost/fusion/include/mpl.hpp>
     

    - + Model of

      @@ -63,7 +63,7 @@

    - + Example

    @@ -77,7 +77,7 @@
     std::cout << at_c<1>(v) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index eeef7903..0ca73946 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,7 +33,7 @@ Access Sequence.

    - + Header

    @@ -41,14 +41,14 @@
     #include <boost/fusion/include/std_pair.hpp>
     

    - + Model of

    - + Example

    @@ -58,7 +58,7 @@
     std::cout << p << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 6bc80386..6705af8a 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -43,7 +43,7 @@

    - + Lazy Evaluation

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

    - + Sequence Extension

    @@ -89,7 +89,7 @@ functions to convert back to the original sequence type.

    - + Header

    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index 4caea19e..b3584586 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -34,7 +34,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header

    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    index bfd01597..ab8a4229 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ and the previous state.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

    - + Complexity

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

    - + Header
    @@ -167,7 +167,7 @@
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index 3851c3f3..2a85276b 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ and the previous state.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

    - + Complexity

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

    - + Header
    @@ -167,7 +167,7 @@
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index e1d99e1b..b91e5dc6 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/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.35. Parameters

    +

    Table 1.35. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ in seq.

    - + Complexity

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

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    index e7ed62cb..68510792 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of accumulate.

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

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index 830e0687..ad5c88c7 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of fold.

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

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index 7e1aded0..e79753ea 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/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.38. Parameters

    +

    Table 1.38. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index 804b2ff2..ef74a1ed 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -33,7 +33,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header

    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
    index 374d6ac2..675563bb 100644
    --- a/doc/html/fusion/algorithm/query/functions/all.html
    +++ b/doc/html/fusion/algorithm/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.40. Parameters

    +

    Table 1.40. Parameters

    @@ -116,7 +116,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ element e in seq.

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index 5db56ce9..ab57aee9 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/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.39. Parameters

    +

    Table 1.39. Parameters

    @@ -116,7 +116,7 @@
    - + Expression semantics
    @@ -133,14 +133,14 @@ element e in seq.

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index 8f23811a..b580fc36 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/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.44. Parameters

    +

    Table 1.44. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ t in seq.

    - + Complexity

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

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index 3862d527..438c6b36 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/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.45. Parameters

    +

    Table 1.45. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -128,14 +128,14 @@ in seq where f evaluates to true.

    - + Complexity

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

    - + Header
    @@ -143,7 +143,7 @@
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index 6621e233..93439f5b 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/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.42. Parameters

    +

    Table 1.42. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index b8953025..06d183e8 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/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.43. Parameters

    +

    Table 1.43. Parameters

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

    - + Complexity

    @@ -147,7 +147,7 @@ /algorithm/query/find_if.hpp>

    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index b6b52b45..a8b1ff61 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/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.41. Parameters

    +

    Table 1.41. Parameters

    @@ -116,7 +116,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
    index f5a8233c..6c97ff51 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of all.

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

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index 2c297528..5bd0c544 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of any.

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

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index 1ea0cae5..e69da6ce 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/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.51. Parameters

    +

    Table 1.51. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index 89985739..f4f8a065 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/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.52. Parameters

    +

    Table 1.52. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index b7e12341..eeaaae19 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/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.49. Parameters

    +

    Table 1.49. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ if there is no such element.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index ffc8db41..b5460415 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/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.50. Parameters

    +

    Table 1.50. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -132,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/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index e3c729b4..ef3a129d 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of none.

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

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 0918d577..6635942c 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -46,7 +46,7 @@
             

    - + Header

    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index 7d4eaefa..bf7a9ef2 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/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.62. Parameters

    +

    Table 1.62. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index fc564b0d..b8fae8b4 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/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.63. Parameters

    +

    Table 1.63. Parameters

    @@ -141,7 +141,7 @@
    - + Expression Semantics
    @@ -172,14 +172,14 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -187,7 +187,7 @@
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index b7e1f17f..fb175e6a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/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.64. Parameters

    +

    Table 1.64. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index dd8c1e77..9853c852 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/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.53. Parameters

    +

    Table 1.53. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index 73e21b29..7cc27e70 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/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.54. Parameters

    +

    Table 1.54. Parameters

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -132,14 +132,14 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -147,7 +147,7 @@
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index e6e1d930..4c760f78 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/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.65. Parameters

    +

    Table 1.65. Parameters

    @@ -130,7 +130,7 @@
    - + Expression Semantics
    @@ -150,14 +150,14 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -165,7 +165,7 @@
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index 48672611..fad935dd 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/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.66. Parameters

    +

    Table 1.66. Parameters

    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -153,14 +153,14 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -168,7 +168,7 @@
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 3f6f9b2f..23059311 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/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.67. Parameters

    +

    Table 1.67. Parameters

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -145,7 +145,7 @@
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index c99c556a..93d6c7db 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/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.69. Parameters

    +

    Table 1.69. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -108,14 +108,14 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 9d1ffdce..250d2106 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/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.70. Parameters

    +

    Table 1.70. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -108,14 +108,14 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index ed0b97db..c7eb51b8 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/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.71. Parameters

    +

    Table 1.71. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ 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
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index 206498dc..5efd05aa 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/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.72. Parameters

    +

    Table 1.72. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -145,7 +145,7 @@
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index 1e50bd19..bc162419 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/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.59. Parameters

    +

    Table 1.59. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index 08d882ba..551b4114 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/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.60. Parameters

    +

    Table 1.60. Parameters

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -146,7 +146,7 @@
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index 5177aa39..a81433e6 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/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.57. Parameters

    +

    Table 1.57. Parameters

    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -166,7 +166,7 @@
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index 9b17e4d3..4a076daa 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/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.58. Parameters

    +

    Table 1.58. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -166,7 +166,7 @@
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index b62baa9c..3bb81b5a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/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.61. Parameters

    +

    Table 1.61. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -107,14 +107,14 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 5c20d767..7549429a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -118,7 +118,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ within seq.

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

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -263,7 +263,7 @@
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index 51e410c1..faf42aa8 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/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.68. Parameters

    +

    Table 1.68. Parameters

    @@ -94,7 +94,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -132,7 +132,7 @@
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index 0f20d273..2025ac99 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -107,14 +107,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index f9ec70c7..87276b98 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -30,11 +30,11 @@
                 and range delimiting iterator types.
               

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

    Table 1.83. Parameters

    +

    Table 1.83. Parameters

    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -164,14 +164,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index 26993697..ef1aa29d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.84. Parameters

    +

    Table 1.84. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index fcea7aaa..8c3e072c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 83bf3891..6d935809 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/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.74. Parameter

    +

    Table 1.74. Parameter

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index 14fbe3b8..e4e955de 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/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.85. Parameters

    +

    Table 1.85. Parameters

    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index a60f35eb..644427b8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/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.86. Parameters

    +

    Table 1.86. Parameters

    @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -154,14 +154,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 9173e642..c9c48d30 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/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/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index ca01df85..005d2114 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -111,14 +111,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 5a50183f..1903d17c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -111,7 +111,7 @@ except the first element.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 1b023f99..893f59a3 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/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.89. Parameters

    +

    Table 1.89. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ added to the end.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index 1c88757e..6901f157 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/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.90. Parameters

    +

    Table 1.90. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ added to the beginning.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index 7fc0dee1..d6479d10 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -26,7 +26,7 @@

    - + Description

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

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

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 9db0fa3a..7d875fb1 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/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.80. Parameters

    +

    Table 1.80. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index c85fedea..8bad8199 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/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.77. Parameters

    +

    Table 1.77. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index 43f47086..3c7410e8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/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.78. Parameters

    +

    Table 1.78. Parameters

    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index 15f9a322..62837035 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -110,14 +110,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index a32b3f08..196b8bd8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -118,7 +118,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ within seq.

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

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -263,7 +263,7 @@
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index b2afedb4..375fad85 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/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/container.html b/doc/html/fusion/container.html
    index b455c09e..54ab1ae2 100644
    --- a/doc/html/fusion/container.html
    +++ b/doc/html/fusion/container.html
    @@ -49,7 +49,7 @@
           These containers are more or less counterparts of those in STL.
         

    - + Header

    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index b35c6bdd..8c84b924 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -50,7 +50,7 @@
     #include <boost/fusion/include/cons.hpp>
     

    - + Synopsis

    @@ -58,7 +58,7 @@
     struct cons;
     

    - + Template parameters

    @@ -121,7 +121,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index 041b7cf5..4fab9f77 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -34,7 +34,7 @@
             types using one of these conversion functions.
           

    - + Header

    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
    index bb49f15a..ae3ce029 100644
    --- a/doc/html/fusion/container/conversion/functions/as_list.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ seq, to a list.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index 5d60bbb4..c429f81c 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -111,7 +111,7 @@ There may be no duplicate fusion::pair key types.

    - + Header
    @@ -119,7 +119,7 @@
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index 07021f95..4d9630c3 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -110,7 +110,7 @@ key types.

    - + Header
    @@ -118,7 +118,7 @@
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index 67accc90..de568709 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ seq, to a vector.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    index ebb79585..5dec3fc8 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -102,7 +102,7 @@ Sequence, to a list.

    - + Header
    @@ -110,7 +110,7 @@
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index 030383ae..593c322b 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -107,7 +107,7 @@ There may be no duplicate fusion::pair key types.

    - + Header
    @@ -115,7 +115,7 @@
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index 06961ca2..2969295d 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ key types.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index f97426a0..5b821dc4 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -102,7 +102,7 @@ Sequence, to a vector.

    - + Header
    @@ -110,7 +110,7 @@
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index 596b8880..eaaf0b44 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -33,7 +33,7 @@
             These are the functions that you can use to generate various forms of Container from elemental values.
           

    - + Header

    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
    index b565b917..bfbc7546 100644
    --- a/doc/html/fusion/container/generation/functions/list_tie.html
    +++ b/doc/html/fusion/container/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
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index 4fd1b202..e602212d 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

    - + Synopsis
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -128,7 +128,7 @@ (tail).

    - + Header
    @@ -136,14 +136,14 @@
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index d535aaf8..fb1d5e38 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -54,7 +54,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -101,7 +101,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    @@ -123,14 +123,14 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 1ae59169..d250801b 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -26,7 +26,7 @@
    - + Description

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

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

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [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
    @@ -125,7 +125,7 @@
    - + Expression Semantics
    @@ -146,7 +146,7 @@ key types.

    - + Header
    @@ -154,7 +154,7 @@
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    @@ -163,7 +163,7 @@
       , make_pair<double>("Men"))
     
    - + See also
    @@ -173,7 +173,7 @@



    -

    [9] +

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

    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index f0a975f4..287038e8 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [8] + [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 @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -102,7 +102,7 @@
    - + Expression Semantics
    @@ -120,7 +120,7 @@ key types.

    - + Header
    @@ -128,14 +128,14 @@
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also
    @@ -144,7 +144,7 @@



    -

    [8] +

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

    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index b72eb17b..f2dfe63d 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -54,7 +54,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -101,7 +101,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    @@ -123,14 +123,14 @@
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index d43fcf0b..72571e0d 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -122,7 +122,7 @@
    - + Expression Semantics
    @@ -138,7 +138,7 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    @@ -146,7 +146,7 @@
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 3512765c..08022439 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -49,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))
    -            [10]
    +            [11]
                 .
               

    @@ -67,7 +67,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -82,7 +82,7 @@



    -

    [10] +

    [11] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 08e79b99..372dcb14 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/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
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    index 0c61de79..9cf228c2 100644
    --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,7 +114,7 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index d554649c..9161b76e 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/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
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ (tail).

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index b1d5fe0f..217f1103 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index 36334852..92eb4427 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/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 - [12] + [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
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,7 +143,7 @@ key types.

    - + Header
    @@ -151,14 +151,14 @@
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also
    @@ -167,7 +167,7 @@



    -

    [12] +

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

    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 19a63d3e..2e2fc32f 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/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 - [11] + [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
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -120,7 +120,7 @@ key types.

    - + Header
    @@ -128,7 +128,7 @@
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    @@ -136,7 +136,7 @@
     


    -

    [11] +

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

    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index 04fb849a..a8085b13 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index 2c244ad9..252b1033 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -120,7 +120,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index ca5220d6..54518d44 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,7 +114,7 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index 19b1480b..27ae887c 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/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

    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     

    - + Synopsis

    @@ -79,7 +79,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     

    - + Template parameters

    @@ -124,7 +124,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index 96cfb7ea..281e5a89 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -50,7 +50,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     

    - + Synopsis

    @@ -81,7 +81,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     

    - + Template parameters

    @@ -126,7 +126,7 @@

    - + Model of

      @@ -159,7 +159,7 @@

    - + Expression Semantics

    @@ -246,7 +246,7 @@

    - + Example

    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index 7f1a72d1..e07ebd46 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     

    - + Synopsis

    @@ -80,7 +80,7 @@
     #define FUSION_MAX_SET_SIZE 20
     

    - + Template parameters

    @@ -125,7 +125,7 @@

    - + Model of

      @@ -158,7 +158,7 @@

    - + Expression Semantics

    @@ -245,7 +245,7 @@

    - + Example

    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index 8a25e2bf..77fc6c3b 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -61,7 +61,7 @@
     #include <boost/fusion/include/vector50.hpp>
     

    - + Synopsis

    @@ -122,7 +122,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Template parameters

    @@ -167,7 +167,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index 256c5dd8..892225d1 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -48,7 +48,7 @@
             
     

    - + Our example

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

    - + Enabling Tag Dispatching

    @@ -124,7 +124,7 @@ #include <boost/fusion/include/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -187,7 +187,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features

    @@ -331,7 +331,7 @@

    - + Implementing the remaining iterator functionality

    @@ -386,7 +386,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    @@ -445,7 +445,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative container

    @@ -513,7 +513,7 @@ of is_associative_impl.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index b8e83611..bf879e9a 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -43,7 +43,7 @@
     struct iterator_facade;
     

    - + Usage

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

    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

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

    Table 1.94. Key Expressions

    +

    Table 1.94. Key Expressions

    @@ -365,7 +365,7 @@

    - + Header

    @@ -373,7 +373,7 @@
     #include <boost/fusion/include/iterator_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 23ca8adc..b94329ea 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -43,7 +43,7 @@
     struct sequence_facade;
     

    - + Usage

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

    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

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

    Table 1.92. Key Expressions

    +

    Table 1.92. Key Expressions

    @@ -243,7 +243,7 @@

    - + Include

    @@ -251,7 +251,7 @@
     #include <boost/fusion/include/sequence_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 256cc8f7..d86c2f00 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -65,7 +65,7 @@ /functional.hpp>

    - + Fused and unfused forms

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

    - + Calling functions and function objects

    @@ -130,7 +130,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 45cce563..4746e4ee 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -26,7 +26,7 @@
    - + Description

    @@ -59,7 +59,7 @@ /functional/adapter/fused.hpp>

    - + Synopsis
    @@ -67,7 +67,7 @@
     class fused;
     
    - + Template parameters
    @@ -114,7 +114,7 @@
    - + Model of
      @@ -150,7 +150,7 @@
    - + Expression Semantics
    @@ -214,7 +214,7 @@
    - + Example
    @@ -222,7 +222,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 6a0c59de..2c4f9bb5 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

      @@ -49,7 +49,7 @@ /functional/adapter/fused_function_object.hpp>

      - + Synopsis
      @@ -57,7 +57,7 @@
       class fused_function_object;
       
      - + Template parameters
      @@ -104,7 +104,7 @@
    - + Model of
    @@ -141,7 +141,7 @@
    - + Expression Semantics
    @@ -205,7 +205,7 @@
    - + Example
    @@ -243,7 +243,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 09a70ccf..75765279 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -26,7 +26,7 @@
    - + Description

    @@ -66,7 +66,7 @@ /functional/adapter/fused_procedure.hpp>

    - + Synopsis
    @@ -74,7 +74,7 @@
     class fused_procedure;
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    @@ -156,7 +156,7 @@
    - + Expression Semantics
    @@ -220,7 +220,7 @@
    - + Example
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index f937caab..1026f721 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -26,7 +26,7 @@
    - + Description

    @@ -58,7 +58,7 @@ /functional/adapter/unfused_generic.hpp>

    - + Synopsis
    @@ -66,7 +66,7 @@
     class unfused_generic;
     
    - + Template parameters
    @@ -113,7 +113,7 @@
    - + Model of
    @@ -154,7 +154,7 @@
    - + Expression Semantics
    @@ -218,7 +218,7 @@
    - + Example
    @@ -269,7 +269,7 @@
     }
     
    - + 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 19480af9..5d036e4d 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

    @@ -51,7 +51,7 @@ /functional/adapter/unfused_lvalue_args.hpp>

    - + Synopsis
    @@ -59,7 +59,7 @@
     class unfused_lvalue_args;
     
    - + Template parameters
    @@ -106,7 +106,7 @@
    - + Model of
    @@ -147,7 +147,7 @@
    - + Expression Semantics
    @@ -211,7 +211,7 @@
    - + Example
    @@ -239,7 +239,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 c42349a5..6bbaf79e 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

    @@ -51,7 +51,7 @@ /functional/adapter/unfused_rvalue_args.hpp>

    - + Synopsis
    @@ -59,7 +59,7 @@
     class unfused_rvalue_args;
     
    - + Template parameters
    @@ -106,7 +106,7 @@
    - + Model of
    @@ -147,7 +147,7 @@
    - + Expression Semantics
    @@ -211,7 +211,7 @@
    - + Example
    @@ -237,7 +237,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 5e647b0a..ea039b23 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -26,7 +26,7 @@
    - + Description

    @@ -65,7 +65,7 @@ /functional/adapter/unfused_typed.hpp>

    - + Synopsis
    @@ -73,7 +73,7 @@
     class unfused_typed;
     
    - + Template parameters
    @@ -138,7 +138,7 @@
    - + Model of
    @@ -184,7 +184,7 @@
    - + Expression Semantics
    @@ -250,7 +250,7 @@
    - + Example
    @@ -319,7 +319,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 5bc41fe4..d4179faa 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@
      - + Description

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

      - + Models
        @@ -51,7 +51,7 @@
      - + Examples
      diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
      index 5cb8a0f8..e93da651 100644
      --- a/doc/html/fusion/functional/concepts/def_callable.html
      +++ b/doc/html/fusion/functional/concepts/def_callable.html
      @@ -31,7 +31,7 @@
               Callable Object"> Deferred
               Callable Object
    - + Description

    @@ -40,7 +40,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -81,7 +81,7 @@
    - + Expression requirements
    @@ -119,7 +119,7 @@
    - + Models
      @@ -133,7 +133,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index 626811e1..8c3def6a 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 @@ Callable Object type.

    - + Refinement of
    @@ -83,7 +83,7 @@
    - + Expression requirements
    @@ -132,7 +132,7 @@
    - + Models
      @@ -147,7 +147,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index 62567f3a..333f1f4e 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -30,7 +30,7 @@
             Object"> Regular Callable
             Object
     
    - + Description

    @@ -39,7 +39,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -69,7 +69,7 @@
    - + Expression requirements
    @@ -116,7 +116,7 @@
    - + Models
      @@ -128,7 +128,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
    index 37f88ec4..7341d54e 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,7 +111,7 @@ Semantics: Returns a fused adapter for f.

    - + Header
    @@ -119,7 +119,7 @@
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    @@ -135,7 +135,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 18882982..5c77ffe2 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,7 +114,7 @@ for f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    @@ -151,7 +151,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 2e1dc436..ab22e58c 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,7 +113,7 @@ f.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    @@ -131,7 +131,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 11f8ce5c..a63b9702 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,7 +114,7 @@ f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - + Example
    @@ -158,7 +158,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 1b3327ff..adb36776 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,7 +114,7 @@ for f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - + Example
    @@ -149,7 +149,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 28cdbfd2..bfb35340 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,7 +113,7 @@ for f.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - + Example
    @@ -147,7 +147,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 2d425902..768fcaa7 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,7 +38,7 @@ make_fused">make_fused.

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    @@ -60,7 +60,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 8b4f20f4..823d45d9 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,7 +39,7 @@ make_fused_function_object">make_fused_function_object.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 a985890a..c7400505 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,7 +39,7 @@ make_fused_procedure">make_fused_procedure.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 9e34014c..f328f91f 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,7 +39,7 @@ make_unfused_generic">make_unfused_generic.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 732f666a..f6bc6b28 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,7 +39,7 @@ make_unfused_lvalue_args">make_unfused_lvalue_args.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 45ee7e92..a5a46e88 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,7 +38,7 @@ make_unfused_rvalue_args">make_unfused_rvalue_args.

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 2d5bdaae..f1964b48 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@
    - + Description

    @@ -47,7 +47,7 @@ and boost::shared_ptr).

    - + Synopsis
    @@ -66,7 +66,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -154,7 +154,7 @@ /functional/invocation/invoke.hpp>

    - + Example
    @@ -162,7 +162,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 550a68a8..20f04f8e 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

    @@ -43,7 +43,7 @@ and/or to control the const qualification of a function object.

    - + Synopsis
    @@ -64,7 +64,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -152,7 +152,7 @@ /functional/invocation/invoke_function_object.hpp>

    - + Example
    @@ -179,7 +179,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 fc9b8590..156defe6 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

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

    - + Synopsis
    @@ -75,7 +75,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -142,7 +142,7 @@
    - + Expression Semantics
    @@ -161,7 +161,7 @@ /functional/invocation/invoke_procedure.hpp>

    - + Example
    @@ -171,7 +171,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 7db3fa90..7210b07a 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@
    - + Description

    Returns the result type of invoke.

    - + Synopsis
    @@ -51,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 fb7f26c4..5a1915a9 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -30,7 +30,7 @@ invoke_function_object"> invoke_function_object
    - + Description

    @@ -38,7 +38,7 @@ invoke_function_object">invoke_function_object.

    - + Synopsis
    @@ -55,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 a7a99107..70e7bf59 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
    - + Description

    @@ -38,7 +38,7 @@ invoke_procedure">invoke_procedure.

    - + Synopsis
    @@ -55,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index a4a3467b..c5cdeda0 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -115,8 +115,10 @@ 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 + wish to work solely on types + [1] + . In MPL, Fusion + sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from an MPL sequence @@ -127,6 +129,15 @@ instantiation of real runtime objects with data. You have the best of both worlds.

    +
    +

    +

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

    +
    diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 1434eed3..b490ea5d 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -74,7 +74,7 @@ Sequence.

    - + Header

    diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html
    index d8976ee7..1e7d3ee8 100644
    --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html
    +++ b/doc/html/fusion/iterator/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
    @@ -182,7 +182,7 @@
    - + Meta Expressions
    @@ -217,7 +217,7 @@
    - + Expression Semantics
    @@ -258,7 +258,7 @@
    - + Invariants

    @@ -275,7 +275,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 26737303..2928d7e3 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Expression requirements
    @@ -244,7 +244,7 @@
    - + Meta Expressions
    @@ -355,7 +355,7 @@
    - + Expression Semantics
    @@ -481,7 +481,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 37943087..18eeb7c7 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/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
    @@ -185,7 +185,7 @@
    - + Meta Expressions
    @@ -248,7 +248,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index 51ad4f5f..679cfe6f 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/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

      @@ -110,7 +110,7 @@
      - + Expression Semantics
      @@ -131,7 +131,7 @@ may be negative.

      - + Header
      @@ -139,7 +139,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
      index 0eaf1c54..6385f43b 100644
      --- a/doc/html/fusion/iterator/functions/advance_c.html
      +++ b/doc/html/fusion/iterator/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

      @@ -109,7 +109,7 @@
      - + Expression Semantics
      @@ -130,7 +130,7 @@ may be negative.

      - + Header
      @@ -138,7 +138,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
      index fb22ed6e..1eb8ebfe 100644
      --- a/doc/html/fusion/iterator/functions/deref.html
      +++ b/doc/html/fusion/iterator/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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -104,7 +104,7 @@ i.

      - + Header
      @@ -112,7 +112,7 @@
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
      index afcfd8cc..d3803191 100644
      --- a/doc/html/fusion/iterator/functions/distance.html
      +++ b/doc/html/fusion/iterator/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

      @@ -90,7 +90,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ iterators i and j.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
      index 513d89b7..877b86f4 100644
      --- a/doc/html/fusion/iterator/functions/next.html
      +++ b/doc/html/fusion/iterator/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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ next element after i.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
      index a9f13b1e..f5ceb019 100644
      --- a/doc/html/fusion/iterator/functions/prior.html
      +++ b/doc/html/fusion/iterator/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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ element prior to i.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
      index 4e153e59..1947ad85 100644
      --- a/doc/html/fusion/iterator/metafunctions/advance.html
      +++ b/doc/html/fusion/iterator/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

      @@ -113,7 +113,7 @@
      - + Expression Semantics
      @@ -133,7 +133,7 @@ may be negative.

      - + Header
      @@ -141,7 +141,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
      index 92377359..7e3eeb51 100644
      --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
      +++ b/doc/html/fusion/iterator/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

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

      - + Header
      @@ -140,7 +140,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
      index c530ba7a..d02e6a28 100644
      --- a/doc/html/fusion/iterator/metafunctions/deref.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -107,7 +107,7 @@ an iterator of type I.

      - + Header
      @@ -115,7 +115,7 @@
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
      index 951c2554..bb3e1d1e 100644
      --- a/doc/html/fusion/iterator/metafunctions/distance.html
      +++ b/doc/html/fusion/iterator/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

      @@ -93,7 +93,7 @@
      - + Expression Semantics
      @@ -110,7 +110,7 @@ J.

      - + Header
      @@ -118,7 +118,7 @@
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
      index 9f9134af..24ba49d9 100644
      --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
      +++ b/doc/html/fusion/iterator/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

      @@ -93,7 +93,7 @@
      - + Expression Semantics
      @@ -110,7 +110,7 @@ Returns boost::mpl::false_ otherwise.

      - + Header
      @@ -118,7 +118,7 @@
       #include <boost/fusion/include/equal_to.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
      index 490e34f7..d006635d 100644
      --- a/doc/html/fusion/iterator/metafunctions/next.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -108,7 +108,7 @@ next element in the sequence after I.

      - + Header
      @@ -116,7 +116,7 @@
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
      index 28747387..e431177d 100644
      --- a/doc/html/fusion/iterator/metafunctions/prior.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -108,7 +108,7 @@ previous element in the sequence before I.

      - + Header
      @@ -116,7 +116,7 @@
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
      index c71282dc..08604d48 100644
      --- a/doc/html/fusion/iterator/metafunctions/value_of.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -107,7 +107,7 @@ a sequence at iterator position I.

      - + Header
      @@ -115,7 +115,7 @@
       #include <boost/fusion/include/value_of.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
      index f1210022..51a9529f 100644
      --- a/doc/html/fusion/iterator/operator/operator_equality.html
      +++ b/doc/html/fusion/iterator/operator/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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index c23b2ef4..c7dc174e 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/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

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -105,7 +105,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 731433c0..653f243d 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ Semantics: Equivalent to deref(i).

    - + Header
    @@ -116,7 +116,7 @@
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index 2126f5e9..971ef3f4 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     
     

    - + Recursive Inlined Functions

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

    - + Overloaded Functions

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

    - + Tag Dispatching

    @@ -103,7 +103,7 @@

    - + Extensibility

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

    - + Element Conversion

    @@ -161,7 +161,7 @@

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

    @@ -194,7 +194,7 @@
     list<void (*)(int)>
     

    - + boost::ref

    @@ -237,7 +237,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 d34c6be3..ba26bd8a 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

    @@ -65,7 +65,7 @@ against.

    - + Directory

      @@ -186,7 +186,7 @@

    - + Example

    @@ -202,12 +202,12 @@

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



    -

    [3] +

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

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 529d34a8..3a31cb9a 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] + [2] :

    @@ -42,7 +42,7 @@
     

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

    @@ -60,7 +60,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

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

    - + Print only pointers

    @@ -152,7 +152,7 @@ Easy, right?

    - + Associative tuples

    @@ -227,7 +227,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -238,12 +238,12 @@



    -

    [1] +

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

    -

    [2] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 47ddda51..90f6dbee 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -59,7 +59,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 18ca1062..3c4f1508 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/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/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index d3434fe4..959e29dd 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

    - + Description

    @@ -71,7 +71,7 @@

    - + Valid Expressions
    @@ -180,7 +180,7 @@
    - + Result Type Expressions
    @@ -252,7 +252,7 @@ result_of::value_at_key<S, N>.

    - + Expression Semantics
    @@ -307,7 +307,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 18e07798..044de653 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/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
    @@ -207,7 +207,7 @@
    - + Result Type Expressions
    @@ -268,7 +268,7 @@
    - + Expression Semantics
    @@ -309,7 +309,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index c530d85d..dbd8bc2d 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -62,7 +62,7 @@

    - + Valid Expressions
    @@ -239,7 +239,7 @@
    - + Result Type Expressions
    @@ -324,7 +324,7 @@
    - + Expression Semantics
    @@ -412,7 +412,7 @@
    - + Invariants

    @@ -438,7 +438,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 8f353461..15092dca 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
    - + Description

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

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Valid Expressions
    @@ -214,7 +214,7 @@
    - + Result Type Expressions
    @@ -297,7 +297,7 @@ result_of::value_at<S, N>.

    - + Expression Semantics
    @@ -338,7 +338,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index b131dcff..cbbe5af3 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -37,11 +37,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [4] + [5] .

      - + Header

      @@ -50,7 +50,7 @@
       


      -

      [4] +

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

      diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 8493fff6..38571b05 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/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
      @@ -113,7 +113,7 @@
      - + Expression Semantics
      @@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
    - + Header
    @@ -149,7 +149,7 @@
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index 2866bfc9..a0fdbaf1 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
    - + Header
    @@ -149,7 +149,7 @@
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index a3861d5f..99e8aa4e 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ with Key.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index 2685c8a0..70b28e90 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ in the sequence.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index 94ac29d3..cd751fb2 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ to the first element in the sequence.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index 3492aa2b..eea11704 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ to false.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index 29377d59..007bc1e0 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ to one element past the end of the sequence.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index 632784a4..41b2dfb2 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ in the sequence.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index 06757004..2fb1e241 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -126,7 +126,7 @@ associated with Key, else, evaluates to false.

    - + Header
    @@ -134,7 +134,7 @@
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index 42da5849..dd98ddbf 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -105,7 +105,7 @@ in the sequence.

    - + Header
    @@ -113,7 +113,7 @@
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index 632a5704..411915a1 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    @@ -41,7 +41,7 @@
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    index 0981ce31..e6935a0b 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    @@ -26,16 +26,16 @@
     
     
    - + Description

    Returns the result type of at - [5] + [6] .

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

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ /sequence/intrinsic/at.hpp>

    - + Example
    @@ -141,7 +141,7 @@
     


    -

    [5] +

    [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/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 8da90fc2..75815744 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -26,16 +26,16 @@

    - + Description

    Returns the result type of at_c - [6] + [7] .

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

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,7 +131,7 @@ /sequence/intrinsic/at.hpp>

    - + Example
    @@ -140,7 +140,7 @@
     


    -

    [6] +

    [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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index d4b45370..0239a27a 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -26,16 +26,16 @@

    - + Description

    Returns the result type of at_key - [7] + [8] .

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

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,7 +133,7 @@ /sequence/intrinsic/at_key.hpp>

    - + Example
    @@ -142,7 +142,7 @@
     


    -

    [7] +

    [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/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 85344454..9bca7e56 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ /sequence/intrinsic/back.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index 47908f24..f514eaea 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/begin.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index 4ce54898..fc6b344a 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -110,7 +110,7 @@ /sequence/intrinsic/empty.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index e4a341f4..b4dcc312 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/end.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index 396a88b5..5313ead9 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/front.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index 0eee5f60..9b4931e2 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ /sequence/intrinsic/has_key.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index 7d42813e..7d4be7d5 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/size.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index cd14b573..cf6e17c9 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the return type of swap.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index 83060686..06c0e66f 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -130,7 +130,7 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index 5d25567d..8e4c4770 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -129,7 +129,7 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index 7b4d49ac..1181c6c4 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -130,7 +130,7 @@ /sequence/intrinsic/value_at_key.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
    index a51bd7f5..477132a5 100644
    --- a/doc/html/fusion/sequence/operator/comparison.html
    +++ b/doc/html/fusion/sequence/operator/comparison.html
    @@ -48,7 +48,7 @@
               only until the result is clear.
             

    - + Header
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index 710df9fd..1d0f9c03 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -125,7 +125,7 @@ true.

    - + Header
    @@ -133,7 +133,7 @@
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index c6253c1e..b71ab098 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ Semantics: Returns b < a.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index 9c9cc08b..bdbc77a7 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -116,7 +116,7 @@ Semantics: Returns !(a < b).

    - + Header
    @@ -124,7 +124,7 @@
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index d9f47658..19c63f56 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -119,7 +119,7 @@ and b.

    - + Header
    @@ -127,7 +127,7 @@
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index 1fbb151d..aa602ef2 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ Semantics: Returns !(b < a).

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index e580d23c..d6fb5b3a 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -119,7 +119,7 @@ Returns !(a == b).

    - + Header
    @@ -127,7 +127,7 @@
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 623d8ccd..055c0069 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -116,7 +116,7 @@
               representation may not be unambiguously parseable.
             

    - + Header
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index 69a3b51c..62b85cdb 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ e.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index 8a95450c..7b87b6d3 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ e.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index c629aadc..fed08298 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

    @@ -95,7 +95,7 @@

    - + Expression Semantics

    @@ -161,7 +161,7 @@ of a particular Sequence or Iterator.

    - + Header

    @@ -169,7 +169,7 @@
     #include <boost/fusion/include/category_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index 685bba16..5534ac30 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -39,7 +39,7 @@ Reference wrappers are removed (see boost::ref).

    - + Header

    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/deduce.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@
     }
     

    - + Example

    @@ -82,7 +82,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 78f38eef..6bb74408 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -26,7 +26,7 @@

    - + Description

    @@ -39,7 +39,7 @@ original type as its argument.

    - + Header

    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@
     }
     

    - + Example

    @@ -84,7 +84,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index d25c9fcc..0ebeb1e0 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

    @@ -96,7 +96,7 @@

    - + Expression Semantics

    @@ -114,7 +114,7 @@ otherwise.

    - + Header

    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/is_sequence.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index 0fc85062..c77e4c81 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

    @@ -99,7 +99,7 @@

    - + Expression Semantics

    @@ -116,7 +116,7 @@
             otherwise.
           

    - + Header

    @@ -124,7 +124,7 @@
     #include <boost/fusion/include/is_view.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index 54ec9e47..ad178d19 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

    @@ -140,7 +140,7 @@

    - + Expression Semantics

    @@ -320,7 +320,7 @@

    - + Header

    @@ -328,7 +328,7 @@
     #include <boost/fusion/include/pair.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 0c4cea83..edfa094d 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

    @@ -99,7 +99,7 @@

    - + Expression Semantics

    @@ -113,7 +113,7 @@
             with T.
           

    - + Header

    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/tag_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
    index 1acea42b..d7dde30a 100644
    --- a/doc/html/fusion/tuple/class_template_tuple.html
    +++ b/doc/html/fusion/tuple/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis

    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 7701e26a..bf9eb474 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 3e4bc992..04498d1e 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/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/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index fca7de33..30fe370a 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/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/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 4ac80256..4c503290 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -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/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index d7cdb301..93daa1bd 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -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/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index 270c05d5..005ad4a3 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/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/fusion/view.html b/doc/html/fusion/view.html
    index e16a12d4..4b029ff9 100644
    --- a/doc/html/fusion/view.html
    +++ b/doc/html/fusion/view.html
    @@ -44,7 +44,7 @@
           to copy and be passed around by value.
         

    - + Header

    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index 68c5a05f..52c8b317 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -37,7 +37,7 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header

    @@ -45,7 +45,7 @@
     #include <boost/fusion/include/filter_view.hpp>
     

    - + Synopsis

    @@ -53,7 +53,7 @@
     struct filter_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 4784246c..8f905d68 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -34,7 +34,7 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header

    @@ -42,7 +42,7 @@
     #include <boost/fusion/include/iterator_range.hpp>
     

    - + Synopsis

    @@ -50,7 +50,7 @@
     struct iterator_range;
     

    - + Template parameters

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

    - + Model of

    • @@ -149,7 +149,7 @@

    - + Expression Semantics

    @@ -224,7 +224,7 @@

    - + Example

    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 4ac0c513..2e812187 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -34,7 +34,7 @@ which is a concatenation of two sequences.

    - + Header

    @@ -42,7 +42,7 @@
     #include <boost/fusion/include/joint_view.hpp>
     

    - + Synopsis

    @@ -50,7 +50,7 @@
     struct joint_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index 3b2f44a2..a54d1a7e 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -31,7 +31,7 @@
             element will be its first.
           

    - + Header

    @@ -39,7 +39,7 @@
     #include <boost/fusion/include/reverse_view.hpp>
     

    - + Synopsis

    @@ -47,7 +47,7 @@
     struct reverse_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index 15c673b9..007d4a75 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -30,7 +30,7 @@
             a value as a single element sequence.
           

    - + Header

    @@ -38,7 +38,7 @@
     #include <boost/fusion/include/single_view.hpp>
     

    - + Synopsis

    @@ -46,7 +46,7 @@
     struct single_view;
     

    - + Template parameters

    @@ -90,7 +90,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 5d2e4a7e..7e690045 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -35,7 +35,7 @@
             Traversal Concept) of its underlying sequence or sequences.
           

    - + Header

    @@ -43,7 +43,7 @@
     #include <boost/fusion/include/transform_view.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@ struct transform_view;

    - + Template parameters

    @@ -183,7 +183,7 @@

    - + Model of

    • @@ -242,7 +242,7 @@

    - + Expression Semantics

    @@ -337,7 +337,7 @@

    - + Example

    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index fd07f5d4..def0b67b 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -37,7 +37,7 @@ to the component _sequence_s.

    - + Header

    @@ -45,7 +45,7 @@
     #include <boost/fusion/include/zip_view.hpp>
     

    - + Synopsis

    @@ -53,7 +53,7 @@
     struct zip_view;
     

    - + Template parameters

    @@ -99,7 +99,7 @@

    - + Model of

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

    - + Expression Semantics

    @@ -204,7 +204,7 @@

    - + Example

    diff --git a/doc/html/index.html b/doc/html/index.html
    index 089b7251..e5bd41ce 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -240,7 +240,7 @@
     
     
     
    -
    +

    Last revised: July 17, 2008 at 23:52:47 GMT

    Last revised: July 22, 2008 at 02:00:25 GMT


    diff --git a/doc/introduction.qbk b/doc/introduction.qbk index 7bd7d786..066f5a33 100644 --- a/doc/introduction.qbk +++ b/doc/introduction.qbk @@ -74,15 +74,17 @@ 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. +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 [footnote Choose __mpl__ over fusion when doing pure type +calculations. Once the static type calculation is finished, you can instantiate +a fusion sequence (see __conversion__) for the runtime part.]. 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] From b1ebdd60a6d7f750e589e3af0d75a4d0564c90be Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Wed, 17 Sep 2008 15:54:23 +0000 Subject: [PATCH 14/82] Merged revisions 48769 via svnmerge from https://svn.boost.org/svn/boost/trunk ........ r48769 | eric_niebler | 2008-09-13 21:46:32 -0700 (Sat, 13 Sep 2008) | 1 line attempt to work around early instantiation problem on edg-based compilers ........ [SVN r48817] --- .../boost/fusion/view/ext_/segmented_iterator.hpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) mode change 100755 => 100644 include/boost/fusion/view/ext_/segmented_iterator.hpp diff --git a/include/boost/fusion/view/ext_/segmented_iterator.hpp b/include/boost/fusion/view/ext_/segmented_iterator.hpp old mode 100755 new mode 100644 index ad099bed..0a192bdc --- a/include/boost/fusion/view/ext_/segmented_iterator.hpp +++ b/include/boost/fusion/view/ext_/segmented_iterator.hpp @@ -47,6 +47,15 @@ namespace boost { namespace fusion : is_empty {}; + //////////////////////////////////////////////////////////////////////////// + struct not_is_empty_pred + { + template + struct apply + : not_ > + {}; + }; + struct segmented_range_tag; //////////////////////////////////////////////////////////////////////////// @@ -64,7 +73,7 @@ namespace boost { namespace fusion // If this is a range of segments, skip over the empty ones typedef typename mpl::if_< is_segmented - , filter_view > > + , filter_view , Sequence >::type sequence_non_ref_type; @@ -196,7 +205,7 @@ namespace boost { namespace fusion { typedef typename result_of::segments::type segments; typedef typename remove_reference::type sequence; - typedef typename result_of::begin > > >::type begin; + typedef typename result_of::begin >::type begin; typedef segmented_range type; static type call(Sequence &seq) From a046e4399068ab28267848f63e04c01f289829e0 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 10 Oct 2008 14:49:19 +0000 Subject: [PATCH 15/82] Merge from Trunk [SVN r49251] --- .../fusion/container/list/detail/at_impl.hpp | 85 +++++++++++++++---- .../fusion/functional/invocation/invoke.hpp | 28 +++--- .../invocation/invoke_function_object.hpp | 24 +++--- .../invocation/invoke_procedure.hpp | 12 +-- include/boost/fusion/include/at_c.hpp | 12 +++ include/boost/fusion/include/end.hpp | 4 +- .../boost/fusion/sequence/intrinsic/at_c.hpp | 13 +++ ...uple_forward_ctor.hpp => tuple_expand.hpp} | 19 ++++- include/boost/fusion/tuple/tuple.hpp | 38 ++++++--- 9 files changed, 170 insertions(+), 65 deletions(-) create mode 100644 include/boost/fusion/include/at_c.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/at_c.hpp rename include/boost/fusion/tuple/detail/{tuple_forward_ctor.hpp => tuple_expand.hpp} (70%) diff --git a/include/boost/fusion/container/list/detail/at_impl.hpp b/include/boost/fusion/container/list/detail/at_impl.hpp index 54ba6bb8..4dee15dc 100644 --- a/include/boost/fusion/container/list/detail/at_impl.hpp +++ b/include/boost/fusion/container/list/detail/at_impl.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_AT_IMPL_07172005_0726) @@ -15,6 +15,71 @@ namespace boost { namespace fusion { + namespace detail + { + template + struct cons_deref + { + typedef typename Cons::car_type type; + }; + + template + struct cons_advance + { + typedef typename + cons_advance::type::cdr_type + type; + }; + + template + struct cons_advance + { + typedef Cons type; + }; + + template + struct cons_advance + { + typedef typename Cons::cdr_type type; + }; + + template + struct cons_advance + { +#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above + typedef typename Cons::cdr_type::cdr_type type; +#else + typedef typename Cons::cdr_type _a; + typedef typename _a::cdr_type type; +#endif + }; + + template + struct cons_advance + { +#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above + typedef typename Cons::cdr_type::cdr_type::cdr_type type; +#else + typedef typename Cons::cdr_type _a; + typedef typename _a::cdr_type _b; + typedef typename _b::cdr_type type; +#endif + }; + + template + struct cons_advance + { +#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above + typedef typename Cons::cdr_type::cdr_type::cdr_type::cdr_type type; +#else + typedef typename Cons::cdr_type _a; + typedef typename _a::cdr_type _b; + typedef typename _b::cdr_type _c; + typedef typename _c::cdr_type type; +#endif + }; + } + struct cons_tag; namespace extension @@ -26,22 +91,10 @@ namespace boost { namespace fusion struct at_impl { template - struct apply + 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 > - > + typedef detail::cons_deref< + typename detail::cons_advance::type> element; typedef typename diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index bac695cc..f021d923 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-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,21 +71,21 @@ namespace boost { namespace fusion { namespace ft = function_types; - template< - typename Function, class Sequence, + template< + typename Function, class Sequence, int N = result_of::size::value, bool CBI = ft::is_callable_builtin::value, bool RandomAccess = traits::is_random_access::value > struct invoke_impl; - template + template struct invoke_param_types; template struct invoke_data_member; - template + template struct invoke_mem_fn; #define BOOST_PP_FILENAME_1 @@ -116,7 +116,7 @@ namespace boost { namespace fusion invoke_mem_fn, invoke_data_member >, mpl::identity< invoke_nonmember_builtin< - Function,Sequence,1,RandomAccess> > + Function,Sequence,1,RandomAccess> > >::type { }; @@ -139,7 +139,7 @@ namespace boost { namespace fusion public: - typedef typename boost::add_reference::type + typedef typename boost::add_reference::type result_type; static inline result_type call(T C::* f, Sequence & s) @@ -154,10 +154,10 @@ namespace boost { namespace fusion { template struct invoke { - typedef typename detail::invoke_impl< + typedef typename detail::invoke_impl< typename boost::remove_reference::type, Sequence >::result_type type; - }; + }; } template @@ -242,7 +242,7 @@ namespace boost { namespace fusion public: typedef typename boost::result_of< - Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T)) + Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T)) >::type result_type; template @@ -274,7 +274,7 @@ namespace boost { namespace fusion typename seq::I0 i0 = fusion::begin(s); BOOST_PP_REPEAT_FROM_TO(1,N,M,~) - return (that_ptr< typename mpl::front< + return (that_ptr< typename mpl::front< ft::parameter_types >::type >::get(*i0)->*f)(BOOST_PP_ENUM_SHIFTED_PARAMS(N,*i)); } @@ -302,5 +302,5 @@ namespace boost { namespace fusion #undef N #endif // defined(BOOST_PP_IS_ITERATING) -#endif +#endif diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index f0f6e4eb..24c02c2b 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-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). ==============================================================================*/ @@ -51,14 +51,14 @@ namespace boost { namespace fusion namespace detail { - template< - class Function, class Sequence, + template< + class Function, class Sequence, int N = result_of::size::value, - bool RandomAccess = traits::is_random_access::value + bool RandomAccess = traits::is_random_access::value > struct invoke_function_object_impl; - template + template struct invoke_function_object_param_types; #define BOOST_PP_FILENAME_1 \ @@ -72,10 +72,10 @@ namespace boost { namespace fusion { template struct invoke_function_object { - typedef typename detail::invoke_function_object_impl< + typedef typename detail::invoke_function_object_impl< typename boost::remove_reference::type, Sequence >::result_type type; - }; + }; } template @@ -114,7 +114,7 @@ namespace boost { namespace fusion typedef typename boost::result_of< #define M(z,j,data) \ - typename result_of::at_c::type + typename result_of::at_c::type Function (BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M @@ -154,7 +154,7 @@ namespace boost { namespace fusion } }; - template + template struct invoke_function_object_param_types { #if N > 0 @@ -173,5 +173,5 @@ namespace boost { namespace fusion #undef N #endif // defined(BOOST_PP_IS_ITERATING) -#endif +#endif diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp index 31822ade..502b38aa 100644 --- a/include/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-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). ==============================================================================*/ @@ -58,8 +58,8 @@ namespace boost { namespace fusion { namespace ft = function_types; - template< - typename Function, class Sequence, + template< + typename Function, class Sequence, int N = result_of::size::value, bool MFP = ft::is_member_function_pointer::value, bool RandomAccess = traits::is_random_access::value @@ -167,5 +167,5 @@ namespace boost { namespace fusion #undef N #endif // defined(BOOST_PP_IS_ITERATING) -#endif +#endif diff --git a/include/boost/fusion/include/at_c.hpp b/include/boost/fusion/include/at_c.hpp new file mode 100644 index 00000000..a2403d16 --- /dev/null +++ b/include/boost/fusion/include/at_c.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_AT_C) +#define FUSION_INCLUDE_AT_C + +#include + +#endif diff --git a/include/boost/fusion/include/end.hpp b/include/boost/fusion/include/end.hpp index 60be1a98..61d65de0 100644 --- a/include/boost/fusion/include/end.hpp +++ b/include/boost/fusion/include/end.hpp @@ -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) ==============================================================================*/ -#if !defined(FUSION_INCLUDE_BEGIN) -#define FUSION_INCLUDE_BEGIN +#if !defined(FUSION_INCLUDE_END) +#define FUSION_INCLUDE_END #include diff --git a/include/boost/fusion/sequence/intrinsic/at_c.hpp b/include/boost/fusion/sequence/intrinsic/at_c.hpp new file mode 100644 index 00000000..4dc53ae0 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/at_c.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + 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_AT_C_08252008_0308) +#define FUSION_AT_C_08252008_0308 + +#include + +#endif + diff --git a/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp b/include/boost/fusion/tuple/detail/tuple_expand.hpp similarity index 70% rename from include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp rename to include/boost/fusion/tuple/detail/tuple_expand.hpp index 2ff20a2a..806515f9 100644 --- a/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp +++ b/include/boost/fusion/tuple/detail/tuple_expand.hpp @@ -1,19 +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) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_TUPLE_FORWARD_CTOR_10032005_0815) -#define FUSION_TUPLE_FORWARD_CTOR_10032005_0815 +#if !defined(FUSION_TUPLE_EXPAND_10032005_0815) +#define FUSION_TUPLE_EXPAND_10032005_0815 #include #include #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() @@ -34,6 +34,17 @@ N, typename detail::call_param::type _)) : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} + template + tuple(tuple const& rhs) + : base_type(rhs) {} + + template + tuple& operator=(tuple const& rhs) + { + base_type::operator=(rhs); + return *this; + } + #undef N #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp index d9860323..a97cadeb 100644 --- a/include/boost/fusion/tuple/tuple.hpp +++ b/include/boost/fusion/tuple/tuple.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2005 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_TUPLE_10032005_0810) @@ -16,6 +16,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -23,35 +24,50 @@ namespace boost { namespace fusion struct tuple : vector { typedef vector< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> + BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> base_type; tuple() : base_type() {} - - template - tuple(Sequence const& rhs) + + tuple(tuple const& rhs) : base_type(rhs) {} - #include + template + tuple(std::pair const& rhs) + : base_type(rhs) {} + + #include template - tuple& - operator=(T const& rhs) + tuple& operator=(T const& rhs) + { + base_type::operator=(rhs); + return *this; + } + + tuple& operator=(tuple const& rhs) + { + base_type::operator=(rhs); + return *this; + } + + template + tuple& operator=(std::pair const& rhs) { base_type::operator=(rhs); return *this; } }; - template + template struct tuple_size : result_of::size {}; - template + template struct tuple_element : result_of::value_at_c {}; template - inline typename + inline typename lazy_disable_if< is_const , result_of::at_c From d004046aa5e14e84e55ede0ea706de520ea30318 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 10 Oct 2008 15:05:47 +0000 Subject: [PATCH 16/82] Merge from Trunk [SVN r49252] --- doc/html/fusion/adapted.html | 2 +- doc/html/fusion/adapted/adapt_assoc.html | 10 ++-- doc/html/fusion/adapted/adapt_struct.html | 10 ++-- doc/html/fusion/adapted/boost__array.html | 8 +-- doc/html/fusion/adapted/boost__tuple.html | 8 +-- doc/html/fusion/adapted/mpl_sequence.html | 8 +-- doc/html/fusion/adapted/std__pair.html | 8 +-- doc/html/fusion/algorithm.html | 6 +- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 ++--- .../algorithm/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/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 ++--- .../fusion/algorithm/query/functions/any.html | 14 ++--- .../algorithm/query/functions/count.html | 14 ++--- .../algorithm/query/functions/count_if.html | 14 ++--- .../algorithm/query/functions/find.html | 14 ++--- .../algorithm/query/functions/find_if.html | 12 ++-- .../algorithm/query/functions/none.html | 14 ++--- .../algorithm/query/metafunctions/all.html | 12 ++-- .../algorithm/query/metafunctions/any.html | 12 ++-- .../algorithm/query/metafunctions/count.html | 12 ++-- .../query/metafunctions/count_if.html | 12 ++-- .../algorithm/query/metafunctions/find.html | 12 ++-- .../query/metafunctions/find_if.html | 12 ++-- .../algorithm/query/metafunctions/none.html | 12 ++-- doc/html/fusion/algorithm/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 | 10 ++-- .../metafunctions/push_back.html | 10 ++-- .../metafunctions/push_front.html | 10 ++-- .../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 | 18 +++--- .../transformation/metafunctions/zip.html | 10 ++-- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 ++--- doc/html/fusion/container/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/container/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 ++--- .../generation/functions/map_tie.html | 12 ++-- .../container/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/map_tie.html | 12 ++-- .../generation/metafunctions/vector_tie.html | 12 ++-- doc/html/fusion/container/list.html | 14 ++--- doc/html/fusion/container/map.html | 14 ++--- doc/html/fusion/container/set.html | 14 ++--- doc/html/fusion/container/vector.html | 14 ++--- doc/html/fusion/extension/ext_full.html | 16 +++--- .../fusion/extension/iterator_facade.html | 14 ++--- .../fusion/extension/sequence_facade.html | 14 ++--- doc/html/fusion/functional.html | 6 +- .../fusion/functional/adapters/fused.html | 14 ++--- .../adapters/fused_function_object.html | 14 ++--- .../functional/adapters/fused_procedure.html | 14 ++--- .../functional/adapters/unfused_generic.html | 14 ++--- .../adapters/unfused_lvalue_args.html | 14 ++--- .../adapters/unfused_rvalue_args.html | 14 ++--- .../functional/adapters/unfused_typed.html | 14 ++--- .../fusion/functional/concepts/callable.html | 6 +- .../functional/concepts/def_callable.html | 10 ++-- doc/html/fusion/functional/concepts/poly.html | 10 ++-- .../functional/concepts/reg_callable.html | 10 ++-- .../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 | 12 ++-- .../invocation/functions/invoke_fobj.html | 12 ++-- .../invocation/functions/invoke_proc.html | 12 ++-- .../invocation/metafunctions/invoke.html | 6 +- .../invocation/metafunctions/invoke_fobj.html | 6 +- .../invocation/metafunctions/invoke_proc.html | 6 +- doc/html/fusion/introduction.html | 4 +- doc/html/fusion/iterator.html | 2 +- .../concepts/bidirectional_iterator.html | 14 ++--- .../iterator/concepts/forward_iterator.html | 12 ++-- .../concepts/random_access_iterator.html | 10 ++-- .../fusion/iterator/functions/advance.html | 12 ++-- .../fusion/iterator/functions/advance_c.html | 12 ++-- doc/html/fusion/iterator/functions/deref.html | 12 ++-- .../fusion/iterator/functions/distance.html | 12 ++-- doc/html/fusion/iterator/functions/next.html | 12 ++-- doc/html/fusion/iterator/functions/prior.html | 12 ++-- .../iterator/metafunctions/advance.html | 12 ++-- .../iterator/metafunctions/advance_c.html | 12 ++-- .../fusion/iterator/metafunctions/deref.html | 12 ++-- .../iterator/metafunctions/distance.html | 12 ++-- .../iterator/metafunctions/equal_to.html | 12 ++-- .../fusion/iterator/metafunctions/next.html | 12 ++-- .../fusion/iterator/metafunctions/prior.html | 12 ++-- .../iterator/metafunctions/value_of.html | 12 ++-- .../iterator/operator/operator_equality.html | 10 ++-- .../operator/operator_inequality.html | 10 ++-- .../operator/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/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 +- .../concepts/associative_sequence.html | 10 ++-- .../concepts/bidirectional_sequence.html | 12 ++-- .../sequence/concepts/forward_sequence.html | 12 ++-- .../concepts/random_access_sequence.html | 12 ++-- doc/html/fusion/sequence/intrinsic.html | 6 +- .../sequence/intrinsic/functions/at.html | 12 ++-- .../sequence/intrinsic/functions/at_c.html | 12 ++-- .../sequence/intrinsic/functions/at_key.html | 12 ++-- .../sequence/intrinsic/functions/back.html | 12 ++-- .../sequence/intrinsic/functions/begin.html | 12 ++-- .../sequence/intrinsic/functions/empty.html | 12 ++-- .../sequence/intrinsic/functions/end.html | 12 ++-- .../sequence/intrinsic/functions/front.html | 12 ++-- .../sequence/intrinsic/functions/has_key.html | 12 ++-- .../sequence/intrinsic/functions/size.html | 12 ++-- .../sequence/intrinsic/functions/swap.html | 10 ++-- .../sequence/intrinsic/metafunctions/at.html | 14 ++--- .../intrinsic/metafunctions/at_c.html | 14 ++--- .../intrinsic/metafunctions/at_key.html | 14 ++--- .../intrinsic/metafunctions/back.html | 10 ++-- .../intrinsic/metafunctions/begin.html | 10 ++-- .../intrinsic/metafunctions/empty.html | 10 ++-- .../sequence/intrinsic/metafunctions/end.html | 10 ++-- .../intrinsic/metafunctions/front.html | 10 ++-- .../intrinsic/metafunctions/has_key.html | 10 ++-- .../intrinsic/metafunctions/size.html | 10 ++-- .../intrinsic/metafunctions/swap.html | 8 +-- .../intrinsic/metafunctions/value_at.html | 10 ++-- .../intrinsic/metafunctions/value_at_c.html | 10 ++-- .../intrinsic/metafunctions/value_at_key.html | 10 ++-- .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 12 ++-- .../operator/comparison/greater_than.html | 10 ++-- .../comparison/greater_than_equal.html | 10 ++-- .../operator/comparison/less_than.html | 10 ++-- .../operator/comparison/less_than_equal.html | 10 ++-- .../operator/comparison/not_equal.html | 10 ++-- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 ++-- .../fusion/sequence/operator/i_o/out.html | 12 ++-- doc/html/fusion/support/category_of.html | 12 ++-- doc/html/fusion/support/deduce.html | 10 ++-- doc/html/fusion/support/deduce_sequence.html | 10 ++-- 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/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 +- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 ++--- doc/html/fusion/view/iterator_range.html | 14 ++--- doc/html/fusion/view/joint_view.html | 14 ++--- doc/html/fusion/view/reverse_view.html | 12 ++-- doc/html/fusion/view/single_view.html | 12 ++-- doc/html/fusion/view/transform_view.html | 12 ++-- doc/html/fusion/view/zip_view.html | 14 ++--- doc/html/index.html | 4 +- test/Jamfile | 1 + test/functional/invoke.cpp | 20 +++---- test/functional/invoke_function_object.cpp | 10 ++-- test/functional/invoke_procedure.cpp | 10 ++-- test/sequence/construction.hpp | 4 +- test/sequence/tr1_tuple_auto_conv.cpp | 56 +++++++++++++++++++ test/sequence/tuple_construction.cpp | 3 +- 233 files changed, 1338 insertions(+), 1278 deletions(-) create mode 100644 test/sequence/tr1_tuple_auto_conv.cpp diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index b6b76769..8a1358ae 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -46,7 +46,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

    diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html
    index be8d2e5c..2232d58c 100644
    --- a/doc/html/fusion/adapted/adapt_assoc.html
    +++ b/doc/html/fusion/adapted/adapt_assoc.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Synopsis

    @@ -50,7 +50,7 @@
         )
     

    - + Semantics

    @@ -70,7 +70,7 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    @@ -78,7 +78,7 @@
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 54551be7..49146958 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Synopsis

    @@ -48,7 +48,7 @@
         )
     

    - + Semantics

    @@ -65,7 +65,7 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    @@ -73,7 +73,7 @@
     #include <boost/fusion/include/adapt_struct.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index 6860532f..aa011b30 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Header

    @@ -41,14 +41,14 @@
     #include <boost/fusion/include/array.hpp>
     

    - + Model of

    - + Example

    @@ -61,7 +61,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index d0aa4e69..394ece3e 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -33,7 +33,7 @@ Sequence.

    - + Header

    @@ -41,13 +41,13 @@
     #include <boost/fusion/include/boost_tuple.hpp>
     

    - + Model of

    - + Example

    @@ -56,7 +56,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     

    - + See also

    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 0b0c30ce..6932d063 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -31,7 +31,7 @@ sequences fully conforming fusion sequences.

    - + Header

    @@ -39,7 +39,7 @@
     #include <boost/fusion/include/mpl.hpp>
     

    - + Model of

      @@ -63,7 +63,7 @@

    - + Example

    @@ -77,7 +77,7 @@
     std::cout << at_c<1>(v) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 0ca73946..53e5cbd6 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,7 +33,7 @@ Access Sequence.

    - + Header

    @@ -41,14 +41,14 @@
     #include <boost/fusion/include/std_pair.hpp>
     

    - + Model of

    - + Example

    @@ -58,7 +58,7 @@
     std::cout << p << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 6705af8a..cf44e1d8 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -43,7 +43,7 @@

    - + Lazy Evaluation

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

    - + Sequence Extension

    @@ -89,7 +89,7 @@ functions to convert back to the original sequence type.

    - + Header

    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index b3584586..5dc0a880 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -34,7 +34,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header

    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    index ab8a4229..afa5797f 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ and the previous state.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

    - + Complexity

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

    - + Header
    @@ -167,7 +167,7 @@
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index 2a85276b..5602ce26 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ and the previous state.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ where e1 ...eN are the elements of seq.

    - + Complexity

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

    - + Header
    @@ -167,7 +167,7 @@
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index b91e5dc6..6e1f5acb 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/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.35. Parameters

    +

    Table 1.35. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ in seq.

    - + Complexity

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

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    index 68510792..10544a1a 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of accumulate.

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

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index ad5c88c7..52f2f29f 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of fold.

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

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index e79753ea..f20f2608 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/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.38. Parameters

    +

    Table 1.38. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index ef74a1ed..ce86f7dc 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -33,7 +33,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header

    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
    index 675563bb..f390c520 100644
    --- a/doc/html/fusion/algorithm/query/functions/all.html
    +++ b/doc/html/fusion/algorithm/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.40. Parameters

    +

    Table 1.40. Parameters

    @@ -116,7 +116,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ element e in seq.

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index ab57aee9..6fa8e22e 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/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.39. Parameters

    +

    Table 1.39. Parameters

    @@ -116,7 +116,7 @@
    - + Expression semantics
    @@ -133,14 +133,14 @@ element e in seq.

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index b580fc36..768ad2c9 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/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.44. Parameters

    +

    Table 1.44. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ t in seq.

    - + Complexity

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

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index 438c6b36..9324da53 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/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.45. Parameters

    +

    Table 1.45. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -128,14 +128,14 @@ in seq where f evaluates to true.

    - + Complexity

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

    - + Header
    @@ -143,7 +143,7 @@
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index 93439f5b..61426ca5 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/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.42. Parameters

    +

    Table 1.42. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index 06d183e8..373bdb84 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/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.43. Parameters

    +

    Table 1.43. Parameters

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

    - + Complexity

    @@ -147,7 +147,7 @@ /algorithm/query/find_if.hpp>

    - + Example
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index a8b1ff61..b27f3216 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/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.41. Parameters

    +

    Table 1.41. Parameters

    @@ -116,7 +116,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

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

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
    index 6c97ff51..38f893ae 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of all.

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

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index 5bd0c544..7f1f5dfb 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of any.

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

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index e69da6ce..ba0a6c9d 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/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.51. Parameters

    +

    Table 1.51. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index f4f8a065..ac63d902 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/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.52. Parameters

    +

    Table 1.52. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index eeaaae19..9292780b 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/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.49. Parameters

    +

    Table 1.49. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ if there is no such element.

    - + Complexity

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

    - + Header
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index b5460415..d5b827c6 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/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.50. Parameters

    +

    Table 1.50. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -132,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/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index ef3a129d..e4550802 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of none.

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

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 6635942c..7bc9e08f 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -46,7 +46,7 @@
             

    - + Header

    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index bf7a9ef2..756245e2 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/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.62. Parameters

    +

    Table 1.62. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index b8fae8b4..c20a213c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/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.63. Parameters

    +

    Table 1.63. Parameters

    @@ -141,7 +141,7 @@
    - + Expression Semantics
    @@ -172,14 +172,14 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -187,7 +187,7 @@
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index fb175e6a..6ff008a2 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/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.64. Parameters

    +

    Table 1.64. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -148,7 +148,7 @@
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index 9853c852..dd4aed39 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/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.53. Parameters

    +

    Table 1.53. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index 7cc27e70..65de295c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/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.54. Parameters

    +

    Table 1.54. Parameters

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -132,14 +132,14 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -147,7 +147,7 @@
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index 4c760f78..8dcfb8e9 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/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.65. Parameters

    +

    Table 1.65. Parameters

    @@ -130,7 +130,7 @@
    - + Expression Semantics
    @@ -150,14 +150,14 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -165,7 +165,7 @@
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index fad935dd..3b36d880 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/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.66. Parameters

    +

    Table 1.66. Parameters

    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -153,14 +153,14 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -168,7 +168,7 @@
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 23059311..9bcb5c97 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/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.67. Parameters

    +

    Table 1.67. Parameters

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -145,7 +145,7 @@
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index 93d6c7db..91dcfc3c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/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.69. Parameters

    +

    Table 1.69. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -108,14 +108,14 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 250d2106..70cc977c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/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.70. Parameters

    +

    Table 1.70. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -108,14 +108,14 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index c7eb51b8..01209484 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/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.71. Parameters

    +

    Table 1.71. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ 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
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index 5efd05aa..e152ca6c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/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.72. Parameters

    +

    Table 1.72. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -145,7 +145,7 @@
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index bc162419..5e60dd9b 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/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.59. Parameters

    +

    Table 1.59. Parameters

    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -129,14 +129,14 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index 551b4114..de7c3010 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/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.60. Parameters

    +

    Table 1.60. Parameters

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -146,7 +146,7 @@
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index a81433e6..23001b52 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/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.57. Parameters

    +

    Table 1.57. Parameters

    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -166,7 +166,7 @@
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index 4a076daa..45044eab 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/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.58. Parameters

    +

    Table 1.58. Parameters

    @@ -131,7 +131,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -166,7 +166,7 @@
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index 3bb81b5a..11bf809c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/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.61. Parameters

    +

    Table 1.61. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -107,14 +107,14 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 7549429a..135e5489 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -118,7 +118,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ within seq.

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

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -263,7 +263,7 @@
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index faf42aa8..199ab464 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/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.68. Parameters

    +

    Table 1.68. Parameters

    @@ -94,7 +94,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -132,7 +132,7 @@
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index 2025ac99..8fb27b3c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -107,14 +107,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index 87276b98..c32a4b43 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -30,11 +30,11 @@
                 and range delimiting iterator types.
               

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

    Table 1.83. Parameters

    +

    Table 1.83. Parameters

    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -164,14 +164,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index ef1aa29d..85a718b6 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.84. Parameters

    +

    Table 1.84. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,14 +131,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index 8c3e072c..ba16d426 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 6d935809..602f8fa4 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/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.74. Parameter

    +

    Table 1.74. Parameter

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index e4e955de..5bce505a 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/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.85. Parameters

    +

    Table 1.85. Parameters

    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -152,14 +152,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index 644427b8..236e8355 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/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.86. Parameters

    +

    Table 1.86. Parameters

    @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -154,14 +154,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index c9c48d30..0c8f3fb3 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/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/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 005d2114..48bc70d6 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -111,14 +111,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 1903d17c..a6d0a6ce 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -111,7 +111,7 @@ except the first element.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 893f59a3..0f6c814d 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/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.89. Parameters

    +

    Table 1.89. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ added to the end.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index 6901f157..1809423b 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/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.90. Parameters

    +

    Table 1.90. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ added to the beginning.

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index d6479d10..667c78ce 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -26,7 +26,7 @@

    - + Description

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

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

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 7d875fb1..d5959258 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/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.80. Parameters

    +

    Table 1.80. Parameters

    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 8bad8199..e30d64c8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/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.77. Parameters

    +

    Table 1.77. Parameters

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -130,14 +130,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index 3c7410e8..5f1d7401 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/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.78. Parameters

    +

    Table 1.78. Parameters

    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -151,14 +151,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index 62837035..6937de0e 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

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

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -110,14 +110,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index 196b8bd8..04477d12 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -118,7 +118,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ within seq.

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

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -248,14 +248,14 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    @@ -263,7 +263,7 @@
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 375fad85..840c9039 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/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/container.html b/doc/html/fusion/container.html
    index 54ab1ae2..ad50b704 100644
    --- a/doc/html/fusion/container.html
    +++ b/doc/html/fusion/container.html
    @@ -49,7 +49,7 @@
           These containers are more or less counterparts of those in STL.
         

    - + Header

    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index 8c84b924..d257fb55 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -50,7 +50,7 @@
     #include <boost/fusion/include/cons.hpp>
     

    - + Synopsis

    @@ -58,7 +58,7 @@
     struct cons;
     

    - + Template parameters

    @@ -121,7 +121,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index 4fab9f77..31f53102 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -34,7 +34,7 @@
             types using one of these conversion functions.
           

    - + Header

    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
    index ae3ce029..0c763d69 100644
    --- a/doc/html/fusion/container/conversion/functions/as_list.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ seq, to a list.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index c429f81c..3748d16e 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -111,7 +111,7 @@ There may be no duplicate fusion::pair key types.

    - + Header
    @@ -119,7 +119,7 @@
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index 4d9630c3..5df2befb 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -110,7 +110,7 @@ key types.

    - + Header
    @@ -118,7 +118,7 @@
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index de568709..38c553a9 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ seq, to a vector.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    index 5dec3fc8..da828883 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -102,7 +102,7 @@ Sequence, to a list.

    - + Header
    @@ -110,7 +110,7 @@
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index 593c322b..b109321d 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -107,7 +107,7 @@ There may be no duplicate fusion::pair key types.

    - + Header
    @@ -115,7 +115,7 @@
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index 2969295d..b0813dc8 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ key types.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index 5b821dc4..54eb2fa9 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/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
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -102,7 +102,7 @@ Sequence, to a vector.

    - + Header
    @@ -110,7 +110,7 @@
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index eaaf0b44..81cf6840 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -33,7 +33,7 @@
             These are the functions that you can use to generate various forms of Container from elemental values.
           

    - + Header

    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
    index bfbc7546..cb73d6ce 100644
    --- a/doc/html/fusion/container/generation/functions/list_tie.html
    +++ b/doc/html/fusion/container/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
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index e602212d..2462133c 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

    - + Synopsis
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -128,7 +128,7 @@ (tail).

    - + Header
    @@ -136,14 +136,14 @@
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index fb1d5e38..49ca486d 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -54,7 +54,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -101,7 +101,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    @@ -123,14 +123,14 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index d250801b..8b202e40 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ from one or more key/data 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
    @@ -125,7 +125,7 @@
    - + Expression Semantics
    @@ -146,7 +146,7 @@ key types.

    - + Header
    @@ -154,7 +154,7 @@
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    @@ -163,7 +163,7 @@
       , make_pair<double>("Men"))
     
    - + See also
    @@ -173,7 +173,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/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 287038e8..833359b4 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -45,7 +45,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 @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -102,7 +102,7 @@
    - + Expression Semantics
    @@ -120,7 +120,7 @@ key types.

    - + Header
    @@ -128,14 +128,14 @@
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also
    @@ -144,7 +144,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/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index f2dfe63d..c51e7fa5 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -26,7 +26,7 @@
    - + Description

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

    - + Synopsis
    @@ -54,7 +54,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -101,7 +101,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    @@ -123,14 +123,14 @@
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 72571e0d..87173dfa 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -122,7 +122,7 @@
    - + Expression Semantics
    @@ -138,7 +138,7 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    @@ -146,7 +146,7 @@
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 08022439..548bb727 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -49,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]
                 .
               

    @@ -67,7 +67,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -82,7 +82,7 @@



    -

    [11] +

    [11] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 372dcb14..0bd4d472 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/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
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    index 9cf228c2..9ee4acfc 100644
    --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,7 +114,7 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index 9161b76e..7865c497 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/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
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ (tail).

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index 217f1103..43db74f4 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index 92eb4427..d4d83836 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/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
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,7 +143,7 @@ key types.

    - + Header
    @@ -151,14 +151,14 @@
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also
    @@ -167,7 +167,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/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 2e2fc32f..85ffe4e6 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/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
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -120,7 +120,7 @@ key types.

    - + Header
    @@ -128,7 +128,7 @@
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    @@ -136,7 +136,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/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index a8085b13..a03c568b 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -115,7 +115,7 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    @@ -123,7 +123,7 @@
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index 252b1033..b41c1ba8 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -120,7 +120,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index 54518d44..01797d8f 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/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
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,7 +114,7 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index 27ae887c..ec9a83e1 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/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

    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     

    - + Synopsis

    @@ -79,7 +79,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     

    - + Template parameters

    @@ -124,7 +124,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index 281e5a89..ff01a0c8 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -50,7 +50,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     

    - + Synopsis

    @@ -81,7 +81,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     

    - + Template parameters

    @@ -126,7 +126,7 @@

    - + Model of

      @@ -159,7 +159,7 @@

    - + Expression Semantics

    @@ -246,7 +246,7 @@

    - + Example

    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index e07ebd46..61fba0c4 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     

    - + Synopsis

    @@ -80,7 +80,7 @@
     #define FUSION_MAX_SET_SIZE 20
     

    - + Template parameters

    @@ -125,7 +125,7 @@

    - + Model of

      @@ -158,7 +158,7 @@

    - + Expression Semantics

    @@ -245,7 +245,7 @@

    - + Example

    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index 77fc6c3b..b4ab929d 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

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

    - + Header

    @@ -61,7 +61,7 @@
     #include <boost/fusion/include/vector50.hpp>
     

    - + Synopsis

    @@ -122,7 +122,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Template parameters

    @@ -167,7 +167,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index 892225d1..879138c3 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -48,7 +48,7 @@
             
     

    - + Our example

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

    - + Enabling Tag Dispatching

    @@ -124,7 +124,7 @@ #include <boost/fusion/include/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -187,7 +187,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features

    @@ -331,7 +331,7 @@

    - + Implementing the remaining iterator functionality

    @@ -386,7 +386,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    @@ -445,7 +445,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative container

    @@ -513,7 +513,7 @@ of is_associative_impl.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index bf879e9a..ce1c74f7 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -43,7 +43,7 @@
     struct iterator_facade;
     

    - + Usage

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

    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

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

    Table 1.94. Key Expressions

    +

    Table 1.94. Key Expressions

    @@ -365,7 +365,7 @@

    - + Header

    @@ -373,7 +373,7 @@
     #include <boost/fusion/include/iterator_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index b94329ea..23a08090 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -26,7 +26,7 @@

    - + Description

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

    - + Synopsis

    @@ -43,7 +43,7 @@
     struct sequence_facade;
     

    - + Usage

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

    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

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

    Table 1.92. Key Expressions

    +

    Table 1.92. Key Expressions

    @@ -243,7 +243,7 @@

    - + Include

    @@ -251,7 +251,7 @@
     #include <boost/fusion/include/sequence_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index d86c2f00..d5ad9ee6 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -65,7 +65,7 @@ /functional.hpp>

    - + Fused and unfused forms

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

    - + Calling functions and function objects

    @@ -130,7 +130,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 4746e4ee..53e548d3 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -26,7 +26,7 @@
    - + Description

    @@ -59,7 +59,7 @@ /functional/adapter/fused.hpp>

    - + Synopsis
    @@ -67,7 +67,7 @@
     class fused;
     
    - + Template parameters
    @@ -114,7 +114,7 @@
    - + Model of
      @@ -150,7 +150,7 @@
    - + Expression Semantics
    @@ -214,7 +214,7 @@
    - + Example
    @@ -222,7 +222,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 2c4f9bb5..40b73855 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

      @@ -49,7 +49,7 @@ /functional/adapter/fused_function_object.hpp>

      - + Synopsis
      @@ -57,7 +57,7 @@
       class fused_function_object;
       
      - + Template parameters
      @@ -104,7 +104,7 @@
    - + Model of
    @@ -141,7 +141,7 @@
    - + Expression Semantics
    @@ -205,7 +205,7 @@
    - + Example
    @@ -243,7 +243,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 75765279..11f3c6d9 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -26,7 +26,7 @@
    - + Description

    @@ -66,7 +66,7 @@ /functional/adapter/fused_procedure.hpp>

    - + Synopsis
    @@ -74,7 +74,7 @@
     class fused_procedure;
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    @@ -156,7 +156,7 @@
    - + Expression Semantics
    @@ -220,7 +220,7 @@
    - + Example
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 1026f721..b632d7b1 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -26,7 +26,7 @@
    - + Description

    @@ -58,7 +58,7 @@ /functional/adapter/unfused_generic.hpp>

    - + Synopsis
    @@ -66,7 +66,7 @@
     class unfused_generic;
     
    - + Template parameters
    @@ -113,7 +113,7 @@
    - + Model of
    @@ -154,7 +154,7 @@
    - + Expression Semantics
    @@ -218,7 +218,7 @@
    - + Example
    @@ -269,7 +269,7 @@
     }
     
    - + 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 5d036e4d..05e7deec 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

    @@ -51,7 +51,7 @@ /functional/adapter/unfused_lvalue_args.hpp>

    - + Synopsis
    @@ -59,7 +59,7 @@
     class unfused_lvalue_args;
     
    - + Template parameters
    @@ -106,7 +106,7 @@
    - + Model of
    @@ -147,7 +147,7 @@
    - + Expression Semantics
    @@ -211,7 +211,7 @@
    - + Example
    @@ -239,7 +239,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 6bbaf79e..19d9a1d1 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

    @@ -51,7 +51,7 @@ /functional/adapter/unfused_rvalue_args.hpp>

    - + Synopsis
    @@ -59,7 +59,7 @@
     class unfused_rvalue_args;
     
    - + Template parameters
    @@ -106,7 +106,7 @@
    - + Model of
    @@ -147,7 +147,7 @@
    - + Expression Semantics
    @@ -211,7 +211,7 @@
    - + Example
    @@ -237,7 +237,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index ea039b23..41608679 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -26,7 +26,7 @@
    - + Description

    @@ -65,7 +65,7 @@ /functional/adapter/unfused_typed.hpp>

    - + Synopsis
    @@ -73,7 +73,7 @@
     class unfused_typed;
     
    - + Template parameters
    @@ -138,7 +138,7 @@
    - + Model of
    @@ -184,7 +184,7 @@
    - + Expression Semantics
    @@ -250,7 +250,7 @@
    - + Example
    @@ -319,7 +319,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index d4179faa..3126568c 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@
      - + Description

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

      - + Models
        @@ -51,7 +51,7 @@
      - + Examples
      diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
      index e93da651..47e13671 100644
      --- a/doc/html/fusion/functional/concepts/def_callable.html
      +++ b/doc/html/fusion/functional/concepts/def_callable.html
      @@ -31,7 +31,7 @@
               Callable Object"> Deferred
               Callable Object
    - + Description

    @@ -40,7 +40,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -81,7 +81,7 @@
    - + Expression requirements
    @@ -119,7 +119,7 @@
    - + Models
      @@ -133,7 +133,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index 8c3def6a..e8329338 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 @@ Callable Object type.

    - + Refinement of
    @@ -83,7 +83,7 @@
    - + Expression requirements
    @@ -132,7 +132,7 @@
    - + Models
      @@ -147,7 +147,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index 333f1f4e..2728c32d 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -30,7 +30,7 @@
             Object"> Regular Callable
             Object
     
    - + Description

    @@ -39,7 +39,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -69,7 +69,7 @@
    - + Expression requirements
    @@ -116,7 +116,7 @@
    - + Models
      @@ -128,7 +128,7 @@
    - + Examples
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
    index 7341d54e..c210e657 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,7 +111,7 @@ Semantics: Returns a fused adapter for f.

    - + Header
    @@ -119,7 +119,7 @@
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    @@ -135,7 +135,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 5c77ffe2..04de9c87 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,7 +114,7 @@ for f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    @@ -151,7 +151,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 ab22e58c..9d554eb0 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,7 +113,7 @@ f.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    @@ -131,7 +131,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 a63b9702..9ad4aa02 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,7 +114,7 @@ f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - + Example
    @@ -158,7 +158,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 adb36776..4f96799e 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,7 +114,7 @@ for f.

    - + Header
    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - + Example
    @@ -149,7 +149,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 bfb35340..632a5f71 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,7 +113,7 @@ for f.

    - + Header
    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - + Example
    @@ -147,7 +147,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 768fcaa7..34b602b1 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,7 +38,7 @@ make_fused">make_fused.

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    @@ -60,7 +60,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 823d45d9..cc35e263 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,7 +39,7 @@ make_fused_function_object">make_fused_function_object.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 c7400505..6a29a24e 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,7 +39,7 @@ make_fused_procedure">make_fused_procedure.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 f328f91f..0dc1670f 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,7 +39,7 @@ make_unfused_generic">make_unfused_generic.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_unfused_generic.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 f6bc6b28..cfede75a 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,7 +39,7 @@ make_unfused_lvalue_args">make_unfused_lvalue_args.

    - + Header
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/make_unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -61,7 +61,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 a5a46e88..5fd2b9d8 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,7 +38,7 @@ make_unfused_rvalue_args">make_unfused_rvalue_args.

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/include/make_unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index f1964b48..b8b6c449 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@
    - + Description

    @@ -47,7 +47,7 @@ and boost::shared_ptr).

    - + Synopsis
    @@ -66,7 +66,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -154,7 +154,7 @@ /functional/invocation/invoke.hpp>

    - + Example
    @@ -162,7 +162,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 20f04f8e..a509ae35 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

    @@ -43,7 +43,7 @@ and/or to control the const qualification of a function object.

    - + Synopsis
    @@ -64,7 +64,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -152,7 +152,7 @@ /functional/invocation/invoke_function_object.hpp>

    - + Example
    @@ -179,7 +179,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 156defe6..f969edf9 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

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

    - + Synopsis
    @@ -75,7 +75,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -142,7 +142,7 @@
    - + Expression Semantics
    @@ -161,7 +161,7 @@ /functional/invocation/invoke_procedure.hpp>

    - + Example
    @@ -171,7 +171,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 7210b07a..06407c14 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@
    - + Description

    Returns the result type of invoke.

    - + Synopsis
    @@ -51,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 5a1915a9..f8b3b9bc 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -30,7 +30,7 @@ invoke_function_object"> invoke_function_object
    - + Description

    @@ -38,7 +38,7 @@ invoke_function_object">invoke_function_object.

    - + Synopsis
    @@ -55,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 70e7bf59..454969e5 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
    - + Description

    @@ -38,7 +38,7 @@ invoke_procedure">invoke_procedure.

    - + Synopsis
    @@ -55,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index c5cdeda0..6587ef11 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -116,7 +116,7 @@ sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you wish to work solely on types - [1] + [1] . In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence @@ -131,7 +131,7 @@



    -

    [1] +

    [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index b490ea5d..5aac9cbb 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -74,7 +74,7 @@ Sequence.

    - + Header

    diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html
    index 1e7d3ee8..88c318b3 100644
    --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html
    +++ b/doc/html/fusion/iterator/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
    @@ -182,7 +182,7 @@
    - + Meta Expressions
    @@ -217,7 +217,7 @@
    - + Expression Semantics
    @@ -258,7 +258,7 @@
    - + Invariants

    @@ -275,7 +275,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 2928d7e3..54fa0077 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Expression requirements
    @@ -244,7 +244,7 @@
    - + Meta Expressions
    @@ -355,7 +355,7 @@
    - + Expression Semantics
    @@ -481,7 +481,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 18eeb7c7..6bcb5824 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/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
    @@ -185,7 +185,7 @@
    - + Meta Expressions
    @@ -248,7 +248,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index 679cfe6f..f8beff4d 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/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

      @@ -110,7 +110,7 @@
      - + Expression Semantics
      @@ -131,7 +131,7 @@ may be negative.

      - + Header
      @@ -139,7 +139,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
      index 6385f43b..80782f3f 100644
      --- a/doc/html/fusion/iterator/functions/advance_c.html
      +++ b/doc/html/fusion/iterator/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

      @@ -109,7 +109,7 @@
      - + Expression Semantics
      @@ -130,7 +130,7 @@ may be negative.

      - + Header
      @@ -138,7 +138,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
      index 1eb8ebfe..6e980ce1 100644
      --- a/doc/html/fusion/iterator/functions/deref.html
      +++ b/doc/html/fusion/iterator/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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -104,7 +104,7 @@ i.

      - + Header
      @@ -112,7 +112,7 @@
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
      index d3803191..eb820046 100644
      --- a/doc/html/fusion/iterator/functions/distance.html
      +++ b/doc/html/fusion/iterator/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

      @@ -90,7 +90,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ iterators i and j.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
      index 877b86f4..2ff7f62f 100644
      --- a/doc/html/fusion/iterator/functions/next.html
      +++ b/doc/html/fusion/iterator/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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ next element after i.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
      index f5ceb019..4bb04c0d 100644
      --- a/doc/html/fusion/iterator/functions/prior.html
      +++ b/doc/html/fusion/iterator/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

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -105,7 +105,7 @@ element prior to i.

      - + Header
      @@ -113,7 +113,7 @@
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
      index 1947ad85..c0d2e266 100644
      --- a/doc/html/fusion/iterator/metafunctions/advance.html
      +++ b/doc/html/fusion/iterator/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

      @@ -113,7 +113,7 @@
      - + Expression Semantics
      @@ -133,7 +133,7 @@ may be negative.

      - + Header
      @@ -141,7 +141,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
      index 7e3eeb51..426cefda 100644
      --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
      +++ b/doc/html/fusion/iterator/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

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

      - + Header
      @@ -140,7 +140,7 @@
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
      index d02e6a28..0d49a882 100644
      --- a/doc/html/fusion/iterator/metafunctions/deref.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -107,7 +107,7 @@ an iterator of type I.

      - + Header
      @@ -115,7 +115,7 @@
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
      index bb3e1d1e..7f825ef8 100644
      --- a/doc/html/fusion/iterator/metafunctions/distance.html
      +++ b/doc/html/fusion/iterator/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

      @@ -93,7 +93,7 @@
      - + Expression Semantics
      @@ -110,7 +110,7 @@ J.

      - + Header
      @@ -118,7 +118,7 @@
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
      index 24ba49d9..6dc3d549 100644
      --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
      +++ b/doc/html/fusion/iterator/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

      @@ -93,7 +93,7 @@
      - + Expression Semantics
      @@ -110,7 +110,7 @@ Returns boost::mpl::false_ otherwise.

      - + Header
      @@ -118,7 +118,7 @@
       #include <boost/fusion/include/equal_to.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
      index d006635d..6f3f418f 100644
      --- a/doc/html/fusion/iterator/metafunctions/next.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -108,7 +108,7 @@ next element in the sequence after I.

      - + Header
      @@ -116,7 +116,7 @@
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
      index e431177d..5a610de9 100644
      --- a/doc/html/fusion/iterator/metafunctions/prior.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -108,7 +108,7 @@ previous element in the sequence before I.

      - + Header
      @@ -116,7 +116,7 @@
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
      index 08604d48..2dfe4eaf 100644
      --- a/doc/html/fusion/iterator/metafunctions/value_of.html
      +++ b/doc/html/fusion/iterator/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

      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -107,7 +107,7 @@ a sequence at iterator position I.

      - + Header
      @@ -115,7 +115,7 @@
       #include <boost/fusion/include/value_of.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
      index 51a9529f..e932b79c 100644
      --- a/doc/html/fusion/iterator/operator/operator_equality.html
      +++ b/doc/html/fusion/iterator/operator/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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index c7dc174e..3c86e83f 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/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

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -105,7 +105,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 653f243d..05cda673 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/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

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ Semantics: Equivalent to deref(i).

    - + Header
    @@ -116,7 +116,7 @@
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index 971ef3f4..c19a134b 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     
     

    - + Recursive Inlined Functions

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

    - + Overloaded Functions

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

    - + Tag Dispatching

    @@ -103,7 +103,7 @@

    - + Extensibility

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

    - + Element Conversion

    @@ -161,7 +161,7 @@

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

    @@ -194,7 +194,7 @@
     list<void (*)(int)>
     

    - + boost::ref

    @@ -237,7 +237,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 ba26bd8a..2b8ba58c 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

    @@ -65,7 +65,7 @@ against.

    - + Directory

      @@ -186,7 +186,7 @@

    - + Example

    @@ -202,12 +202,12 @@

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



    -

    [4] +

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

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index d97a948b..5a8da91d 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -44,7 +44,7 @@

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

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 3a31cb9a..7b92387d 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) - [2] + [2] :

    @@ -42,7 +42,7 @@
     

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

    @@ -60,7 +60,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

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

    - + Print only pointers

    @@ -152,7 +152,7 @@ Easy, right?

    - + Associative tuples

    @@ -227,7 +227,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -238,12 +238,12 @@



    -

    [2] +

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

    -

    [3] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 90f6dbee..0184e041 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -59,7 +59,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 3c4f1508..9fd3ec7e 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/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/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 959e29dd..ee092f1f 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

    - + Description

    @@ -71,7 +71,7 @@

    - + Valid Expressions
    @@ -180,7 +180,7 @@
    - + Result Type Expressions
    @@ -252,7 +252,7 @@ result_of::value_at_key<S, N>.

    - + Expression Semantics
    @@ -307,7 +307,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 044de653..3e7b0d79 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/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
    @@ -207,7 +207,7 @@
    - + Result Type Expressions
    @@ -268,7 +268,7 @@
    - + Expression Semantics
    @@ -309,7 +309,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index dbd8bc2d..7d5f8719 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -62,7 +62,7 @@

    - + Valid Expressions
    @@ -239,7 +239,7 @@
    - + Result Type Expressions
    @@ -324,7 +324,7 @@
    - + Expression Semantics
    @@ -412,7 +412,7 @@
    - + Invariants

    @@ -438,7 +438,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 15092dca..5de20cec 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
    - + Description

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

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Valid Expressions
    @@ -214,7 +214,7 @@
    - + Result Type Expressions
    @@ -297,7 +297,7 @@ result_of::value_at<S, N>.

    - + Expression Semantics
    @@ -338,7 +338,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index cbbe5af3..7a65a0fe 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -37,11 +37,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

      @@ -50,7 +50,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/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 38571b05..9c4b9d4b 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/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
      @@ -113,7 +113,7 @@
      - + Expression Semantics
      @@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
    - + Header
    @@ -149,7 +149,7 @@
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index a0fdbaf1..7cb5f0bb 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -141,7 +141,7 @@ deref(advance<N>(begin(s)))
    - + Header
    @@ -149,7 +149,7 @@
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index 99e8aa4e..ec15a26a 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -136,7 +136,7 @@ with Key.

    - + Header
    @@ -144,7 +144,7 @@
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index 70b28e90..addace54 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ in the sequence.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index cd751fb2..516eec4d 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ to the first element in the sequence.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index eea11704..de9b5c8d 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ to false.

    - + Header
    @@ -114,7 +114,7 @@
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index 007bc1e0..99039044 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ to one element past the end of the sequence.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index 41b2dfb2..20fadc19 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ in the sequence.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index 2fb1e241..25811df4 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -126,7 +126,7 @@ associated with Key, else, evaluates to false.

    - + Header
    @@ -134,7 +134,7 @@
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index dd98ddbf..aa312a98 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/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
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -105,7 +105,7 @@ in the sequence.

    - + Header
    @@ -113,7 +113,7 @@
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index 411915a1..3a573a71 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    @@ -41,7 +41,7 @@
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    index e6935a0b..f627a517 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ /sequence/intrinsic/at.hpp>

    - + Example
    @@ -141,7 +141,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/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 75815744..2e74d5a1 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -131,7 +131,7 @@ /sequence/intrinsic/at.hpp>

    - + Example
    @@ -140,7 +140,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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 0239a27a..e6905a1a 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -133,7 +133,7 @@ /sequence/intrinsic/at_key.hpp>

    - + Example
    @@ -142,7 +142,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/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 9bca7e56..721782f6 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -108,7 +108,7 @@ /sequence/intrinsic/back.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index f514eaea..cbe37740 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/begin.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index fc6b344a..d5b777d0 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -110,7 +110,7 @@ /sequence/intrinsic/empty.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index b4dcc312..d82b3a6a 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/end.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index 5313ead9..37b92308 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/front.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index 9b4931e2..851e1c03 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -132,7 +132,7 @@ /sequence/intrinsic/has_key.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index 7d4be7d5..0a6a05c0 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,7 +109,7 @@ /sequence/intrinsic/size.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index cf6e17c9..e40a04ce 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the return type of swap.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index 06c0e66f..a47106ae 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -130,7 +130,7 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index 8e4c4770..7cc7efe8 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -129,7 +129,7 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index 1181c6c4..fea4702b 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/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

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -130,7 +130,7 @@ /sequence/intrinsic/value_at_key.hpp>

    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
    index 477132a5..173ded05 100644
    --- a/doc/html/fusion/sequence/operator/comparison.html
    +++ b/doc/html/fusion/sequence/operator/comparison.html
    @@ -48,7 +48,7 @@
               only until the result is clear.
             

    - + Header
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index 1d0f9c03..c76ddb57 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -125,7 +125,7 @@ true.

    - + Header
    @@ -133,7 +133,7 @@
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index b71ab098..9f19fd25 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ Semantics: Returns b < a.

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index bdbc77a7..e0be2950 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -116,7 +116,7 @@ Semantics: Returns !(a < b).

    - + Header
    @@ -124,7 +124,7 @@
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index 19c63f56..42dbe895 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -119,7 +119,7 @@ and b.

    - + Header
    @@ -127,7 +127,7 @@
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index aa602ef2..300ec0ab 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -117,7 +117,7 @@ Semantics: Returns !(b < a).

    - + Header
    @@ -125,7 +125,7 @@
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index d6fb5b3a..089452a4 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -119,7 +119,7 @@ Returns !(a == b).

    - + Header
    @@ -127,7 +127,7 @@
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 055c0069..c8ec47dc 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -116,7 +116,7 @@
               representation may not be unambiguously parseable.
             

    - + Header
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index 62b85cdb..40fb2b53 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ e.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index 7b87b6d3..63e3d34d 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/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
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -123,7 +123,7 @@ e.

    - + Header
    @@ -131,7 +131,7 @@
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index fed08298..f04098bd 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

    @@ -95,7 +95,7 @@

    - + Expression Semantics

    @@ -161,7 +161,7 @@ of a particular Sequence or Iterator.

    - + Header

    @@ -169,7 +169,7 @@
     #include <boost/fusion/include/category_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index 5534ac30..f245a0c1 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -39,7 +39,7 @@ Reference wrappers are removed (see boost::ref).

    - + Header

    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/deduce.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@
     }
     

    - + Example

    @@ -82,7 +82,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 6bb74408..0ac46f2c 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -26,7 +26,7 @@

    - + Description

    @@ -39,7 +39,7 @@ original type as its argument.

    - + Header

    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@
     }
     

    - + Example

    @@ -84,7 +84,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 0ebeb1e0..dbf93333 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

    @@ -96,7 +96,7 @@

    - + Expression Semantics

    @@ -114,7 +114,7 @@ otherwise.

    - + Header

    @@ -122,7 +122,7 @@
     #include <boost/fusion/include/is_sequence.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index c77e4c81..516e6129 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

    @@ -99,7 +99,7 @@

    - + Expression Semantics

    @@ -116,7 +116,7 @@
             otherwise.
           

    - + Header

    @@ -124,7 +124,7 @@
     #include <boost/fusion/include/is_view.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index ad178d19..b6fdb969 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

    @@ -140,7 +140,7 @@

    - + Expression Semantics

    @@ -320,7 +320,7 @@

    - + Header

    @@ -328,7 +328,7 @@
     #include <boost/fusion/include/pair.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index edfa094d..602913dd 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

    @@ -99,7 +99,7 @@

    - + Expression Semantics

    @@ -113,7 +113,7 @@
             with T.
           

    - + Header

    @@ -121,7 +121,7 @@
     #include <boost/fusion/include/tag_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
    index d7dde30a..5a5ea9ff 100644
    --- a/doc/html/fusion/tuple/class_template_tuple.html
    +++ b/doc/html/fusion/tuple/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis

    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index bf9eb474..e9a5c7ed 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 04498d1e..38d0c243 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/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/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index 30fe370a..896a5c0d 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/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/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 4c503290..5a61e7e9 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -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/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index 93daa1bd..a79dd592 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -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/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index 005ad4a3..8c91a35f 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/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/fusion/view.html b/doc/html/fusion/view.html
    index 4b029ff9..7cb0fb2b 100644
    --- a/doc/html/fusion/view.html
    +++ b/doc/html/fusion/view.html
    @@ -44,7 +44,7 @@
           to copy and be passed around by value.
         

    - + Header

    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index 52c8b317..f15d8e8a 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -37,7 +37,7 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header

    @@ -45,7 +45,7 @@
     #include <boost/fusion/include/filter_view.hpp>
     

    - + Synopsis

    @@ -53,7 +53,7 @@
     struct filter_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 8f905d68..9487c625 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -34,7 +34,7 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header

    @@ -42,7 +42,7 @@
     #include <boost/fusion/include/iterator_range.hpp>
     

    - + Synopsis

    @@ -50,7 +50,7 @@
     struct iterator_range;
     

    - + Template parameters

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

    - + Model of

    • @@ -149,7 +149,7 @@

    - + Expression Semantics

    @@ -224,7 +224,7 @@

    - + Example

    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 2e812187..2c60599c 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -34,7 +34,7 @@ which is a concatenation of two sequences.

    - + Header

    @@ -42,7 +42,7 @@
     #include <boost/fusion/include/joint_view.hpp>
     

    - + Synopsis

    @@ -50,7 +50,7 @@
     struct joint_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index a54d1a7e..93260b61 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -31,7 +31,7 @@
             element will be its first.
           

    - + Header

    @@ -39,7 +39,7 @@
     #include <boost/fusion/include/reverse_view.hpp>
     

    - + Synopsis

    @@ -47,7 +47,7 @@
     struct reverse_view;
     

    - + Template parameters

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

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index 007d4a75..f3f8595c 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -30,7 +30,7 @@
             a value as a single element sequence.
           

    - + Header

    @@ -38,7 +38,7 @@
     #include <boost/fusion/include/single_view.hpp>
     

    - + Synopsis

    @@ -46,7 +46,7 @@
     struct single_view;
     

    - + Template parameters

    @@ -90,7 +90,7 @@

    - + Model of

    - + Example

    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 7e690045..a129645d 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -35,7 +35,7 @@
             Traversal Concept) of its underlying sequence or sequences.
           

    - + Header

    @@ -43,7 +43,7 @@
     #include <boost/fusion/include/transform_view.hpp>
     

    - + Synopsis

    @@ -61,7 +61,7 @@ struct transform_view;

    - + Template parameters

    @@ -183,7 +183,7 @@

    - + Model of

    • @@ -242,7 +242,7 @@

    - + Expression Semantics

    @@ -337,7 +337,7 @@

    - + Example

    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index def0b67b..c23468cc 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -37,7 +37,7 @@ to the component _sequence_s.

    - + Header

    @@ -45,7 +45,7 @@
     #include <boost/fusion/include/zip_view.hpp>
     

    - + Synopsis

    @@ -53,7 +53,7 @@
     struct zip_view;
     

    - + Template parameters

    @@ -99,7 +99,7 @@

    - + Model of

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

    - + Expression Semantics

    @@ -204,7 +204,7 @@

    - + Example

    diff --git a/doc/html/index.html b/doc/html/index.html
    index e5bd41ce..6d3d1f9a 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -34,7 +34,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)

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

    Last revised: July 22, 2008 at 02:00:25 GMT

    Last revised: July 21, 2008 at 07:17:27 GMT


    diff --git a/test/Jamfile b/test/Jamfile index b6101e3d..12407035 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -89,6 +89,7 @@ import testing ; [ run sequence/tuple_misc.cpp : : : : ] [ run sequence/tuple_mutate.cpp : : : : ] [ run sequence/tuple_tie.cpp : : : : ] + [ run sequence/tr1_tuple_auto_conv.cpp : : : : ] [ run sequence/transform_view.cpp : : : : ] [ run sequence/vector_comparison.cpp : : : : ] [ run sequence/vector_construction.cpp : : : : ] diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index 3960af17..68c59e4b 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-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). ==============================================================================*/ @@ -127,10 +127,10 @@ class members { public: int data; - + members() : data(20) - { } + { } int nullary() { return data + 1; } int nullary_c() const { return data + 2; } @@ -340,17 +340,17 @@ void result_type_tests() using boost::is_same; BOOST_TEST(( is_same< - fusion::result_of::invoke::type, int + fusion::result_of::invoke::type, int >::value )); // disabled until boost::result_of supports it // BOOST_TEST(( is_same< -// fusion::result_of::invoke >::type, int +// fusion::result_of::invoke >::type, int // >::value )); - BOOST_TEST(( is_same< - fusion::result_of::invoke >::type, int + BOOST_TEST(( is_same< + fusion::result_of::invoke >::type, int >::value )); // disabled until boost::result_of supports it -// BOOST_TEST(( is_same< +// BOOST_TEST(( is_same< // fusion::result_of::invoke >::type, int // >::value )); } diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp index 5f08f650..375bc4c5 100644 --- a/test/functional/invoke_function_object.cpp +++ b/test/functional/invoke_function_object.cpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-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). ==============================================================================*/ @@ -41,7 +41,7 @@ struct object_nc : boost::noncopyable {}; struct fobj { // Handle nullary separately to exercise result_of support - template + template struct result; template @@ -97,7 +97,7 @@ struct fobj_nc { typedef int type; }; - + int operator()(int i) { return 14 + i; } int operator()(int i) const { return 15 + i; } }; diff --git a/test/functional/invoke_procedure.cpp b/test/functional/invoke_procedure.cpp index 810cb903..2dc93c5a 100644 --- a/test/functional/invoke_procedure.cpp +++ b/test/functional/invoke_procedure.cpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2006 João Abecasis + Copyright (c) 2005-2006 Joao Abecasis Copyright (c) 2006-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). ==============================================================================*/ @@ -48,10 +48,10 @@ class members { public: int data; - + members() : data(20) - { } + { } int nullary() { return element1 = data + 1; } int nullary_c() const { return element1 = data + 2; } diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index c667b1a4..5c6abdf2 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -2,7 +2,7 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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 @@ -57,7 +57,9 @@ test() FUSION_SEQUENCE<> empty0; +#ifndef TR1_TUPLE_TEST FUSION_SEQUENCE<> empty1(empty); +#endif FUSION_SEQUENCE t1; BOOST_TEST(FUSION_AT<0>(t1) == int()); diff --git a/test/sequence/tr1_tuple_auto_conv.cpp b/test/sequence/tr1_tuple_auto_conv.cpp new file mode 100644 index 00000000..0c20fa3f --- /dev/null +++ b/test/sequence/tr1_tuple_auto_conv.cpp @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +namespace Core +{ + class AutoConverter + { + std::tr1::shared_ptr t_; + + public: + AutoConverter(std::tr1::shared_ptr const & t) + : t_(t) + {} + + template + operator C () + { + try + { + boost::any & a = (*t_); + + return boost::any_cast(a); + } + catch(boost::bad_any_cast & e) + { + std::cerr << "Internal conversion bug: " + << "Failed to convert data holder to " + << typeid(C).name() << "\n" + << e.what() + << std::endl; + + C c = C(); + return c; + } + } + }; + + + inline AutoConverter Demo() + { + std::tr1::shared_ptr p_result + (new boost::any(std::tr1::make_tuple(1, 2, 3, 4))); + return p_result; + } + +} // namespace Core + + +int main(int argc, char* argv[]) +{ + std::tr1::tuple test = Core::Demo(); + return 0; +} + diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp index 7f025d51..ec602abb 100644 --- a/test/sequence/tuple_construction.cpp +++ b/test/sequence/tuple_construction.cpp @@ -2,12 +2,13 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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 +#define TR1_TUPLE_TEST #define FUSION_SEQUENCE tuple #define FUSION_AT get #include "construction.hpp" From 5dff6100079ed126f7cecaa043bd6b3d89fb1189 Mon Sep 17 00:00:00 2001 From: "Troy D. Straszheim" Date: Sat, 24 Jan 2009 18:57:20 +0000 Subject: [PATCH 17/82] merge of cmake build files from trunk per beman [SVN r50756] --- CMakeLists.txt | 23 +++++++++++++++++++++++ module.cmake | 1 + 2 files changed, 24 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 module.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..affc40e1 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,23 @@ +#---------------------------------------------------------------------------- +# This file was automatically generated from the original CMakeLists.txt file +# Add a variable to hold the headers for the library +set (lib_headers + fusion +) + +# Add a library target to the build system +boost_library_project( + fusion + # SRCDIRS + # TESTDIRS + HEADERS ${lib_headers} + # DOCDIRS + DESCRIPTION "Library for working with tuples, including various containers, algorithms, etc." + MODULARIZED + AUTHORS "Joel de Guzman " + "Dan Marsden " + "Tobias Schwinger " + # MAINTAINERS +) + + diff --git a/module.cmake b/module.cmake new file mode 100644 index 00000000..fa210eb3 --- /dev/null +++ b/module.cmake @@ -0,0 +1 @@ +boost_module (fusion DEPENDS function_types) \ No newline at end of file From efcab8aae4046b4bac381ce4422010527559b160 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Wed, 3 Jun 2009 04:32:30 +0000 Subject: [PATCH 18/82] Merged revisions 53158,53182,53334,53337,53419,53421,53521,53566-53568,53578,53590 via svnmerge from https://svn.boost.org/svn/boost/trunk [SVN r53591] --- .../container/vector/detail/at_impl.hpp | 21 +++++--- .../vector/detail/vector_n_chooser.hpp | 52 ++++++------------- .../boost/fusion/support/detail/access.hpp | 37 ++++++++----- 3 files changed, 54 insertions(+), 56 deletions(-) diff --git a/include/boost/fusion/container/vector/detail/at_impl.hpp b/include/boost/fusion/container/vector/detail/at_impl.hpp index 1a00f428..1366ec9f 100644 --- a/include/boost/fusion/container/vector/detail/at_impl.hpp +++ b/include/boost/fusion/container/vector/detail/at_impl.hpp @@ -28,13 +28,7 @@ namespace boost { namespace fusion struct apply { typedef mpl::at element; - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; + typedef typename detail::ref_result::type type; static type call(Sequence& v) @@ -42,6 +36,19 @@ namespace boost { namespace fusion return v.at_impl(N()); } }; + + template + struct apply + { + typedef mpl::at element; + typedef typename detail::cref_result::type type; + + static type + call(Sequence const& v) + { + return v.at_impl(N()); + } + }; }; } }} diff --git a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp index 29248907..248b5058 100644 --- a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp @@ -25,11 +25,12 @@ #include #endif -#include -#include -#include #include +#include +#include +#include #include +#include namespace boost { namespace fusion { @@ -38,40 +39,23 @@ namespace boost { namespace fusion namespace boost { namespace fusion { namespace detail { - template - struct get_vector_n; + template + struct vector_n_chooser + { + typedef BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE) type; + }; template <> - struct get_vector_n<0> + struct vector_n_chooser { - template - struct call - { - typedef vector0 type; - }; + typedef vector0 type; }; #define BOOST_PP_FILENAME_1 \ -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#define BOOST_PP_ITERATION_LIMITS (1, BOOST_PP_DEC(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 @@ -85,14 +69,12 @@ namespace boost { namespace fusion { namespace detail #define N BOOST_PP_ITERATION() - template <> - struct get_vector_n + template + struct vector_n_chooser< + BOOST_PP_ENUM_PARAMS(N, T) + BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SUB(FUSION_MAX_VECTOR_SIZE, N), void_ BOOST_PP_INTERCEPT)> { - template - struct call - { - typedef BOOST_PP_CAT(vector, N) type; - }; + typedef BOOST_PP_CAT(vector, N) type; }; #undef N diff --git a/include/boost/fusion/support/detail/access.hpp b/include/boost/fusion/support/detail/access.hpp index 0508e50f..af7374cc 100644 --- a/include/boost/fusion/support/detail/access.hpp +++ b/include/boost/fusion/support/detail/access.hpp @@ -7,12 +7,8 @@ #if !defined(FUSION_ACCESS_04182005_0737) #define FUSION_ACCESS_04182005_0737 -#include -#include #include #include -#include -#include namespace boost { namespace fusion { namespace detail { @@ -33,22 +29,35 @@ namespace boost { namespace fusion { namespace detail }; template - struct non_ref_parameter + struct call_param { - typedef typename boost::remove_cv::type const& type; + typedef T const& type; }; template - struct call_param + struct call_param { - typedef typename - mpl::eval_if< - is_reference - , mpl::identity - , non_ref_parameter - >::type - type; + typedef T& type; }; + + template + struct call_param + { + typedef T const& type; + }; + + template + struct call_param + { + typedef T const& type; + }; + + template + struct call_param + { + typedef T const& type; + }; + }}} #endif From d7267561480dcae9719f8d9dfbe0d4ac2cad027a Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Wed, 3 Jun 2009 12:44:26 +0000 Subject: [PATCH 19/82] Fusion: merging from trunk [SVN r53596] --- include/boost/fusion/sequence/intrinsic/at.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index 4524ace5..bcb67990 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -91,14 +91,14 @@ namespace boost { namespace fusion >::type at_c(Sequence& seq) { - return at >(seq); + return fusion::at >(seq); } template inline typename result_of::at_c::type at_c(Sequence const& seq) { - return at >(seq); + return fusion::at >(seq); } }} From df633002dd2800f8b82f2ad26db6cfb135c2fd87 Mon Sep 17 00:00:00 2001 From: "Troy D. Straszheim" Date: Wed, 22 Jul 2009 21:51:01 +0000 Subject: [PATCH 20/82] Add basic copyright/license to keep cmake out of the inspection report [SVN r55095] --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index affc40e1..2a91cc15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,9 @@ +# +# Copyright Troy D. Straszheim +# +# Distributed under the Boost Software License, Version 1.0. +# See http://www.boost.org/LICENSE_1_0.txt +# #---------------------------------------------------------------------------- # This file was automatically generated from the original CMakeLists.txt file # Add a variable to hold the headers for the library From ea5ea7f001013829bb1aa1519abfdce0914797f5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 24 Aug 2009 10:31:43 +0000 Subject: [PATCH 21/82] Fix up logic and date_time Jamfiles so they build needed dependencies. Fix PDF image paths in fusion Jamfile.v2. Add fusion to the PDF build. [SVN r55757] --- doc/Jamfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Jamfile b/doc/Jamfile index dc8fefe7..0feef100 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -9,6 +9,8 @@ project boost/libs/fusion/doc ; import boostbook : boostbook ; using quickbook ; +path-constant images_location : html ; + boostbook quickbook : fusion.qbk @@ -21,5 +23,9 @@ boostbook quickbook toc.section.depth=3 toc.max.depth=3 generate.section.toc.level=4 + pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/fusion/doc/html + pdf:img.src.path=$(images_location)/ ; + + From 2f8b91828b2626f01c8a6d12f7e41b6885875d86 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 14 Sep 2009 07:40:39 +0000 Subject: [PATCH 22/82] merge from trunk [SVN r56178] --- .../boost_tuple/boost_tuple_iterator.hpp | 36 +++++ .../fusion/algorithm/query/detail/all.hpp | 2 +- .../boost/fusion/algorithm/transformation.hpp | 2 + .../fusion/algorithm/transformation/clear.hpp | 4 +- .../fusion/container/deque/deque_iterator.hpp | 1 + .../container/generation/make_vector.hpp | 20 +-- .../container/vector/detail/as_vector.hpp | 6 +- .../vector/detail/vector_n_chooser.hpp | 2 +- .../boost/fusion/container/vector/vector.hpp | 4 +- .../fusion/container/vector/vector10.hpp | 3 +- .../container/vector/vector_iterator.hpp | 9 ++ include/boost/fusion/functional/adapter.hpp | 4 +- .../fusion/functional/adapter/limits.hpp | 17 +- .../fusion/functional/adapter/unfused.hpp | 151 ++++++++++++++++++ .../boost/fusion/functional/generation.hpp | 4 +- .../functional/generation/make_unfused.hpp | 18 +++ include/boost/fusion/include/remove.hpp | 6 +- .../boost/fusion/iterator/iterator_facade.hpp | 10 +- include/boost/fusion/support/deduce.hpp | 12 ++ include/boost/fusion/support/tag_of.hpp | 4 +- include/boost/fusion/support/unused.hpp | 27 +++- .../fusion/view/ext_/segmented_iterator.hpp | 4 +- 22 files changed, 295 insertions(+), 51 deletions(-) create mode 100755 include/boost/fusion/functional/adapter/unfused.hpp create mode 100644 include/boost/fusion/functional/generation/make_unfused.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp index fca135e5..cf3183b1 100644 --- a/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -14,6 +14,9 @@ #include #include #include +#include +#include +#include #include namespace boost { namespace fusion @@ -91,6 +94,39 @@ namespace boost { namespace fusion return type(iter.cons.get_tail()); } }; + + template + struct distance; + + // detail + template + struct lazy_next_distance + { + typedef + typename mpl::plus< + mpl::int_<1>, + typename distance< + typename next::type, + I2 + >::type + >::type type; + }; + + template + struct distance + { + typedef typename mpl::eval_if< + boost::is_same, + mpl::int_<0>, + lazy_next_distance + >::type type; + + static type + call(I1 const&, I2 const&) + { + return type(); + } + }; }; template diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp index 979cfb11..51fd393f 100644 --- a/include/boost/fusion/algorithm/query/detail/all.hpp +++ b/include/boost/fusion/algorithm/query/detail/all.hpp @@ -108,7 +108,7 @@ namespace boost { namespace fusion { namespace detail template static bool call(It const& it, F f) { - return false; + return true; } }; diff --git a/include/boost/fusion/algorithm/transformation.hpp b/include/boost/fusion/algorithm/transformation.hpp index 0757b5ee..9221cd45 100644 --- a/include/boost/fusion/algorithm/transformation.hpp +++ b/include/boost/fusion/algorithm/transformation.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -24,5 +25,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp index 75328232..c9f849cb 100644 --- a/include/boost/fusion/algorithm/transformation/clear.hpp +++ b/include/boost/fusion/algorithm/transformation/clear.hpp @@ -16,7 +16,7 @@ namespace boost { namespace fusion template struct clear { - typedef vector0 type; + typedef vector0<> type; }; } @@ -24,7 +24,7 @@ namespace boost { namespace fusion inline typename result_of::clear::type clear(Sequence const& seq) { - return vector0(); + return vector0<>(); } }} diff --git a/include/boost/fusion/container/deque/deque_iterator.hpp b/include/boost/fusion/container/deque/deque_iterator.hpp index 90c68918..c6e46d54 100644 --- a/include/boost/fusion/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/container/deque/deque_iterator.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/generation/make_vector.hpp b/include/boost/fusion/container/generation/make_vector.hpp index 3f9b27f2..868ad0ca 100644 --- a/include/boost/fusion/container/generation/make_vector.hpp +++ b/include/boost/fusion/container/generation/make_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 @@ -19,7 +19,7 @@ namespace boost { namespace fusion { struct void_; - + namespace result_of { template < @@ -28,18 +28,18 @@ namespace boost { namespace fusion , typename Extra = void_ > struct make_vector; - + template <> struct make_vector<> { - typedef vector<> type; + typedef vector0<> type; }; } - - inline vector<> + + inline vector0<> make_vector() { - return vector<>(); + return vector0<>(); } #define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ @@ -74,15 +74,15 @@ namespace boost { namespace fusion struct make_vector #endif { - typedef vector type; + typedef BOOST_PP_CAT(vector, N) type; }; } template - inline vector + inline BOOST_PP_CAT(vector, N) make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) { - return vector( + return BOOST_PP_CAT(vector, N)( BOOST_PP_ENUM_PARAMS(N, _)); } diff --git a/include/boost/fusion/container/vector/detail/as_vector.hpp b/include/boost/fusion/container/vector/detail/as_vector.hpp index fa8dadcf..a70fd4ae 100644 --- a/include/boost/fusion/container/vector/detail/as_vector.hpp +++ b/include/boost/fusion/container/vector/detail/as_vector.hpp @@ -31,14 +31,14 @@ namespace boost { namespace fusion { namespace detail template struct apply { - typedef vector<> type; + typedef vector0<> type; }; template static typename apply::type call(Iterator) { - return vector<>(); + return vector0<>(); } }; @@ -82,7 +82,7 @@ namespace boost { namespace fusion { namespace detail { BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) - typedef vector type; + typedef BOOST_PP_CAT(vector, N) type; }; template diff --git a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp index 248b5058..f4b85d89 100644 --- a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp @@ -48,7 +48,7 @@ namespace boost { namespace fusion { namespace detail template <> struct vector_n_chooser { - typedef vector0 type; + typedef vector0<> type; }; #define BOOST_PP_FILENAME_1 \ diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index aef3134c..5b9a5608 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -56,7 +56,7 @@ namespace boost { namespace fusion template vector(Sequence const& rhs) -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) : vec(ctor_helper(rhs, is_base_of())) {} #else : vec(rhs) {} @@ -129,7 +129,7 @@ namespace boost { namespace fusion private: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) static vector_n const& ctor_helper(vector const& rhs, mpl::true_) { diff --git a/include/boost/fusion/container/vector/vector10.hpp b/include/boost/fusion/container/vector/vector10.hpp index 28531b6f..929815ab 100644 --- a/include/boost/fusion/container/vector/vector10.hpp +++ b/include/boost/fusion/container/vector/vector10.hpp @@ -39,7 +39,8 @@ namespace boost { namespace fusion struct fusion_sequence_tag; struct random_access_traversal_tag; - struct vector0 : sequence_base + template + struct vector0 : sequence_base > { typedef mpl::vector0<> types; typedef vector_tag fusion_tag; diff --git a/include/boost/fusion/container/vector/vector_iterator.hpp b/include/boost/fusion/container/vector/vector_iterator.hpp index 9feeb520..d7ba8c88 100644 --- a/include/boost/fusion/container/vector/vector_iterator.hpp +++ b/include/boost/fusion/container/vector/vector_iterator.hpp @@ -7,6 +7,11 @@ #if !defined(FUSION_VECTOR_ITERATOR_05042005_0635) #define FUSION_VECTOR_ITERATOR_05042005_0635 +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + #include #include #include @@ -42,5 +47,9 @@ namespace boost { namespace fusion }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/functional/adapter.hpp b/include/boost/fusion/functional/adapter.hpp index 734dac39..1a1f9819 100644 --- a/include/boost/fusion/functional/adapter.hpp +++ b/include/boost/fusion/functional/adapter.hpp @@ -11,8 +11,6 @@ #include #include #include -#include -#include -#include +#include #include #endif diff --git a/include/boost/fusion/functional/adapter/limits.hpp b/include/boost/fusion/functional/adapter/limits.hpp index cf6701c4..783bc632 100644 --- a/include/boost/fusion/functional/adapter/limits.hpp +++ b/include/boost/fusion/functional/adapter/limits.hpp @@ -11,29 +11,16 @@ # include -# if !defined(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY) -# define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 6 +# if !defined(BOOST_FUSION_UNFUSED_MAX_ARITY) +# define BOOST_FUSION_UNFUSED_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 -# 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.hpp b/include/boost/fusion/functional/adapter/unfused.hpp new file mode 100755 index 00000000..48baf756 --- /dev/null +++ b/include/boost/fusion/functional/adapter/unfused.hpp @@ -0,0 +1,151 @@ +/*============================================================================= + 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_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include + +namespace boost { namespace fusion +{ + template + class unfused; + + //----- ---- --- -- - - - - + + template + class unfused + : public unfused + { + 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: + + using unfused::operator(); + + inline explicit unfused(func_const_fwd_t f = function()) + : unfused(f) + { } + + typedef typename boost::result_of< + function_c(fusion::vector0<> &) >::type call_const_0_result; + + 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); + } + }; + + template class unfused + { + protected: + Function fnc_transformed; + 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: + + inline explicit unfused(func_const_fwd_t f = function()) + : fnc_transformed(f) + { } + + template + struct result; + + #define BOOST_PP_FILENAME_1 \ + + #define BOOST_PP_ITERATION_LIMITS \ + (1,BOOST_FUSION_UNFUSED_MAX_ARITY) + #include BOOST_PP_ITERATE() + }; +}} + +namespace boost +{ + template + struct result_of< boost::fusion::unfused const () > + { + typedef typename boost::fusion::unfused::call_const_0_result type; + }; + template + struct result_of< boost::fusion::unfused() > + { + typedef typename boost::fusion::unfused::call_0_result type; + }; +} + +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +//////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +//////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + template + struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > + : 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_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 + { + 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 boost::result_of & )>::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/generation.hpp b/include/boost/fusion/functional/generation.hpp index 3dabd3ee..3d812b9f 100644 --- a/include/boost/fusion/functional/generation.hpp +++ b/include/boost/fusion/functional/generation.hpp @@ -12,8 +12,6 @@ #include #include #include -#include -#include -#include +#include #endif diff --git a/include/boost/fusion/functional/generation/make_unfused.hpp b/include/boost/fusion/functional/generation/make_unfused.hpp new file mode 100644 index 00000000..79eadbd5 --- /dev/null +++ b/include/boost/fusion/functional/generation/make_unfused.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_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP_INCLUDED + +#include + +#define BOOST_FUSION_CLASS_TPL_NAME unfused +#include + +#endif + diff --git a/include/boost/fusion/include/remove.hpp b/include/boost/fusion/include/remove.hpp index 7f0b4657..9f11d696 100644 --- a/include/boost/fusion/include/remove.hpp +++ b/include/boost/fusion/include/remove.hpp @@ -4,9 +4,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) ==============================================================================*/ -#if !defined(FUSION_INCLUDE_REMOVE_IF) -#define FUSION_INCLUDE_REMOVE_IF +#if !defined(FUSION_INCLUDE_REMOVE) +#define FUSION_INCLUDE_REMOVE -#include +#include #endif diff --git a/include/boost/fusion/iterator/iterator_facade.hpp b/include/boost/fusion/iterator/iterator_facade.hpp index f1720bdb..3e0a926f 100644 --- a/include/boost/fusion/iterator/iterator_facade.hpp +++ b/include/boost/fusion/iterator/iterator_facade.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_FACADE_09252006_1011) @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -44,6 +45,13 @@ namespace boost { namespace fusion { BOOST_MPL_ASSERT_NOT((traits::is_random_access)); }; + + // default implementation + template + struct distance : + distance_detail::linear_distance + { + }; }; }} diff --git a/include/boost/fusion/support/deduce.hpp b/include/boost/fusion/support/deduce.hpp index 37710ec1..3a7231bd 100644 --- a/include/boost/fusion/support/deduce.hpp +++ b/include/boost/fusion/support/deduce.hpp @@ -87,6 +87,18 @@ namespace boost { namespace fusion { namespace traits // Keep references on arrays, even if const + template + struct deduce + { + typedef T(&type)[N]; + }; + + template + struct deduce + { + typedef volatile T(&type)[N]; + }; + template struct deduce { diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index 282da411..a8e2ed07 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -85,11 +85,11 @@ namespace boost { namespace fusion { template struct tag_of - : mpl::if_< detail::is_mpl_sequence, + : mpl::if_< fusion::detail::is_mpl_sequence, mpl::identity, mpl::identity >::type { - BOOST_MPL_ASSERT_NOT((detail::is_specialized)); + BOOST_MPL_ASSERT_NOT((fusion::detail::is_specialized)); }; template diff --git a/include/boost/fusion/support/unused.hpp b/include/boost/fusion/support/unused.hpp index dc2014ec..c62b738a 100644 --- a/include/boost/fusion/support/unused.hpp +++ b/include/boost/fusion/support/unused.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(BOOST_FUSION_SUPPORT_UNUSED_20070305_1038) @@ -13,7 +13,10 @@ # pragma warning(disable: 4522) // multiple assignment operators specified warning #endif -namespace boost { namespace fusion { +#define BOOST_FUSION_UNUSED_HAS_IO + +namespace boost { namespace fusion +{ struct unused_type { unused_type() @@ -53,6 +56,26 @@ namespace boost { namespace fusion { }; unused_type const unused = unused_type(); + + namespace detail + { + struct unused_only + { + unused_only(unused_type const&) {} + }; + } + + template + inline Out& operator<<(Out& out, detail::unused_only const&) + { + return out; + } + + template + inline In& operator>>(In& in, unused_type&) + { + return in; + } }} #if defined(BOOST_MSVC) diff --git a/include/boost/fusion/view/ext_/segmented_iterator.hpp b/include/boost/fusion/view/ext_/segmented_iterator.hpp index 0a192bdc..b28182a4 100644 --- a/include/boost/fusion/view/ext_/segmented_iterator.hpp +++ b/include/boost/fusion/view/ext_/segmented_iterator.hpp @@ -327,8 +327,8 @@ namespace boost { namespace fusion typedef typename Cons::car_type car_type; typedef typename Cons::cdr_type cdr_type; - explicit segmented_iterator(Cons const &cons) - : cons_(cons) + explicit segmented_iterator(Cons const &c) + : cons_(c) {} cons_type const &cons() const { return this->cons_; }; From 2e805be6dfb449e8579bf0042f5f738de9c07416 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 14 Sep 2009 07:47:53 +0000 Subject: [PATCH 23/82] merge from trunk [SVN r56179] --- changelist.txt | 5 + doc/Jamfile | 1 - doc/adapted.qbk | 8 +- doc/container.qbk | 55 +- doc/functional.qbk | 538 ++++-------------- doc/fusion.qbk | 14 +- doc/html/fusion/acknowledgements.html | 14 +- doc/html/fusion/adapted.html | 25 +- doc/html/fusion/adapted/adapt_assoc.html | 33 +- doc/html/fusion/adapted/adapt_struct.html | 33 +- doc/html/fusion/adapted/boost__array.html | 28 +- doc/html/fusion/adapted/boost__tuple.html | 28 +- doc/html/fusion/adapted/mpl_sequence.html | 28 +- doc/html/fusion/adapted/std__pair.html | 28 +- doc/html/fusion/algorithm.html | 23 +- doc/html/fusion/algorithm/iteration.html | 19 +- .../fusion/algorithm/iteration/functions.html | 14 +- .../iteration/functions/accumulate.html | 112 ++-- .../algorithm/iteration/functions/fold.html | 112 ++-- .../iteration/functions/for_each.html | 94 ++- .../algorithm/iteration/metafunctions.html | 14 +- .../iteration/metafunctions/accumulate.html | 107 ++-- .../iteration/metafunctions/fold.html | 107 ++-- .../iteration/metafunctions/for_each.html | 89 ++- doc/html/fusion/algorithm/query.html | 19 +- .../fusion/algorithm/query/functions.html | 14 +- .../fusion/algorithm/query/functions/all.html | 94 ++- .../fusion/algorithm/query/functions/any.html | 94 ++- .../algorithm/query/functions/count.html | 94 ++- .../algorithm/query/functions/count_if.html | 94 ++- .../algorithm/query/functions/find.html | 94 ++- .../algorithm/query/functions/find_if.html | 89 ++- .../algorithm/query/functions/none.html | 94 ++- .../fusion/algorithm/query/metafunctions.html | 14 +- .../algorithm/query/metafunctions/all.html | 89 ++- .../algorithm/query/metafunctions/any.html | 89 ++- .../algorithm/query/metafunctions/count.html | 89 ++- .../query/metafunctions/count_if.html | 89 ++- .../algorithm/query/metafunctions/find.html | 89 ++- .../query/metafunctions/find_if.html | 89 ++- .../algorithm/query/metafunctions/none.html | 89 ++- doc/html/fusion/algorithm/transformation.html | 19 +- .../algorithm/transformation/functions.html | 14 +- .../transformation/functions/clear.html | 76 ++- .../transformation/functions/erase.html | 115 ++-- .../transformation/functions/erase_key.html | 94 ++- .../transformation/functions/filter.html | 94 ++- .../transformation/functions/filter_if.html | 94 ++- .../transformation/functions/insert.html | 112 ++-- .../functions/insert_range.html | 112 ++-- .../transformation/functions/join.html | 94 ++- .../transformation/functions/pop_back.html | 76 ++- .../transformation/functions/pop_front.html | 76 ++- .../transformation/functions/push_back.html | 94 ++- .../transformation/functions/push_front.html | 94 ++- .../transformation/functions/remove.html | 94 ++- .../transformation/functions/remove_if.html | 94 ++- .../transformation/functions/replace.html | 112 ++-- .../transformation/functions/replace_if.html | 112 ++-- .../transformation/functions/reverse.html | 76 ++- .../transformation/functions/transform.html | 173 +++--- .../transformation/functions/zip.html | 76 ++- .../transformation/metafunctions.html | 14 +- .../transformation/metafunctions/clear.html | 71 +-- .../transformation/metafunctions/erase.html | 110 ++-- .../metafunctions/erase_key.html | 89 ++- .../transformation/metafunctions/filter.html | 89 ++- .../metafunctions/filter_if.html | 89 ++- .../transformation/metafunctions/insert.html | 107 ++-- .../metafunctions/insert_range.html | 107 ++-- .../transformation/metafunctions/join.html | 33 +- .../metafunctions/pop_back.html | 71 +-- .../metafunctions/pop_front.html | 66 +-- .../metafunctions/push_back.html | 84 ++- .../metafunctions/push_front.html | 84 ++- .../transformation/metafunctions/remove.html | 89 ++- .../metafunctions/remove_if.html | 89 ++- .../transformation/metafunctions/replace.html | 89 ++- .../metafunctions/replace_if.html | 107 ++-- .../transformation/metafunctions/reverse.html | 71 +-- .../metafunctions/transform.html | 173 +++--- .../transformation/metafunctions/zip.html | 33 +- doc/html/fusion/change_log.html | 14 +- doc/html/fusion/container.html | 19 +- doc/html/fusion/container/cons.html | 189 +++--- doc/html/fusion/container/conversion.html | 19 +- .../container/conversion/functions.html | 14 +- .../conversion/functions/as_list.html | 74 +-- .../conversion/functions/as_map.html | 74 +-- .../conversion/functions/as_set.html | 74 +-- .../conversion/functions/as_vector.html | 74 +-- .../container/conversion/metafunctions.html | 14 +- .../conversion/metafunctions/as_list.html | 74 +-- .../conversion/metafunctions/as_map.html | 74 +-- .../conversion/metafunctions/as_set.html | 74 +-- .../conversion/metafunctions/as_vector.html | 74 +-- doc/html/fusion/container/generation.html | 19 +- .../container/generation/functions.html | 14 +- .../generation/functions/list_tie.html | 77 ++- .../generation/functions/make_cons.html | 94 ++- .../generation/functions/make_list.html | 79 ++- .../generation/functions/make_map.html | 113 ++-- .../generation/functions/make_set.html | 95 ++-- .../generation/functions/make_vector.html | 79 ++- .../generation/functions/map_tie.html | 95 ++-- .../container/generation/functions/tiers.html | 29 +- .../generation/functions/vector_tie.html | 77 ++- .../container/generation/metafunctions.html | 14 +- .../generation/metafunctions/list_tie.html | 77 ++- .../generation/metafunctions/make_cons.html | 92 ++- .../generation/metafunctions/make_list.html | 77 ++- .../generation/metafunctions/make_map.html | 113 ++-- .../generation/metafunctions/make_set.html | 93 ++- .../generation/metafunctions/make_vector.html | 77 ++- .../generation/metafunctions/map_tie.html | 95 ++-- .../generation/metafunctions/vector_tie.html | 77 ++- doc/html/fusion/container/list.html | 153 ++--- doc/html/fusion/container/map.html | 139 ++--- doc/html/fusion/container/set.html | 139 ++--- doc/html/fusion/container/vector.html | 146 ++--- doc/html/fusion/extension.html | 14 +- doc/html/fusion/extension/ext_full.html | 69 +-- .../fusion/extension/iterator_facade.html | 322 ++++------- .../fusion/extension/sequence_facade.html | 190 +++---- doc/html/fusion/functional.html | 60 +- doc/html/fusion/functional/adapters.html | 24 +- .../fusion/functional/adapters/fused.html | 129 ++--- .../adapters/fused_function_object.html | 135 ++--- .../functional/adapters/fused_procedure.html | 129 ++--- .../fusion/functional/adapters/limits.html | 70 +++ .../fusion/functional/adapters/unfused.html | 265 +++++++++ .../functional/adapters/unfused_typed.html | 161 +++--- doc/html/fusion/functional/concepts.html | 14 +- .../fusion/functional/concepts/callable.html | 23 +- .../functional/concepts/def_callable.html | 51 +- doc/html/fusion/functional/concepts/poly.html | 63 +- .../functional/concepts/reg_callable.html | 63 +- doc/html/fusion/functional/generation.html | 18 +- .../functional/generation/functions.html | 22 +- .../generation/functions/mk_fused.html | 76 ++- .../generation/functions/mk_fused_fobj.html | 84 ++- .../generation/functions/mk_fused_proc.html | 76 ++- .../generation/functions/mk_unfused.html | 163 ++++++ .../functional/generation/metafunctions.html | 28 +- .../generation/metafunctions/mk_fused.html | 28 +- .../metafunctions/mk_fused_fobj.html | 36 +- .../metafunctions/mk_fused_proc.html | 28 +- .../generation/metafunctions/mk_unfused.html | 86 +++ doc/html/fusion/functional/invocation.html | 15 +- .../functional/invocation/functions.html | 14 +- .../invocation/functions/invoke.html | 103 ++-- .../invocation/functions/invoke_fobj.html | 103 ++-- .../invocation/functions/invoke_proc.html | 100 ++-- .../fusion/functional/invocation/limits.html | 73 +++ .../functional/invocation/metafunctions.html | 14 +- .../invocation/metafunctions/invoke.html | 23 +- .../invocation/metafunctions/invoke_fobj.html | 29 +- .../invocation/metafunctions/invoke_proc.html | 23 +- doc/html/fusion/introduction.html | 18 +- doc/html/fusion/iterator.html | 19 +- doc/html/fusion/iterator/concepts.html | 14 +- .../concepts/bidirectional_iterator.html | 166 ++---- .../iterator/concepts/forward_iterator.html | 392 +++++-------- .../concepts/random_access_iterator.html | 162 ++---- doc/html/fusion/iterator/functions.html | 14 +- .../fusion/iterator/functions/advance.html | 92 ++- .../fusion/iterator/functions/advance_c.html | 92 ++- doc/html/fusion/iterator/functions/deref.html | 74 +-- .../fusion/iterator/functions/distance.html | 74 +-- doc/html/fusion/iterator/functions/next.html | 74 +-- doc/html/fusion/iterator/functions/prior.html | 74 +-- doc/html/fusion/iterator/metafunctions.html | 14 +- .../iterator/metafunctions/advance.html | 92 ++- .../iterator/metafunctions/advance_c.html | 92 ++- .../fusion/iterator/metafunctions/deref.html | 74 +-- .../iterator/metafunctions/distance.html | 74 +-- .../iterator/metafunctions/equal_to.html | 74 +-- .../fusion/iterator/metafunctions/next.html | 74 +-- .../fusion/iterator/metafunctions/prior.html | 74 +-- .../iterator/metafunctions/value_of.html | 74 +-- doc/html/fusion/iterator/operator.html | 14 +- .../iterator/operator/operator_equality.html | 69 +-- .../operator/operator_inequality.html | 66 +-- .../operator/operator_unary_star.html | 74 +-- doc/html/fusion/notes.html | 63 +- doc/html/fusion/organization.html | 29 +- doc/html/fusion/preface.html | 122 ++-- doc/html/fusion/quick_start.html | 60 +- doc/html/fusion/references.html | 14 +- doc/html/fusion/sequence.html | 19 +- doc/html/fusion/sequence/concepts.html | 18 +- .../concepts/associative_sequence.html | 206 +++---- .../concepts/bidirectional_sequence.html | 218 +++---- .../sequence/concepts/forward_sequence.html | 338 ++++------- .../concepts/random_access_sequence.html | 232 +++----- doc/html/fusion/sequence/intrinsic.html | 23 +- .../fusion/sequence/intrinsic/functions.html | 14 +- .../sequence/intrinsic/functions/at.html | 95 ++-- .../sequence/intrinsic/functions/at_c.html | 95 ++-- .../sequence/intrinsic/functions/at_key.html | 92 ++- .../sequence/intrinsic/functions/back.html | 74 +-- .../sequence/intrinsic/functions/begin.html | 74 +-- .../sequence/intrinsic/functions/empty.html | 74 +-- .../sequence/intrinsic/functions/end.html | 74 +-- .../sequence/intrinsic/functions/front.html | 74 +-- .../sequence/intrinsic/functions/has_key.html | 92 ++- .../sequence/intrinsic/functions/size.html | 74 +-- .../sequence/intrinsic/functions/swap.html | 69 +-- .../sequence/intrinsic/metafunctions.html | 14 +- .../sequence/intrinsic/metafunctions/at.html | 91 ++- .../intrinsic/metafunctions/at_c.html | 91 ++- .../intrinsic/metafunctions/at_key.html | 91 ++- .../intrinsic/metafunctions/back.html | 69 +-- .../intrinsic/metafunctions/begin.html | 69 +-- .../intrinsic/metafunctions/empty.html | 69 +-- .../sequence/intrinsic/metafunctions/end.html | 69 +-- .../intrinsic/metafunctions/front.html | 69 +-- .../intrinsic/metafunctions/has_key.html | 87 ++- .../intrinsic/metafunctions/size.html | 69 +-- .../intrinsic/metafunctions/swap.html | 64 +-- .../intrinsic/metafunctions/value_at.html | 87 ++- .../intrinsic/metafunctions/value_at_c.html | 87 ++- .../intrinsic/metafunctions/value_at_key.html | 87 ++- doc/html/fusion/sequence/operator.html | 14 +- .../fusion/sequence/operator/comparison.html | 19 +- .../sequence/operator/comparison/equal.html | 74 +-- .../operator/comparison/greater_than.html | 72 +-- .../comparison/greater_than_equal.html | 72 +-- .../operator/comparison/less_than.html | 72 +-- .../operator/comparison/less_than_equal.html | 72 +-- .../operator/comparison/not_equal.html | 72 +-- doc/html/fusion/sequence/operator/i_o.html | 31 +- doc/html/fusion/sequence/operator/i_o/in.html | 92 ++- .../fusion/sequence/operator/i_o/out.html | 92 ++- doc/html/fusion/support.html | 14 +- doc/html/fusion/support/category_of.html | 83 ++- doc/html/fusion/support/deduce.html | 33 +- doc/html/fusion/support/deduce_sequence.html | 33 +- doc/html/fusion/support/is_sequence.html | 74 +-- doc/html/fusion/support/is_view.html | 74 +-- doc/html/fusion/support/pair.html | 227 +++----- doc/html/fusion/support/tag_of.html | 74 +-- doc/html/fusion/tuple.html | 14 +- .../fusion/tuple/class_template_tuple.html | 19 +- .../class_template_tuple/construction.html | 30 +- .../class_template_tuple/element_access.html | 24 +- .../relational_operators.html | 36 +- .../tuple_creation_functions.html | 24 +- .../tuple_helper_classes.html | 24 +- doc/html/fusion/tuple/pairs.html | 30 +- doc/html/fusion/view.html | 19 +- doc/html/fusion/view/filter_view.html | 139 ++--- doc/html/fusion/view/iterator_range.html | 139 ++--- doc/html/fusion/view/joint_view.html | 139 ++--- doc/html/fusion/view/reverse_view.html | 119 ++-- doc/html/fusion/view/single_view.html | 119 ++-- doc/html/fusion/view/transform_view.html | 206 +++---- doc/html/fusion/view/zip_view.html | 121 ++-- doc/html/index.html | 25 +- example/cookbook/do_the_bind.cpp | 59 +- example/performance/functional.cpp | 22 +- test/Jamfile | 8 +- test/algorithm/all.cpp | 12 + test/compile_time/Makefile | 29 + test/compile_time/driver.hpp | 75 +++ test/compile_time/fold.cpp | 42 ++ test/compile_time/transform.cpp | 55 ++ test/compile_time/vector_construction.cpp | 28 + test/compile_time/vector_intrinsic.cpp | 59 ++ test/compile_time/vector_iteration.cpp | 38 ++ test/functional/invoke.cpp | 2 +- test/functional/make_unfused.cpp | 126 ++++ test/functional/unfused.cpp | 119 ++++ test/sequence/as_list.cpp | 2 +- test/sequence/as_map.cpp | 2 +- test/sequence/as_set.cpp | 2 +- test/sequence/as_vector.cpp | 2 +- test/sequence/boost_tuple.cpp | 11 + test/sequence/vector_n.cpp | 6 +- test/sequence/zip_view.cpp | 6 +- test/sequence/zip_view2.cpp | 6 +- 281 files changed, 9335 insertions(+), 11649 deletions(-) create mode 100644 changelist.txt create mode 100644 doc/html/fusion/functional/adapters/limits.html create mode 100644 doc/html/fusion/functional/adapters/unfused.html create mode 100644 doc/html/fusion/functional/generation/functions/mk_unfused.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_unfused.html create mode 100644 doc/html/fusion/functional/invocation/limits.html create mode 100644 test/compile_time/Makefile create mode 100644 test/compile_time/driver.hpp create mode 100644 test/compile_time/fold.cpp create mode 100644 test/compile_time/transform.cpp create mode 100644 test/compile_time/vector_construction.cpp create mode 100644 test/compile_time/vector_intrinsic.cpp create mode 100644 test/compile_time/vector_iteration.cpp create mode 100644 test/functional/make_unfused.cpp create mode 100644 test/functional/unfused.cpp diff --git a/changelist.txt b/changelist.txt new file mode 100644 index 00000000..bb4a21d6 --- /dev/null +++ b/changelist.txt @@ -0,0 +1,5 @@ +Interface Changes + +- June 12, 2009: vector0 is now vector0<> as per Boost Trac Ticket #1608 + to follow MPL more closely. + diff --git a/doc/Jamfile b/doc/Jamfile index 0feef100..b09cd291 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -28,4 +28,3 @@ boostbook quickbook ; - diff --git a/doc/adapted.qbk b/doc/adapted.qbk index a19696fd..53e4bfbd 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -157,7 +157,7 @@ necessary boilerplate to make an arbitrary struct into a __random_access_sequenc [heading Synopsis] BOOST_FUSION_ADAPT_STRUCT( - struct_name + struct_name, (member_type0, member_name0) (member_type1, member_name1) ... @@ -190,7 +190,7 @@ namespace qualified name of the struct to be converted. // demo::employee is now a Fusion sequence BOOST_FUSION_ADAPT_STRUCT( - demo::employee + demo::employee, (std::string, name) (int, age)) @@ -205,7 +205,7 @@ and __associative_sequence__. [heading Synopsis] BOOST_FUSION_ADAPT_ASSOC_STRUCT( - struct_name + struct_name, (member_type0, member_name0, key_type0) (member_type1, member_name1, key_type1) ... @@ -247,7 +247,7 @@ namespace qualified name of the struct to be converted. // It is also an associative sequence with // keys keys::name and keys::age present. BOOST_FUSION_ADAPT_ASSOC_STRUCT( - demo::employee + demo::employee, (std::string, name, keys::name) (int, age, keys::age)) diff --git a/doc/container.qbk b/doc/container.qbk index 62baca68..c859e4ae 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -48,7 +48,6 @@ sequence container, and in many cases the most efficient. [*Numbered forms] - template <> struct vector0; template @@ -629,14 +628,13 @@ 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 -`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: +The variadic function accepts `0` to `FUSION_MAX_SET_SIZE` elements, +where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_SET_SIZE` before including any Fusion header to change the +default. Example: - #define FUSION_MAX_VECTOR_SIZE 20 + #define FUSION_MAX_SET_SIZE 20 [heading Parameters] @@ -683,15 +681,14 @@ Create a __map__ from one or more key/data pairs. , 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_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: -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 + #define FUSION_MAX_MAP_SIZE 20 [heading Parameters] @@ -1063,14 +1060,13 @@ Returns the result type of __make_set__. 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: +The variadic function accepts `0` to `FUSION_MAX_SET_SIZE` elements, +where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_SET_SIZE` before including any Fusion header to change the +default. Example: - #define FUSION_MAX_VECTOR_SIZE 20 + #define FUSION_MAX_SET_SIZE 20 [heading Parameters] @@ -1114,14 +1110,13 @@ 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 -`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: +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_VECTOR_SIZE 20 + #define FUSION_MAX_MAP_SIZE 20 [heading Parameters] diff --git a/doc/functional.qbk b/doc/functional.qbk index 6b83c554..120ae0d2 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -10,7 +10,9 @@ Components to call functions and function objects and to make Fusion code callable through a function object interface. -/functional.hpp> +[heading Header] + + #include [heading Fused and unfused forms] @@ -55,6 +57,8 @@ 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. +Constructors can be called applying __boost_func_factory__. + [heading Making Fusion code callable through a function object interface] Transforming a fused function into its unfused counterpart allows to create @@ -62,11 +66,12 @@ 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, approximate solution to __the_forwarding_problem__. -Every generic variant has a corresponding generator function template that -returns an adapter instance for the given argument. +The library provides both a strictly typed and a generic variant for this +transformation. The latter should be used in combination with +__boost_func_forward__ to attack __the_forwarding_problem__. + +Both variants have a corresponding generator function template that returns an +adapter instance for the given argument. [/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] @@ -257,6 +262,8 @@ 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__). +Constructors can be called applying __boost_func_factory__. + [heading Synopsis] template< typename Function, @@ -289,7 +296,9 @@ arguments. [*Semantics]: Invokes `f` with the elements in `s` as arguments and returns the result of the call expression. -/functional/invocation/invoke.hpp> +[heading Header] + + #include [heading Example] __std_plus_doc__ add; @@ -300,6 +309,7 @@ the result of the call expression. * __invoke_function_object__ * __result_of_invoke__ * __fused__ +* __make_fused__ [endsect] @@ -352,7 +362,9 @@ implemented). [*Semantics]: Invokes `f` with the elements in `s` as arguments. -/functional/invocation/invoke_procedure.hpp> +[heading Header] + + #include [heading Example] __vector__ v(1,2); @@ -365,6 +377,7 @@ implemented). * __invoke_function_object__ * __result_of_invoke_procedure__ * __fused_procedure__ +* __make_fused_procedure__ [endsect] @@ -377,6 +390,8 @@ Calls a __poly_func_obj__ with the arguments from a __sequence__. The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object. +Constructors can be called applying __boost_func_factory__. + [heading Synopsis] template< typename Function, @@ -409,7 +424,9 @@ arguments. [*Semantics]: Invokes `f` with the elements in `s` as arguments and returns the result of the call expression. -/functional/invocation/invoke_function_object.hpp> +[heading Header] + + #include [heading Example] struct sub @@ -439,6 +456,7 @@ result of the call expression. * __invoke_procedure__ * __result_of_invoke_function_object__ * __fused_function_object__ +* __make_fused_function_object__ [endsect] @@ -520,6 +538,23 @@ Returns the result type of __invoke_function_object__. [endsect] [/ Metafunctions ] +[section Limits] + +[heading Header] + + #include + +[heading Macros] + +The following macros can be defined to change the maximum arity. +The default is 6. + +* BOOST_FUSION_INVOKE_MAX_ARITY +* BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY +* BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY + +[endsect] + [endsect] [/ Invocation ] [/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] @@ -551,7 +586,9 @@ 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__). -/functional/adapter/fused.hpp> +[heading Header] + + #include [heading Synopsis] template @@ -594,6 +631,7 @@ __boost_shared_ptr_call__). * __fused_procedure__ * __fused_function_object__ * __invoke__ +* __make_fused__ * __deduce__ [endsect] @@ -627,7 +665,9 @@ The target function must not be a pointer to a member object (dereferencing such a pointer without returning anything does not make sense, so this case is not implemented). -/functional/adapter/fused_procedure.hpp> +[heading Header] + + #include [heading Synopsis] template @@ -683,6 +723,7 @@ is not implemented). * __fused__ * __fused_function_object__ * __invoke_procedure__ +* __make_fused_procedure__ [endsect] @@ -700,7 +741,9 @@ 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). -/functional/adapter/fused_function_object.hpp> +[heading Header] + + #include [heading Synopsis] template @@ -773,150 +816,50 @@ is held by value, the adapter is const). * __fused__ * __fused_procedure__ * __invoke_function_object__ +* __make_fused_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. - -[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__.] - -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). - -/functional/adapter/unfused_generic.hpp> - -[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; - - template - struct result< Self(Seq) > - : result_of::invoke< Function, typename result_of::push_front< - typename remove_reference::type, T>::type > - { }; - - template - typename result< void(Seq) >::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(), 1)(0.5f) == 1.5f); - } - -[heading See also] -* __unfused_lvalue_args__ -* __unfused_rvalue_args__ -* __unfused_typed__ -* __deduce__ -* __deduce_sequence__ - -[endsect] - - -[section unfused_lvalue_args] +[section unfused] [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. +object. + +The nullary overload of the call operator can be removed by setting the +second template parameter to `false`, which is very useful if the result type +computation would result in a compile error, otherwise (nullary call +operator's prototypes can't be templates and thus are instantiated as early +as the class template). + +Only __lvalue__ arguments are accepted. To overcome this limitation, apply +__boost_func_forward__. 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 +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). +object is held by value, the adapter is const. -/functional/adapter/unfused_lvalue_args.hpp> +[heading Header] + + #include [heading Synopsis] - template - class unfused_lvalue_args; + template + class unfused; [heading Template parameters] [table [[Parameter] [Description] [Default]] [[`Function`] [A unary __poly_func_obj__] []] + [[`AllowNullary`] [Boolean constant] [true]] ] [heading Model of] @@ -927,7 +870,7 @@ object is held by value, the adapter is const). [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`] [The type `unfused`]] [[`ul`] [An instance of `UL`, initialized with `f`]] [[`a0`...`aN`] [Arguments to `ul`]] ] @@ -959,97 +902,15 @@ object is held by value, the adapter is const). void try_it() { - unfused_lvalue_args increment; + unfused 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 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). - -/functional/adapter/unfused_rvalue_args.hpp> - -[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__ +* __make_unfused__ [endsect] @@ -1078,7 +939,9 @@ Therefore the adapter is always treated as if it was const. ] non-reference elements, the element is copied only once - the call operator's signature is optimized automatically to avoid by-value parameters.] -/functional/adapter/unfused_typed.hpp> +[heading Header] + + #include [heading Synopsis] template @@ -1169,7 +1032,7 @@ signature is optimized automatically to avoid by-value parameters.] fused_parallel_adder(tie) ); } }; - unfused_lvalue_args parallel_add; + unfused parallel_add; void try_it() { @@ -1183,14 +1046,29 @@ signature is optimized automatically to avoid by-value parameters.] } [heading See also] -* __unfused_generic__ -* __unfused_lvalue_args__ -* __unfused_rvalue_args__ +* __unfused__ * __deduce__ * __deduce_sequence__ [endsect] +[section Limits] + +[heading Header] + + #include + +[heading Macros] + +The following macros can be defined to change the maximum arity. +The value used for these macros must not exceed `FUSION_MAX_VECTOR_SIZE`. +The default is 6. + +* BOOST_FUSION_UNFUSED_MAX_ARITY +* BOOST_FUSION_UNFUSED_TYPE_MAX_ARITY + +[endsect] + [endsect] [/ Adapters] [/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] @@ -1353,16 +1231,16 @@ The usual __element_conversion__ is applied to the target function. [endsect] -[section:mk_unfused_genrc make_unfused_generic] +[section:mk_unfused make_unfused] [heading Description] -Creates a __unfused_generic__ adapter for a given, unary __poly_func_obj__. +Creates a __unfused__ 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); + inline typename __result_of_make_unfused__::type + make_unfused(F const & f); [heading Parameters] [table @@ -1372,85 +1250,16 @@ The usual __element_conversion__ is applied to the target function. [heading Expression Semantics] - make_unfused_generic(f); + make_unfused(f); -[*Return type]: A specialization of __unfused_generic__. +[*Return type]: A specialization of __unfused__. -[*Semantics]: Returns a __unfused_generic__ adapter for `f`. +[*Semantics]: Returns a __unfused__ adapter for `f`. [heading Header] - #include - #include - -[heading Example] - struct bottles_song - { - typedef void result_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:mk_unfused_lvargs 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 - #include + #include + #include [heading Example] struct fused_incrementer @@ -1471,73 +1280,14 @@ The usual __element_conversion__ is applied to the target function. void try_it() { int a = 2; char b = 'X'; - make_unfused_lvalue_args(fused_incrementer())(a,b); + make_unfused(fused_incrementer())(a,b); assert(a == 3 && b == 'Y'); } [heading See also] -* __unfused_lvalue_args__ +* __unfused__ * __deduce__ -* __result_of_make_unfused_lvalue_args__ - -[endsect] - -[section:mk_unfused_rvargs 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 - #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__ +* __result_of_make_unfused__ [endsect] @@ -1620,78 +1370,28 @@ Returns the result type of __make_fused_function_object__. [endsect] -[section:mk_unfused_genrc make_unfused_generic] +[section:mk_unfused make_unfused] [heading Description] -Returns the result type of __make_unfused_generic__. +Returns the result type of __make_unfused__. [heading Header] - #include - #include + #include + #include [heading Synopsis] namespace result_of { template - struct make_unfused_generic + struct make_unfused { typedef __unspecified__ type; }; } [heading See also] -* __make_unfused_generic__ - -[endsect] - -[section:mk_unfused_lvargs make_unfused_lvalue_args] - -[heading Description] -Returns the result type of __make_unfused_lvalue_args__. - -[heading Header] - - #include - #include - -[heading Synopsis] - namespace result_of - { - template - struct make_unfused_lvalue_args - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __make_unfused_lvalue_args__ - -[endsect] - -[section:mk_unfused_rvargs make_unfused_rvalue_args] - -[heading Description] -Returns the result type of __make_unfused_rvalue_args__. - -[heading Header] - - #include - #include - -[heading Synopsis] - namespace result_of - { - template - struct make_unfused_rvalue_args - { - typedef __unspecified__ type; - }; - } - -[heading See also] -* __make_unfused_rvalue_args__ +* __make_unfused__ [endsect] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 69dd235e..f48ff84a 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -49,6 +49,8 @@ [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/shared_ptr.htm `boost::shared_ptr`]] +[def __boost_func_forward__ [@http://www.boost.org/libs/functional/forward/doc/html/index.html Boost.Functional/Forward]] +[def __boost_func_factory__ [@http://www.boost.org/libs/functional/factory/doc/html/index.html Boost.Functional/Factory]] [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`]] @@ -264,9 +266,7 @@ [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__ [link fusion.functional.adapters.unfused `unfused`]] [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_proc `invoke_procedure`]] @@ -274,18 +274,14 @@ [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 __make_unfused__ [link fusion.functional.generation.functions.mk_unfused `make_unfused`]] [def __result_of_invoke__ [link fusion.functional.invocation.metafunctions.invoke `result_of::invoke`]] [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 __result_of_make_unfused__ [link fusion.functional.generation.metafunctions.mk_unfused `make_unfused`]] [def __recursive_inline__ [link fusion.notes.recursive_inlined_functions Recursive Inlined Functions]] [def __overloaded_functions__ [link fusion.notes.overloaded_functions Overloaded Functions]] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 803937aa..77569ed6 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,10 +3,10 @@ Acknowledgements - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +

    Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey Gurtovoy, Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 8a1358ae..5dd7f165 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -3,10 +3,10 @@ Adapted - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext

    - +
    + +
    +
    std::pair
    mpl sequence
    @@ -46,11 +50,10 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

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

    @@ -60,15 +63,13 @@ and Fusion. To make Fusion sequences fully conforming MPL sequences, include:

    -
    -#include <boost/fusion/mpl.hpp>
    +
    #include <boost/fusion/mpl.hpp>
     

    If you want bi-directional adaptation to and from MPL and Fusion, simply include:

    -
    -#include <boost/fusion/include/mpl.hpp>
    +
    #include <boost/fusion/include/mpl.hpp>
     

    The header includes all the necessary headers. diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index 2232d58c..fef3a05e 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -3,10 +3,10 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext

    - +

    - + Description

    @@ -38,11 +42,10 @@ Sequence.

    - + Synopsis

    -
    -BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    +
    BOOST_FUSION_ADAPT_ASSOC_STRUCT(
         struct_name
         (member_type0, member_name0, key_type0)
         (member_type1, member_name1, key_type1)
    @@ -50,7 +53,7 @@
         )
     

    - + Semantics

    @@ -70,19 +73,17 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    -
    -#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
    +
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     

    - + Example

    -
    -namespace demo
    +
    namespace demo
     {
         struct employee
         {
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 49146958..9f4bb3aa 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -3,10 +3,10 @@
     
      BOOST_FUSION_ADAPT_STRUCT
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +

    - + Description

    @@ -36,11 +40,10 @@ Access Sequence.

    - + Synopsis

    -
    -BOOST_FUSION_ADAPT_STRUCT(
    +
    BOOST_FUSION_ADAPT_STRUCT(
         struct_name
         (member_type0, member_name0)
         (member_type1, member_name1)
    @@ -48,7 +51,7 @@
         )
     

    - + Semantics

    @@ -65,19 +68,17 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header

    -
    -#include <boost/fusion/adapted/struct/adapt_struct.hpp>
    +
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     

    - + Example

    -
    -namespace demo
    +
    namespace demo
     {
         struct employee
         {
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index aa011b30..be20f041 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -3,10 +3,10 @@
     
     boost::array
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,8 +23,12 @@
     PrevUpHomeNext
     
    - +
    + +
    +

    This module provides adapters for boost::array. Including the module header makes boost::array @@ -33,26 +37,24 @@ Access Sequence.

    - + Header

    -
    -#include <boost/fusion/adapted/array.hpp>
    +
    #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     

    - + Model of

    - + Example

    -
    -boost::array<int,3> arr = {{1,2,3}};
    +
    boost::array<int,3> arr = {{1,2,3}};
     
     std::cout << *begin(arr) << std::endl;
     std::cout << *next(begin(arr)) << std::endl;
    @@ -61,7 +63,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index 394ece3e..7967d788 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -3,10 +3,10 @@ boost::tuple - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext

    - +
    + +
    +

    This module provides adapters for boost::tuple. Including the module header makes boost::tuple @@ -33,30 +37,28 @@ Sequence.

    - + Header

    -
    -#include <boost/fusion/adapted/boost_tuple.hpp>
    +
    #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     

    - + Model of

    - + Example

    -
    -boost::tuple<int,std::string> example_tuple(101, "hello");
    +
    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

    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 6932d063..d5e2472f 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -3,10 +3,10 @@ mpl sequence - - + + - + @@ -23,23 +23,26 @@ PrevUpHomeNext

    - +
    + +
    +

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

    - + Header

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

    - + Model of

      @@ -63,11 +66,10 @@

    - + Example

    -
    -mpl::vector_c<int, 123, 456> vec_c;
    +
    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;
    @@ -77,7 +79,7 @@
     std::cout << at_c<1>(v) << std::endl;
     

    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 53e5cbd6..ab190863 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -3,10 +3,10 @@ std::pair - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext

    - +
    + +
    +

    This module provides adapters for std::pair. Including the module header makes std::pair @@ -33,32 +37,30 @@ Access Sequence.

    - + Header

    -
    -#include <boost/fusion/adapted/std_pair.hpp>
    +
    #include <boost/fusion/adapted/std_pair.hpp>
     #include <boost/fusion/include/std_pair.hpp>
     

    - + Model of

    - + Example

    -
    -std::pair<int, std::string> p(123, "Hola!!!");
    +
    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

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index cf44e1d8..0a67e17a 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -3,10 +3,10 @@ Algorithm - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext

    - +
    + +
    +
    Iteration
    @@ -43,7 +47,7 @@

    - + Lazy Evaluation

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

    - + Sequence Extension

    @@ -89,11 +93,10 @@ functions to convert back to the original sequence type.

    - + Header

    -
    -#include <boost/fusion/algorithm.hpp>
    +
    #include <boost/fusion/algorithm.hpp>
     #include <boost/fusion/include/algorithm.hpp>
     
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html index 5dc0a880..bfaeb862 100644 --- a/doc/html/fusion/algorithm/iteration.html +++ b/doc/html/fusion/algorithm/iteration.html @@ -3,10 +3,10 @@ Iteration - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    Functions
    Metafunctions
    @@ -34,11 +38,10 @@ a sequence repeatedly applying an operation to its elements.

    - + Header

    -
    -#include <boost/fusion/algorithm/iteration.hpp>
    +
    #include <boost/fusion/algorithm/iteration.hpp>
     #include <boost/fusion/include/iteration.hpp>
     
    diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html index 49c28323..dcba7466 100644 --- a/doc/html/fusion/algorithm/iteration/functions.html +++ b/doc/html/fusion/algorithm/iteration/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    fold
    accumulate
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index afa5797f..f984b2f8 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -3,10 +3,10 @@ accumulate - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -37,11 +41,10 @@ and the previous state.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename State,
         typename F
    @@ -50,7 +53,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -58,91 +61,66 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    -

    +

    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 -

    -
    -

    +

    Operation's argument -

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

    Return type: Any type @@ -152,26 +130,24 @@ 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>
    +
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    -
    -struct make_string
    +
    struct make_string
     {
         typedef std::string result_type;
     
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index 5602ce26..096f2b51 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -3,10 +3,10 @@
     
     fold
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    +
    +fold +
    +
    +
    - + Description

    @@ -37,11 +41,10 @@ and the previous state.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename State,
         typename F
    @@ -50,7 +53,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -58,91 +61,66 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    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 -

    -
    -

    +

    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 -

    -
    -

    +

    Operation's argument -

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

    Return type: Any type @@ -152,26 +130,24 @@ 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>
    +
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    -
    -struct make_string
    +
    struct make_string
     {
         typedef std::string result_type;
     
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index 6e1f5acb..8e50a7e9 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    @@ -3,10 +3,10 @@
     
     for_each
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

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

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F
         >
    @@ -45,7 +48,7 @@
         Sequence& seq, F const& f);
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -53,73 +56,54 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 Regular Callable Object -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -for_each(seq, f);
    +
    for_each(seq, f);
     

    Return type: void @@ -129,26 +113,24 @@ in seq.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/iteration/for_each.hpp>
    +
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    -
    -struct increment
    +
    struct increment
     {
         template<typename T>
         void operator()(T& t) const
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html
    index 6e338e90..d4d69116 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html
    @@ -3,10 +3,10 @@
     
     Metafunctions
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,8 +23,12 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    fold
    accumulate
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 10544a1a..7b12ff9f 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -3,10 +3,10 @@ accumulate - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename State,
         typename F>
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -55,88 +58,63 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    The sequence to iterate -

    -
    -

    +

    State -

    -
    -

    +

    Any type -

    -
    -

    +

    The initial state for the first application of F -

    -
    -

    +

    F -

    -
    -

    +

    boost::result_of<F(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 -

    -
    -

    +

    The operation to be applied on forward traversal -

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

    Return type: Any type @@ -149,18 +127,17 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/iteration/accumulate.hpp>
    +
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html index 52f2f29f..77ee02f3 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html @@ -3,10 +3,10 @@ fold - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +fold +
    +
    +
    - + Description

    Returns the result type of fold.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename State,
         typename F>
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -55,88 +58,63 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    The sequence to iterate -

    -
    -

    +

    State -

    -
    -

    +

    Any type -

    -
    -

    +

    The initial state for the first application of F -

    -
    -

    +

    F -

    -
    -

    +

    boost::result_of<F(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 -

    -
    -

    +

    The operation to be applied on forward traversal -

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

    Return type: Any type @@ -149,18 +127,17 @@ and binary function object or function pointer of type F.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/iteration/fold.hpp>
    +
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html index f20f2608..b5eecf0a 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html @@ -3,10 +3,10 @@ for_each - - + + - + @@ -23,22 +23,25 @@ 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<
    +
    template<
         typename Sequence,
         typename F
     >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    F -

    -
    -

    +

    Any type -

    -
    -

    +

    Operation's argument -

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

    Return type: void. @@ -131,18 +115,17 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/iteration/for_each.hpp>
    +
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html index ce86f7dc..fc3db9fa 100644 --- a/doc/html/fusion/algorithm/query.html +++ b/doc/html/fusion/algorithm/query.html @@ -3,10 +3,10 @@ Query - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    +

    +Query +

    +
    +
    Functions
    Metafunctions
    @@ -33,11 +37,10 @@ The query algorithms provide support for searching and analyzing sequences.

    - + Header

    -
    -#include <boost/fusion/algorithm/query.hpp>
    +
    #include <boost/fusion/algorithm/query.hpp>
     #include <boost/fusion/include/query.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html index 95f520ea..67be2efb 100644 --- a/doc/html/fusion/algorithm/query/functions.html +++ b/doc/html/fusion/algorithm/query/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    any
    all
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index f390c520..bd8d41b4 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -3,10 +3,10 @@ all - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    -
    -all
    +
    +
    +all +
    +
    +
    - + Description

    @@ -37,11 +41,10 @@ element of seq.

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

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -57,71 +60,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -all(seq, f);
    +
    all(seq, f);
     

    Return type: bool @@ -133,26 +117,24 @@ element e in seq.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/query/all.hpp>
    +
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    -
    -struct odd
    +
    struct odd
     {
         template<typename T>
         bool operator()(T t) const
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index 6fa8e22e..aac7fb4d 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/query/functions/any.html
    @@ -3,10 +3,10 @@
     
     any
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    -
    -any
    +
    +
    +any +
    +
    +
    - + Description

    @@ -37,11 +41,10 @@ least one element of seq.

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

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -57,71 +60,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression semantics
    -
    -any(seq, f);
    +
    any(seq, f);
     

    Return type: bool @@ -133,26 +117,24 @@ element e in seq.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/query/any.hpp>
    +
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    -
    -struct odd
    +
    struct odd
     {
         template<typename T>
         bool operator()(T t) const
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index 768ad2c9..71990376 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/query/functions/count.html
    @@ -3,10 +3,10 @@
     
     count
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    +
    +count +
    +
    +
    - + Description

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

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

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -53,72 +56,53 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -count(seq, t);
    +
    count(seq, t);
     

    Return type: int @@ -129,26 +113,24 @@ t in seq.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/query/count.hpp>
    +
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    -
    -const vector<double,int,int> vec(1.0,2,3);
    +
    const vector<double,int,int> vec(1.0,2,3);
     assert(count(vec,2) == 1);
     
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html index 9324da53..85036034 100644 --- a/doc/html/fusion/algorithm/query/functions/count_if.html +++ b/doc/html/fusion/algorithm/query/functions/count_if.html @@ -3,10 +3,10 @@ count_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ a given unary function object evaluates to true.

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

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -54,71 +57,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -count_if(seq, f)
    +
    count_if(seq, f)
     

    Return type: int @@ -128,26 +112,24 @@ in seq where f evaluates to true.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/query/count_if.hpp>
    +
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    -
    -const vector<int,int,int> vec(1,2,3);
    +
    const vector<int,int,int> vec(1,2,3);
     assert(count_if(vec,odd()) == 2);
     
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html index 61426ca5..4168cceb 100644 --- a/doc/html/fusion/algorithm/query/functions/find.html +++ b/doc/html/fusion/algorithm/query/functions/find.html @@ -3,10 +3,10 @@ find - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +find +
    +
    +
    - + Description

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

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

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -58,69 +61,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    The sequence to search -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    The type to search for -

    -
    - + Expression Semantics
    -
    -find<T>(seq)
    +
    find<T>(seq)
     

    Return type: A model of the same iterator @@ -133,26 +117,24 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/query/find.hpp>
    +
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    -
    -const vector<char,int> vec('a','0');
    +
    const vector<char,int> vec('a','0');
     assert(*find<int>(vec) == '0');
     assert(find<double>(vec) == end(vec));
     
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html index 373bdb84..2acdceaf 100644 --- a/doc/html/fusion/algorithm/query/functions/find_if.html +++ b/doc/html/fusion/algorithm/query/functions/find_if.html @@ -3,10 +3,10 @@ find_if - - + + - + @@ -23,23 +23,26 @@ 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<
    +
    template<
         typename F,
         typename Sequence
         >
    @@ -52,7 +55,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -60,70 +63,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    The sequence to search -

    -
    -

    +

    F -

    -
    -

    +

    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 @@ -137,7 +121,7 @@ if there is no such element.

    - + Complexity

    @@ -147,11 +131,10 @@ /algorithm/query/find_if.hpp>

    - + Example
    -
    -const vector<double,int> vec(1.0,2);
    +
    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/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html index b27f3216..49dc1b6c 100644 --- a/doc/html/fusion/algorithm/query/functions/none.html +++ b/doc/html/fusion/algorithm/query/functions/none.html @@ -3,10 +3,10 @@ none - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +none +
    +
    +
    - + Description

    @@ -37,11 +41,10 @@ element of seq.

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

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -57,71 +60,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -none(seq, f);
    +
    none(seq, f);
     

    Return type: bool @@ -133,26 +117,24 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/query/none.hpp>
    +
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    -
    -struct odd
    +
    struct odd
     {
         template<typename T>
         bool operator()(T t) const
    diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html
    index 51fd7502..03aa9147 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions.html
    @@ -3,10 +3,10 @@
     
     Metafunctions
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,8 +23,12 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    any
    all
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index 38f893ae..2a568658 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -3,10 +3,10 @@ all - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    -
    -all
    +
    +
    +all +
    +
    +
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F
         >
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -55,71 +58,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    F -

    -
    -

    +

    A model of unary Polymorphic Function Object -

    -
    -

    +

    Operation's argument -

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

    Return type: bool. @@ -134,18 +118,17 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/query/all.hpp>
    +
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html index 7f1f5dfb..bd2847d5 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/any.html +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html @@ -3,10 +3,10 @@ any - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    -
    -any
    +
    +
    +any +
    +
    +
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F
         >
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -55,71 +58,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    F -

    -
    -

    +

    A model of unary Polymorphic Function Object -

    -
    -

    +

    Operation's argument -

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

    Return type: bool. @@ -134,18 +118,17 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/query/any.hpp>
    +
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html index ba0a6c9d..09e508ab 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/count.html +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html @@ -3,10 +3,10 @@ count - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +count +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ given the sequence and search types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    heading Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::count<T>::type
    +
    result_of::count<T>::type
     

    Return type: int. @@ -129,18 +113,17 @@ int.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/query/count.hpp>
    +
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html index ac63d902..d6146f03 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html @@ -3,10 +3,10 @@ count_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ given the sequence and predicate types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Pred
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    Pred -

    -
    -

    +

    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. @@ -129,18 +113,17 @@ always int.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/query/count_if.hpp>
    +
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html index 9292780b..aab23421 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/find.html +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html @@ -3,10 +3,10 @@ find - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +find +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ given the sequence and search types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    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 @@ -131,18 +115,17 @@ if there is no such element.

    - + Complexity

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

    - + Header
    -
    -#include <boost/fusion/algorithm/query/find.hpp>
    +
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html index d5b827c6..9969c76a 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html @@ -3,10 +3,10 @@ find_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ given the sequence and predicate types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Pred
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -56,70 +59,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    Pred -

    -
    -

    +

    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 @@ -132,18 +116,17 @@ 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>
    +
    #include <boost/fusion/algorithm/query/find_if.hpp>
     #include <boost/fusion/include/find_if.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html index e4550802..c304be6f 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/none.html +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html @@ -3,10 +3,10 @@ none - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +none +
    +
    +
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F
         >
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -55,71 +58,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    F -

    -
    -

    +

    A model of unary Polymorphic Function Object -

    -
    -

    +

    Operation's argument -

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

    Return type: bool. @@ -134,18 +118,17 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/query/none.hpp>
    +
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html index 7bc9e08f..8fd2b42b 100644 --- a/doc/html/fusion/algorithm/transformation.html +++ b/doc/html/fusion/algorithm/transformation.html @@ -3,10 +3,10 @@ Transformation - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    Functions
    Metafunctions
    @@ -46,11 +50,10 @@

    - + Header

    -
    -#include <boost/fusion/algorithm/transformation.hpp>
    +
    #include <boost/fusion/algorithm/transformation.hpp>
     #include <boost/fusion/include/transformation.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html index c6a3c502..99877326 100644 --- a/doc/html/fusion/algorithm/transformation/functions.html +++ b/doc/html/fusion/algorithm/transformation/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    filter
    filter_if
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index 756245e2..feb5afff 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -3,10 +3,10 @@ clear - - + + - + @@ -23,27 +23,30 @@ PrevUpHomeNext
    - +
    +
    +clear +
    +
    +
    - + Description

    clear returns an empty sequence.

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

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -51,50 +54,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -clear(seq);
    +
    clear(seq);
     

    Return type: A model of

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/clear.hpp>
    +
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/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/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html index c20a213c..ea461dd4 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html @@ -3,10 +3,10 @@ erase - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +erase +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ those at a specified iterator, or between two iterators.

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

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -62,91 +65,66 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -erase(seq, pos);
    +
    erase(seq, pos);
     

    Return type: A model of seq except the element at pos.

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

    Return type: A model of first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/erase.hpp>
    +
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    -
    -const vector<int, double, char> vec(1, 2.0, 'c');
    +
    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/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html index 6ff008a2..e1866d08 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html @@ -3,10 +3,10 @@ erase_key - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -39,18 +43,17 @@ with a given key.

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

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -58,69 +61,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Associative Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    Key -

    -
    -

    +

    Any type -

    -
    -

    +

    Key to erase -

    -
    - + Expression Semantics
    -
    -erase_key<Key>(seq);
    +
    erase_key<Key>(seq);
     

    Return type: A model of Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/erase_key.hpp>
    +
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    -
    -assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    +
    assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html index dd4aed39..737dd46c 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html @@ -3,10 +3,10 @@ filter - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +filter +
    +
    +
    - + Description

    @@ -34,18 +38,17 @@ the elements of a specified type.

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

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -53,69 +56,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    The type to retain -

    -
    - + Expression Semantics
    -
    -filter<T>(seq);
    +
    filter<T>(seq);
     

    Return type: A model of filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/filter.hpp>
    +
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    -
    -const vector<int,int,long,long> vec(1,2,3,4);
    +
    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/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html index 65de295c..195e3cb3 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html @@ -3,10 +3,10 @@ filter_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -35,18 +39,17 @@ Lambda Expression evaluates to boost::mpl::true_.

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

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -54,70 +57,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    Pred -

    -
    -

    +

    A unary MPL Lambda Expression -

    -
    -

    +

    The predicate to filter by -

    -
    - + Expression Semantics
    -
    -filter_if<Pred>(seq);
    +
    filter_if<Pred>(seq);
     

    Return type: A model of

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/filter_if.hpp>
    +
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    -
    -const vector<int,int,double,double> vec(1,2,3.0,4.0);
    +
    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/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html index 8dcfb8e9..fafd881e 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html @@ -3,10 +3,10 @@ insert - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +insert +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ element inserted the position described by a given iterator.

    - + Synposis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Pos,
         typename T
    @@ -46,7 +49,7 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -54,88 +57,63 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -insert(seq, p, t);
    +
    insert(seq, p, t);
     

    Return type: A model of pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/insert.hpp>
    +
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    -
    -const vector<int,int> vec(1,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/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html index 3b36d880..89f5ec2c 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html @@ -3,10 +3,10 @@ insert_range - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ iterator.

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

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -55,90 +58,65 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -insert(seq, pos, range);
    +
    insert(seq, pos, range);
     

    Return type: A model of

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/insert_range.hpp>
    +
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    -
    -const vector<int,int> vec(1,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/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html index 9bcb5c97..a068bd71 100644 --- a/doc/html/fusion/algorithm/transformation/functions/join.html +++ b/doc/html/fusion/algorithm/transformation/functions/join.html @@ -3,10 +3,10 @@ join - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +join +
    +
    +
    - + Description

    @@ -34,17 +38,16 @@ first followed by the elements of the second.

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

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -52,71 +55,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    lhs -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    rhs -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -join(lhs, rhs);
    +
    join(lhs, rhs);
     

    Return type: A model of

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/join.hpp>
    +
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    -
    -vector<int,char> v1(1, 'a');
    +
    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/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html index 91dcfc3c..c7ecff2e 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html @@ -3,10 +3,10 @@ pop_back - - + + - + @@ -23,27 +23,30 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

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

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

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -51,50 +54,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -pop_back(seq);
    +
    pop_back(seq);
     

    Return type: A model of seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/pop_back.hpp>
    +
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    -
    -assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    +
    assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html index 70cc977c..a3ce3e51 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html @@ -3,10 +3,10 @@ pop_front - - + + - + @@ -23,27 +23,30 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

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

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

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -51,50 +54,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -pop_front(seq);
    +
    pop_front(seq);
     

    Return type: A model of seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/pop_front.hpp>
    +
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    -
    -assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    +
    assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html index 01209484..2040cd1f 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html @@ -3,10 +3,10 @@ push_back - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

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

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

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -53,69 +56,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    t -

    -
    -

    +

    Any type -

    -
    -

    +

    The value to add to the end -

    -
    - + Expression Semantics
    -
    -push_back(seq, t);
    +
    push_back(seq, t);
     

    Return type: A model of seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/push_back.hpp>
    +
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    -
    -assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    +
    assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html index e152ca6c..09bece0c 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html @@ -3,10 +3,10 @@ push_front - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

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

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

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -53,69 +56,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    t -

    -
    -

    +

    Any type -

    -
    -

    +

    The value to add to the beginning -

    -
    - + Expression Semantics
    -
    -push_back(seq, t);
    +
    push_back(seq, t);
     

    Return type: A model of seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/push_front.hpp>
    +
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    -
    -assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    +
    assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html index 5e60dd9b..db4100b6 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html @@ -3,10 +3,10 @@ remove - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +remove +
    +
    +
    - + Description

    @@ -34,18 +38,17 @@ except those of a given type.

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

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -53,69 +56,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    Type to remove -

    -
    - + Expression Semantics
    -
    -remove<T>(seq);
    +
    remove<T>(seq);
     

    Return type: A model of remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/remove.hpp>
    +
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    -
    -const vector<int,double> vec(1,2.0);
    +
    const vector<int,double> vec(1,2.0);
     assert(remove<double>(vec) == make_vector(1));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html index de7c3010..2f65e2d2 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html @@ -3,10 +3,10 @@ remove_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,18 +38,17 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Pred,
         typename Sequence
         >
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -53,70 +56,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    Pred -

    -
    -

    +

    A model of unary MPL Lambda Expression -

    -
    -

    +

    Removal predicate -

    -
    - + Expression Semantics
    -
    -remove_if<Pred>(seq);
    +
    remove_if<Pred>(seq);
     

    Return type: A model of >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/remove_if.hpp>
    +
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    -
    -const vector<int,double> vec(1,2.0);
    +
    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/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html index 23001b52..aca836da 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html @@ -3,10 +3,10 @@ replace - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ a new value.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -46,7 +49,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -54,31 +57,22 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Forward Sequence, e == old_value @@ -86,58 +80,42 @@ 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
    -
    -replace(seq, old_value, new_value);
    +
    replace(seq, old_value, new_value);
     

    Return type: A model of old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/replace.hpp>
    +
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    -
    -assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    +
    assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html index 45044eab..61d37669 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html @@ -3,10 +3,10 @@ replace_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -35,11 +39,10 @@ replaced with a new value.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F,
         typename T>
    @@ -47,7 +50,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -55,88 +58,63 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -replace_if(seq, f, new_value);
    +
    replace_if(seq, f, new_value);
     

    Return type: A model of true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/replace_if.hpp>
    +
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    -
    -struct odd
    +
    struct odd
     {
         template<typename T>
         bool operator()(T t) const
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index 11bf809c..4e1f3781 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -3,10 +3,10 @@
     
     reverse
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,27 +23,30 @@
     PrevUpHomeNext
     
     
    - +
    + +
    +
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    -
    -template<
    +
    template<
         typename Sequence
         >
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -51,50 +54,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    A model of Bidirectional Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -reverse(seq);
    +
    reverse(seq);
     

    Return type: A model of

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/reverse.hpp>
    +
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    -
    -assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    +
    assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html index 135e5489..5b0ee247 100644 --- a/doc/html/fusion/algorithm/transformation/functions/transform.html +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html @@ -3,10 +3,10 @@ transform - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -37,12 +41,11 @@ of seq.

    - + Unary version synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F
         >
    @@ -50,7 +53,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -58,72 +61,53 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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<F(E)>::type is the return type of f when called with a value of each element type E. -

    -
    -

    +

    Transformation function -

    -
    - + Expression Semantics
    -
    -transform(seq, f);
    +
    transform(seq, f);
     

    Return type: A model of seq.

    - + Binary version synopsis
    -
    -template<
    +
    template<
         typename Sequence1,
         typename Sequence2,
         typename F
    @@ -150,7 +133,7 @@
         Sequence1 const& seq1, Sequence2 const& seq2, F f);
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -158,81 +141,57 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    @@ -248,26 +207,24 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/transform.hpp>
    +
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    -
    -struct triple
    +
    struct triple
     {
         typedef int result_type;
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index 199ab464..45e2d273 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -3,10 +3,10 @@
     
     zip
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    -
    -zip
    +
    +
    +zip +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ of the members of the component sequences.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence1,
         typename Sequence2,
         ...
    @@ -48,7 +51,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -56,50 +59,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq1 to seqN -

    -
    -

    +

    Each sequence is a model of Forward Sequence. -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -zip(seq1, seq2, ... seqN);
    +
    zip(seq1, seq2, ... seqN);
     

    Return type: A model of 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/zip.hpp>
    +
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    -
    -vector<int,char> v1(1, 'a');
    +
    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/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html index 9ffc7d57..f51eb53b 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    filter
    filter_if
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index 8fb27b3c..6c591a83 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -3,10 +3,10 @@ clear - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +clear +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ type.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence
         >
     struct clear
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -55,48 +58,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::clear<Sequence>::type
    +
    result_of::clear<Sequence>::type
     

    Return type: A model of Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/clear.hpp>
    +
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html index c32a4b43..efa53477 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html @@ -3,10 +3,10 @@ erase - - + + - + @@ -23,22 +23,25 @@ PrevUpHomeNext
    - +
    +
    +erase +
    +
    +

    Returns the result type of erase, given the input sequence and range delimiting iterator types.

    - + Description
    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename It1,
         typename It2 = unspecified>
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.83. Parameters

    +

    Table 1.83. Parameters

    @@ -56,90 +59,65 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -result_of::erase<Sequence, It1>::type
    +
    result_of::erase<Sequence, It1>::type
     

    Return type: A model of 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 It2 removed.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/erase.hpp>
    +
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html index 85a718b6..dbfd5bbf 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html @@ -3,10 +3,10 @@ erase_key - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ and key types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Key
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.84. Parameters

    +

    Table 1.84. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Associative Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    Key -

    -
    -

    +

    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 Key.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/erase_key.hpp>
    +
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html index ba16d426..7557f2f8 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html @@ -3,10 +3,10 @@ filter - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +filter +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ and type to retain.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    Type to retain -

    -
    - + Expression Semantics
    -
    -result_of::filter<Sequence, T>::type
    +
    result_of::filter<Sequence, T>::type
     

    Return type: A model of boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/filter.hpp>
    +
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html index 602f8fa4..b64f9a23 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html @@ -3,10 +3,10 @@ filter_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -35,11 +39,10 @@ Lambda Expression predicate type.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Pred
         >
    @@ -49,7 +52,7 @@
     };
     
    -

    Table 1.74. Parameter

    +

    Table 1.74. Parameter

    @@ -57,70 +60,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    Pred -

    -
    -

    +

    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 boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/filter_if.hpp>
    +
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html index 5bce505a..3643e325 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html @@ -3,10 +3,10 @@ insert - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +insert +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ position iterator and insertion types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Position,
         typename T
    @@ -49,7 +52,7 @@
     };
     
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -57,88 +60,63 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -result_of::insert<Sequence, Position, T>::type
    +
    result_of::insert<Sequence, Position, T>::type
     

    Return type: A model of Sequence.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/insert.hpp>
    +
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html index 236e8355..270214e6 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html @@ -3,10 +3,10 @@ insert_range - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Position,
         typename Range
    @@ -49,7 +52,7 @@
     };
     
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -57,90 +60,65 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -result_of::insert_range<Sequence, Position, Range>::type
    +
    result_of::insert_range<Sequence, Position, Range>::type
     

    Return type: A model of Sequence.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/insert_range.hpp>
    +
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html index 0c8f3fb3..486eab6c 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html @@ -3,10 +3,10 @@ join - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +join +
    +
    +
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename LhSequence,
         typename RhSequence
         >
    @@ -47,12 +50,11 @@
     };
     
    - + Expression Semantics
    -
    -result_of::join<LhSequence, RhSequence>::type
    +
    result_of::join<LhSequence, RhSequence>::type
     

    Return type: A model of

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/join.hpp>
    +
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html index 48bc70d6..6db048e6 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html @@ -3,10 +3,10 @@ pop_back - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ type.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence
         >
     struct pop_back
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -55,50 +58,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::pop_back<Sequence>::type
    +
    result_of::pop_back<Sequence>::type
     

    Return type: A model of

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/tranformation/pop_back.hpp>
    +
    #include <boost/fusion/algorithm/tranformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html index a6d0a6ce..8a6db591 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html @@ -3,10 +3,10 @@ pop_front - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ type.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence
         >
     struct pop_front
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -55,50 +58,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::pop_front<Sequence>::type
    +
    result_of::pop_front<Sequence>::type
     

    Return type: A model of

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 0f6c814d..48767806 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html @@ -3,10 +3,10 @@ push_back - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext

    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ the input sequence and element to push.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    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

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index 1809423b..48ec2b9a 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html @@ -3,10 +3,10 @@ push_front - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext

    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ of the input sequence and element to push.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    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

    - + Complexity

    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index 667c78ce..2a8b7eeb 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -3,10 +3,10 @@ remove - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext

    - +
    +
    +remove +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ removal types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    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 boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/remove.hpp>
    +
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html index d5959258..a0af26fd 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html @@ -3,10 +3,10 @@ remove_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -35,11 +39,10 @@ Lambda Expression predicate types.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename Pred
         >
    @@ -49,7 +52,7 @@
     };
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -57,70 +60,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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_ -

    -
    - + Expression Semantics
    -
    -result_of::remove_if<Sequence, Pred>::type
    +
    result_of::remove_if<Sequence, Pred>::type
     

    Return type: A model of boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/remove_if.hpp>
    +
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html index e30d64c8..f4d23939 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html @@ -3,10 +3,10 @@ replace - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ the input sequence and element to replace.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename T
         >
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    T -

    -
    -

    +

    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 replace.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/replace.hpp>
    +
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html index 5f1d7401..ae514425 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html @@ -3,10 +3,10 @@ replace_if - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -36,11 +40,10 @@ Function Object predicate and replacement object.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F,
         typename T>
    @@ -50,7 +53,7 @@
     };
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -58,88 +61,63 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    +

    F -

    -
    -

    +

    A model of unary Polymorphic Function Object -

    -
    -

    +

    Replacement predicate -

    -
    -

    +

    T -

    -
    -

    +

    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 replace_if.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/replace_if.hpp>
    +
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html index 6937de0e..3f548d7b 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html @@ -3,10 +3,10 @@ reverse - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ type.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence
         >
     struct reverse
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -55,50 +58,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A model of Bidirectional Sequence -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::reverse<Sequence>::type
    +
    result_of::reverse<Sequence>::type
     

    Return type: A model of Sequence.

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/reverse.hpp>
    +
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html index 04477d12..c202927f 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html @@ -3,10 +3,10 @@ transform - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -37,12 +41,11 @@ of seq.

    - + Unary version synopsis
    -
    -template<
    +
    template<
         typename Sequence,
         typename F
         >
    @@ -50,7 +53,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -58,72 +61,53 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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<F(E)>::type is the return type of f when called with a value of each element type E. -

    -
    -

    +

    Transformation function -

    -
    - + Expression Semantics
    -
    -transform(seq, f);
    +
    transform(seq, f);
     

    Return type: A model of seq.

    - + Binary version synopsis
    -
    -template<
    +
    template<
         typename Sequence1,
         typename Sequence2,
         typename F
    @@ -150,7 +133,7 @@
         Sequence1 const& seq1, Sequence2 const& seq2, F f);
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -158,81 +141,57 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    @@ -248,26 +207,24 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/transform.hpp>
    +
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    -
    -struct triple
    +
    struct triple
     {
         typedef int result_type;
     
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 840c9039..119bd233 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -3,10 +3,10 @@
     
     zip
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    -
    -zip
    +
    +
    +zip +
    +
    +
    - + Description

    @@ -34,11 +38,10 @@ of the members of the component sequences.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Sequence1,
         typename Sequence2,
         ...
    @@ -50,12 +53,11 @@
     };
     
    - + Expression Semantics
    -
    -result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
    +
    result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
     

    Return type: A model of the most restrictive @@ -73,18 +75,17 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    -
    -#include <boost/fusion/algorithm/transformation/zip.hpp>
    +
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html index 0964a7a2..38a42e09 100644 --- a/doc/html/fusion/change_log.html +++ b/doc/html/fusion/change_log.html @@ -3,10 +3,10 @@ Change log - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +

    This section summarizes significant changes to the Fusion library.

    diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index ad50b704..1a616561 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -3,10 +3,10 @@ Container - - + + - @@ -24,8 +24,12 @@ PrevUpHomeNext
    - +
    + +
    +
    vector
    cons
    @@ -49,11 +53,10 @@ These containers are more or less counterparts of those in STL.

    - + Header

    -
    -#include <boost/fusion/container.hpp>
    +
    #include <boost/fusion/container.hpp>
     #include <boost/fusion/include/container.hpp>
     
    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html index d257fb55..55d4ba30 100644 --- a/doc/html/fusion/container/cons.html +++ b/doc/html/fusion/container/cons.html @@ -3,10 +3,10 @@ cons - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +

    +cons +

    +
    +

    - + Description

    @@ -42,23 +46,21 @@ Inlined Functions).

    - + Header

    -
    -#include <boost/fusion/container/list/cons.hpp>
    +
    #include <boost/fusion/container/list/cons.hpp>
     #include <boost/fusion/include/cons.hpp>
     

    - + Synopsis

    -
    -template <typename Car, typename Cdr = nil>
    +
    template <typename Car, typename Cdr = nil>
     struct cons;
     

    - + Template parameters

    @@ -68,60 +70,42 @@ - - + - + +

    - - + - +

    + - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    Car -

    -
    -

    +

    Head type -

    -
    -

    -

    -

    +

    -

    +

    Cdr -

    -
    -

    +

    Tail type -

    -
    -

    +

    nil -

    -

    - + Model of

    • - + Expression Semantics

      @@ -178,115 +162,83 @@ - -

      +

      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<N>(l) -

      - - -

      +

      +

      The Nth element from the beginning of the sequence; see at. -

      - +

    - +
    + +
    +
    Functions
    Metafunctions
    @@ -34,11 +38,10 @@ types using one of these conversion functions.

    - + Header

    -
    -#include <boost/fusion/include/convert.hpp>
    +
    #include <boost/fusion/include/convert.hpp>
     
    diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html index 63cc387c..b1a32164 100644 --- a/doc/html/fusion/container/conversion/functions.html +++ b/doc/html/fusion/container/conversion/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    as_list
    as_vector
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index 0c763d69..0c50bc89 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -3,10 +3,10 @@ as_list - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::as_list<Sequence>::type
     as_list(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -56,47 +59,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - + Expression Semantics
    -
    -as_list(seq);
    +
    as_list(seq);
     

    Return type: result_of::as_list<Sequence>::type @@ -106,19 +96,17 @@ seq, to a list.

    - + Header
    -
    -#include <boost/fusion/container/list/convert.hpp>
    +
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    -
    -as_list(make_vector('x', 123, "hello"))
    +
    as_list(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html index 3748d16e..4f884f3e 100644 --- a/doc/html/fusion/container/conversion/functions/as_map.html +++ b/doc/html/fusion/container/conversion/functions/as_map.html @@ -3,10 +3,10 @@ as_map - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +as_map +
    +
    +
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::as_map<Sequence>::type
     as_map(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -56,47 +59,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - + Expression Semantics
    -
    -as_map(seq);
    +
    as_map(seq);
     

    Return type: result_of::as_map<Sequence>::type @@ -111,19 +101,17 @@ There may be no duplicate fusion::pair key types.

    - + Header
    -
    -#include <boost/fusion/container/map/convert.hpp>
    +
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    -
    -as_map(make_vector(
    +
    as_map(make_vector(
         make_pair<int>('X')
       , make_pair<double>("Men")))
     
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html index 5df2befb..26f9a173 100644 --- a/doc/html/fusion/container/conversion/functions/as_set.html +++ b/doc/html/fusion/container/conversion/functions/as_set.html @@ -3,10 +3,10 @@ as_set - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +as_set +
    +
    +
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::as_set<Sequence>::type
     as_set(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -56,47 +59,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - + Expression Semantics
    -
    -as_set(seq);
    +
    as_set(seq);
     

    Return type: result_of::as_set<Sequence>::type @@ -110,19 +100,17 @@ key types.

    - + Header
    -
    -#include <boost/fusion/container/set/convert.hpp>
    +
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    -
    -as_set(make_vector('x', 123, "hello"))
    +
    as_set(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html index 38c553a9..124481e1 100644 --- a/doc/html/fusion/container/conversion/functions/as_vector.html +++ b/doc/html/fusion/container/conversion/functions/as_vector.html @@ -3,10 +3,10 @@ as_vector - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::as_vector<Sequence>::type
     as_vector(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -56,47 +59,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - + Expression Semantics
    -
    -as_vector(seq);
    +
    as_vector(seq);
     

    Return type: result_of::as_vector<Sequence>::type @@ -106,19 +96,17 @@ seq, to a vector.

    - + Header
    -
    -#include <boost/fusion/container/vector/convert.hpp>
    +
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    -
    -as_vector(make_list('x', 123, "hello"))
    +
    as_vector(make_list('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html index fc5e7fc0..6eaabfae 100644 --- a/doc/html/fusion/container/conversion/metafunctions.html +++ b/doc/html/fusion/container/conversion/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    as_list
    as_vector
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index da828883..0e1515d7 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -3,10 +3,10 @@ as_list - - + + - + @@ -23,25 +23,28 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     struct as_list;
     
    - + Parameters
    @@ -51,47 +54,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A fusion Sequence -

    -
    -

    +

    The sequence type to convert. -

    -
    - + Expression Semantics
    -
    -result_of::as_list<Sequence>::type;
    +
    result_of::as_list<Sequence>::type;
     

    Return type: A list with same elements as the @@ -102,19 +92,17 @@ Sequence, to a list.

    - + Header
    -
    -#include <boost/fusion/container/list/convert.hpp>
    +
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/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/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html index b109321d..a903a2da 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html @@ -3,10 +3,10 @@ as_map - - + + - + @@ -23,25 +23,28 @@ PrevUpHomeNext
    - +
    +
    +as_map +
    +
    +
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     struct as_map;
     
    - + Parameters
    @@ -51,47 +54,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A fusion Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - + Expression Semantics
    -
    -result_of::as_map<Sequence>::type;
    +
    result_of::as_map<Sequence>::type;
     

    Return type: A map with same elements as the @@ -107,19 +97,17 @@ There may be no duplicate fusion::pair key types.

    - + Header
    -
    -#include <boost/fusion/container/map/convert.hpp>
    +
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    -
    -result_of::as_map<vector<
    +
    result_of::as_map<vector<
         fusion::pair<int, char>
       , fusion::pair<double, std::string> > >::type
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html index b0813dc8..3bb19f0d 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html @@ -3,10 +3,10 @@ as_set - - + + - + @@ -23,25 +23,28 @@ PrevUpHomeNext
    - +
    +
    +as_set +
    +
    +
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     struct as_set;
     
    - + Parameters
    @@ -51,47 +54,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A fusion Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - + Expression Semantics
    -
    -result_of::as_set<Sequence>::type;
    +
    result_of::as_set<Sequence>::type;
     

    Return type: A set with same elements as the @@ -106,19 +96,17 @@ key types.

    - + Header
    -
    -#include <boost/fusion/container/set/convert.hpp>
    +
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/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/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html index 54eb2fa9..5965a7c7 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html @@ -3,10 +3,10 @@ as_vector - - + + - + @@ -23,25 +23,28 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     struct as_vector;
     
    - + Parameters
    @@ -51,47 +54,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Sequence -

    -
    -

    +

    A fusion Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - + Expression Semantics
    -
    -result_of::as_vector<Sequence>::type;
    +
    result_of::as_vector<Sequence>::type;
     

    Return type: A vector with same elements as @@ -102,19 +92,17 @@ Sequence, to a vector.

    - + Header
    -
    -#include <boost/fusion/container/vector/convert.hpp>
    +
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/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/container/generation.html b/doc/html/fusion/container/generation.html index 81cf6840..23369336 100644 --- a/doc/html/fusion/container/generation.html +++ b/doc/html/fusion/container/generation.html @@ -3,10 +3,10 @@ Generation - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    Functions
    MetaFunctions
    @@ -33,11 +37,10 @@ These are the functions that you can use to generate various forms of Container from elemental values.

    - + Header

    -
    -#include <boost/fusion/container/generation.hpp>
    +
    #include <boost/fusion/container/generation.hpp>
     #include <boost/fusion/include/generation.hpp>
     
    diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html index da076b46..4a7cabfa 100644 --- a/doc/html/fusion/container/generation/functions.html +++ b/doc/html/fusion/container/generation/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    make_list
    make_cons
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index cb73d6ce..ce6e3a6f 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -3,10 +3,10 @@ list_tie - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    template <typename T0, typename T1,... typename TN>
     list<T0&, T1&,... TN&>
     list_tie(T0& x0, T1& x1... TN& xN);
     
    @@ -49,11 +52,10 @@ FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_LIST_SIZE 20
    +
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -63,49 +65,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    x0, x1,... xN -

    -
    -

    +

    Instances of T0, T1,... TN -

    -
    -

    +

    The arguments to list_tie -

    -
    - + Expression Semantics
    -
    -list_tie(x0, x1,... xN);
    +
    list_tie(x0, x1,... xN);
     

    Return type: list<T0&, T1&,... @@ -115,19 +104,17 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    -
    -#include <boost/fusion/container/generation/list_tie.hpp>
    +
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    -
    -int i = 123;
    +
    int i = 123;
     double d = 123.456;
     list_tie(i, d)
     
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html index 2462133c..6ab4f6ca 100644 --- a/doc/html/fusion/container/generation/functions/make_cons.html +++ b/doc/html/fusion/container/generation/functions/make_cons.html @@ -3,10 +3,10 @@ make_cons - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -35,11 +39,10 @@ and optional cdr (tail).

    - + Synopsis
    -
    -template <typename Car>
    +
    template <typename Car>
     typename result_of::make_cons<Car>::type
     make_cons(Car const& car);
     
    @@ -48,7 +51,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -58,66 +61,47 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    car -

    -
    -

    +

    Instance of Car -

    -
    -

    +

    The list's head -

    -
    -

    +

    cdr -

    -
    -

    +

    Instance of Cdr -

    -
    -

    +

    The list's tail (optional) -

    -
    - + Expression Semantics
    -
    -make_cons(car, cdr);
    +
    make_cons(car, cdr);
     

    Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type @@ -128,22 +112,20 @@ (tail).

    - + Header
    -
    -#include <boost/fusion/container/generation/make_cons.hpp>
    +
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    -
    -make_cons('x', make_cons(123))
    +
    make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 49ca486d..4950bbff 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -3,10 +3,10 @@ make_list - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ from one or more values.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    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);
     
    @@ -50,11 +53,10 @@ FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_LIST_SIZE 20
    +
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -64,49 +66,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    x0, x1,... xN -

    -
    -

    +

    Instances of T0, T1,... TN -

    -
    -

    +

    The arguments to make_list -

    -
    - + Expression Semantics
    -
    -make_list(x0, x1,... xN);
    +
    make_list(x0, x1,... xN);
     

    Return type: result_of::make_list<T0, T1,... TN>::type @@ -115,22 +104,20 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_list.hpp>
    +
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    -
    -make_list(123, "hello", 12.5)
    +
    make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 8b202e40..abf904a9 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -3,10 +3,10 @@ make_map - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ from one or more key/data pairs.

    - + Synopsis
    -
    -template <
    +
    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
    @@ -46,18 +49,16 @@
     

    The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [10] - elements, where FUSION_MAX_VECTOR_SIZE + 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_VECTOR_SIZE - before including any Fusion header to change the default. Example: + FUSION_MAX_MAP_SIZE before + including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -67,70 +68,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -make_map<K0, K1,... KN>(x0, x1,... xN);
    +
    make_map<K0, K1,... KN>(x0, x1,... xN);
     

    Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type @@ -146,24 +128,22 @@ key types.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_map.hpp>
    +
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    -
    -make_map(
    +
    make_map(
         make_pair<int>('X')
       , make_pair<double>("Men"))
     
    - + See also
    @@ -171,13 +151,6 @@ boost::ref, fusion::pair

    -
    -

    -

    [10] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE -

    -
    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 833359b4..aefe0a04 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -3,10 +3,10 @@ make_set - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,28 +38,25 @@ from one or more values.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    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 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_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: + FUSION_MAX_SET_SIZE before + including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -65,49 +66,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    x0, x1,... xN -

    -
    -

    +

    Instances of T0, T1,... TN -

    -
    -

    +

    The arguments to make_set -

    -
    - + Expression Semantics
    -
    -make_set(x0, x1,... xN);
    +
    make_set(x0, x1,... xN);
     

    Return type: result_of::make_set<T0, T1,... TN>::type @@ -120,35 +108,26 @@ key types.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_set.hpp>
    +
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    -
    -make_set(123, "hello", 12.5)
    +
    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 -

    -
    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index c51e7fa5..7ca37d12 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -3,10 +3,10 @@ make_vector - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -34,11 +38,10 @@ from one or more values.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    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);
     
    @@ -50,11 +53,10 @@ FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -64,49 +66,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    x0, x1,... xN -

    -
    -

    +

    Instances of T0, T1,... TN -

    -
    -

    +

    The arguments to make_vector -

    -
    - + Expression Semantics
    -
    -make_vector(x0, x1,... xN);
    +
    make_vector(x0, x1,... xN);
     

    Return type: result_of::make_vector<T0, T1,... TN>::type @@ -115,22 +104,20 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_vector.hpp>
    +
    #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
    -
    -make_vector(123, "hello", 12.5)
    +
    make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 87173dfa..f8c12d8e 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -3,10 +3,10 @@ map_tie - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    -
    -template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    +
    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);
     
    @@ -49,11 +52,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
    +
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -63,71 +65,52 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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);
    +
    map_tie<K0, K1,... KN>(x0, x1,... xN);
     

    Return type: map<pair<K0, D0&>, pair<K1, @@ -138,19 +121,17 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    -
    -#include <boost/fusion/container/generation/map_tie.hpp>
    +
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    -
    -struct int_key;
    +
    struct int_key;
     struct double_key;
     ...
     int i = 123;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 548bb727..efb3d5b5 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -3,10 +3,10 @@
     
     Tiers
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,8 +23,12 @@
     PrevUpHomeNext
     
    - +
    +
    +Tiers +
    +
    +

    Tiers are sequences, where all elements are non-const reference types. They are constructed with a call to a couple of tie @@ -39,8 +43,7 @@

    Example:

    -
    -int i; char c; double d;
    +
    int i; char c; double d;
       ...
     vector_tie(i, c, a);
     
    @@ -49,15 +52,14 @@ 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] + [9] .

    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;
     
    @@ -67,7 +69,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -76,13 +78,12 @@ may return a sequence, only part of which you are interested in. For example:

    -
    -char c;
    +
    char c;
     vector_tie(ignore, c) = make_vector(1, 'a');
     


    -

    [11] +

    [9] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 0bd4d472..5470bec7 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -3,10 +3,10 @@ vector_tie - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    template <typename T0, typename T1,... typename TN>
     vector<T0&, T1&,... TN&>
     vector_tie(T0& x0, T1& x1... TN& xN);
     
    @@ -49,11 +52,10 @@ FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -63,49 +65,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    x0, x1,... xN -

    -
    -

    +

    Instances of T0, T1,... TN -

    -
    -

    +

    The arguments to vector_tie -

    -
    - + Expression Semantics
    -
    -vector_tie(x0, x1,... xN);
    +
    vector_tie(x0, x1,... xN);
     

    Return type: vector<T0&, T1&,... @@ -115,19 +104,17 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    -
    -#include <boost/fusion/container/generation/vector_tie.hpp>
    +
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    -
    -int i = 123;
    +
    int i = 123;
     double d = 123.456;
     vector_tie(i, d)
     
    diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html index 0d62c1f0..07cf1cd7 100644 --- a/doc/html/fusion/container/generation/metafunctions.html +++ b/doc/html/fusion/container/generation/metafunctions.html @@ -3,10 +3,10 @@ MetaFunctions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    make_list
    make_cons
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index 9ee4acfc..3f90f937 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -3,10 +3,10 @@ list_tie - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    template <typename T0, typename T1,... typename TN>
     struct list_tie;
     

    @@ -48,11 +51,10 @@ FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_LIST_SIZE 20
    +
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -62,49 +64,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T0, T1,... TN -

    -
    -

    +

    Any type -

    -
    -

    +

    The arguments to list_tie -

    -
    - + Expression Semantics
    -
    -result_of::list_tie<T0, T1,... TN>::type;
    +
    result_of::list_tie<T0, T1,... TN>::type;
     

    Return type: list<T0&, T1&,... @@ -114,19 +103,17 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    -
    -#include <boost/fusion/container/generation/list_tie.hpp>
    +
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    -
    -result_of::list_tie<int, double>::type
    +
    result_of::list_tie<int, double>::type
     
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html index 7865c497..5f148559 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html @@ -3,10 +3,10 @@ make_cons - - + + - + @@ -23,25 +23,28 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    -
    -template <typename Car, typename Cdr = nil>
    +
    template <typename Car, typename Cdr = nil>
     struct make_cons;
     
    - + Parameters
    @@ -51,66 +54,47 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Car -

    -
    -

    +

    Any type -

    -
    -

    +

    The list's head type -

    -
    -

    +

    Cdr -

    -
    -

    +

    A cons -

    -
    -

    +

    The list's tail type (optional) -

    -
    - + Expression Semantics
    -
    -result_of::make_cons<Car, Cdr>::type
    +
    result_of::make_cons<Car, Cdr>::type
     

    Return type: A cons with head element, Car, of type converted following the @@ -123,19 +107,17 @@ (tail).

    - + Header
    -
    -#include <boost/fusion/container/generation/make_cons.hpp>
    +
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    -
    -result_of::make_cons<char, result_of::make_cons<int>::type>::type
    +
    result_of::make_cons<char, result_of::make_cons<int>::type>::type
     
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html index 43db74f4..5f484f08 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_list.html +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html @@ -3,10 +3,10 @@ make_list - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    template <typename T0, typename T1,... typename TN>
     struct make_list;
     

    @@ -48,11 +51,10 @@ FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_LIST_SIZE 20
    +
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -62,49 +64,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T0, T1,... TN -

    -
    -

    +

    Any type -

    -
    -

    +

    Template arguments to make_list -

    -
    - + Expression Semantics
    -
    -result_of::make_list<T0, T1,... TN>::type
    +
    result_of::make_list<T0, T1,... TN>::type
     

    Return type: A list with elements of types @@ -115,19 +104,17 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_list.hpp>
    +
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    -
    -result_of::make_list<int, const char(&)[7], double>::type
    +
    result_of::make_list<int, const char(&)[7], double>::type
     
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html index d4d83836..0e24befd 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_map.html +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html @@ -3,10 +3,10 @@ make_map - - + + - + @@ -23,39 +23,40 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    -
    -template <
    +
    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 + 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_VECTOR_SIZE - before including any Fusion header to change the default. Example: + FUSION_MAX_MAP_SIZE before + including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -65,70 +66,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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 -

    -
    - + Expression Semantics
    -
    -resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;
    +
    resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;
     

    Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type @@ -143,35 +125,26 @@ key types.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_map.hpp>
    +
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    -
    -result_of::make_map<int, double, char, double>::type
    +
    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 -

    -
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 85ffe4e6..83e3fe26 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -3,10 +3,10 @@ make_set - - + + - + @@ -23,37 +23,38 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    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 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_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: + FUSION_MAX_SET_SIZE before + including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -63,49 +64,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T0, T1,... TN -

    -
    -

    +

    Any type -

    -
    -

    +

    The arguments to make_set -

    -
    - + Expression Semantics
    -
    -result_of::make_set<T0, T1,... TN>::type
    +
    result_of::make_set<T0, T1,... TN>::type
     

    Return type: A set with elements of types converted @@ -120,27 +108,18 @@ key types.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_set.hpp>
    +
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    -
    -result_of::make_set<int, char, double>::type
    +
    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 -

    -
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index a03c568b..ac90cb3d 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html @@ -3,10 +3,10 @@ make_vector - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    template <typename T0, typename T1,... typename TN>
     struct make_vector;
     

    @@ -48,11 +51,10 @@ FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -62,49 +64,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T0, T1,... TN -

    -
    -

    +

    Any type -

    -
    -

    +

    Template arguments to make_vector -

    -
    - + Expression Semantics
    -
    -result_of::make_vector<T0, T1,... TN>::type
    +
    result_of::make_vector<T0, T1,... TN>::type
     

    Return type: A vector with elements of types @@ -115,19 +104,17 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    -
    -#include <boost/fusion/container/generation/make_list.hpp>
    +
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    -
    -result_of::make_vector<int, const char(&)[7], double>::type
    +
    result_of::make_vector<int, const char(&)[7], double>::type
     
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html index b41c1ba8..a259aa7e 100644 --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html @@ -3,10 +3,10 @@ map_tie - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    -
    -template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    +
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
     struct map_tie;
     

    @@ -48,11 +51,10 @@ FUSION_MAX_MAP_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_MAP_SIZE 20
    +
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -62,70 +64,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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;
    +
    result_of::map_tie<K0, K1,... KN, D0, D1,... DN>::type;
     

    Return type: map<pair<K0, D0&>, pair<K1, @@ -136,19 +119,17 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    -
    -#include <boost/fusion/container/generation/map_tie.hpp>
    +
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    -
    -struct int_key;
    +
    struct int_key;
     struct double_key;
     ...
     result_of::map_tie<int_key, double_key, int, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index 01797d8f..a4a90a45 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -3,10 +3,10 @@
     
     vector_tie
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
     
    - +
    + +
    +
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    -
    -template <typename T0, typename T1,... typename TN>
    +
    template <typename T0, typename T1,... typename TN>
     struct vector_tie;
     

    @@ -48,11 +51,10 @@ FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_VECTOR_SIZE 20
    +
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -62,49 +64,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T0, T1,... TN -

    -
    -

    +

    Any type -

    -
    -

    +

    The arguments to vector_tie -

    -
    - + Expression Semantics
    -
    -result_of::vector_tie<T0, T1,... TN>::type;
    +
    result_of::vector_tie<T0, T1,... TN>::type;
     

    Return type: vector<T0&, T1&,... @@ -114,19 +103,17 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    -
    -#include <boost/fusion/container/generation/vector_tie.hpp>
    +
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    -
    -result_of::vector_tie<int, double>::type
    +
    result_of::vector_tie<int, double>::type
     
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html index ec9a83e1..60631008 100644 --- a/doc/html/fusion/container/list.html +++ b/doc/html/fusion/container/list.html @@ -3,10 +3,10 @@ list - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +

    +list +

    +
    +

    - + Description

    @@ -38,21 +42,19 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header

    -
    -#include <boost/fusion/container/list.hpp>
    +
    #include <boost/fusion/container/list.hpp>
     #include <boost/fusion/include/list.hpp>
     #include <boost/fusion/container/list/list_fwd.hpp>
     #include <boost/fusion/include/list_fwd.hpp>
     

    - + Synopsis

    -
    -template <
    +
    template <
         typename T0 = unspecified
       , typename T1 = unspecified
       , typename T2 = unspecified
    @@ -68,18 +70,16 @@
             is a user definable predefined maximum that defaults to 10.
             Example:
           

    -
    -list<int, char, double>
    +
    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
    +
    #define FUSION_MAX_LIST_SIZE 20
     

    - + Template parameters

    @@ -89,42 +89,30 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    T0...TN -

    -
    -

    +

    Element types -

    -
    -

    +

    unspecified-type -

    -

    - + Model of

    • - + Expression Semantics

      @@ -172,89 +160,65 @@ - -

      +

      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<N>(l) -

      - - -

      +

      +

      The Nth element from the beginning of the sequence; see at. -

      - +

    -

    -map

    +
    +

    +map +

    +
    +

    - + Description

    @@ -40,21 +44,19 @@ (see Overloaded Functions).

    - + Header

    -
    -#include <boost/fusion/container/map.hpp>
    +
    #include <boost/fusion/container/map.hpp>
     #include <boost/fusion/include/map.hpp>
     #include <boost/fusion/container/map_fwd.hpp>
     #include <boost/fusion/include/map_fwd.hpp>
     

    - + Synopsis

    -
    -template <
    +
    template <
         typename T0 = unspecified
       , typename T1 = unspecified
       , typename T2 = unspecified
    @@ -70,18 +72,16 @@
             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 before including any Fusion header to change the default. Example:

    -
    -#define FUSION_MAX_MAP_SIZE 20
    +
    #define FUSION_MAX_MAP_SIZE 20
     

    - + Template parameters

    @@ -91,42 +91,30 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    T0...TN -

    -
    -

    +

    Element types -

    -
    -

    +

    unspecified-type -

    -

    - + Model of

      @@ -159,7 +147,7 @@

    - + Expression Semantics

    @@ -176,81 +164,60 @@ - -

    +

    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. -

    - +

    - + Example

    -
    -typedef map<
    +
    typedef map<
         pair<int, char>
       , pair<double, std::string> >
     map_type;
    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index 61fba0c4..127f5ae6 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -3,10 +3,10 @@
     
     set
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
     
    -

    -set

    +
    +

    +set +

    +
    +

    - + Description

    @@ -39,21 +43,19 @@ Functions).

    - + Header

    -
    -#include <boost/fusion/container/set.hpp>
    +
    #include <boost/fusion/container/set.hpp>
     #include <boost/fusion/include/set.hpp>
     #include <boost/fusion/container/set_fwd.hpp>
     #include <boost/fusion/include/set_fwd.hpp>
     

    - + Synopsis

    -
    -template <
    +
    template <
         typename T0 = unspecified
       , typename T1 = unspecified
       , typename T2 = unspecified
    @@ -69,18 +71,16 @@
             is a user definable predefined maximum that defaults to 10.
             Example:
           

    -
    -set<int, char, double>
    +
    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
    +
    #define FUSION_MAX_SET_SIZE 20
     

    - + Template parameters

    @@ -90,42 +90,30 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    T0...TN -

    -
    -

    +

    Element types -

    -
    -

    +

    unspecified-type -

    -

    - + Model of

      @@ -158,7 +146,7 @@

    - + Expression Semantics

    @@ -175,81 +163,60 @@ - -

    +

    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. -

    - +

    - + Example

    -
    -typedef set<int, float> S;
    +
    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;
    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index b4ab929d..c0c1359a 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -3,10 +3,10 @@
     
     vector
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
     
    - +
    +

    +vector +

    +
    +

    - + Description

    @@ -39,11 +43,10 @@ efficient.

    - + Header

    -
    -#include <boost/fusion/container/vector.hpp>
    +
    #include <boost/fusion/container/vector.hpp>
     #include <boost/fusion/include/vector.hpp>
     #include <boost/fusion/container/vector/vector_fwd.hpp>
     #include <boost/fusion/include/vector_fwd.hpp>
    @@ -61,15 +64,13 @@
     #include <boost/fusion/include/vector50.hpp>
     

    - + Synopsis

    Numbered forms

    -
    -template <>
    -struct vector0;
    +
    struct vector0;
     
     template <typename T0>
     struct vector1;
    @@ -88,8 +89,7 @@
     

    Variadic form

    -
    -template <
    +
    template <
         typename T0 = unspecified
       , typename T1 = unspecified
       , typename T2 = unspecified
    @@ -101,8 +101,7 @@
     

    The numbered form accepts the exact number of elements. Example:

    -
    -vector3<int, char, double>
    +
    vector3<int, char, double>
     

    The variadic form accepts 0 to @@ -111,18 +110,16 @@ is a user definable predefined maximum that defaults to 10. Example:

    -
    -vector<int, char, double>
    +
    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
    +
    #define FUSION_MAX_VECTOR_SIZE 20
     

    - + Template parameters

    @@ -132,42 +129,30 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    T0...TN -

    -
    -

    +

    Element types -

    -
    -

    +

    unspecified -

    -

    - + Model of

    • - + Expression Semantics

      @@ -211,81 +196,60 @@ - -

      +

      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. -

      - +

    - + Example

    -
    -vector<int, float> v(12, 5.5f);
    +
    vector<int, float> v(12, 5.5f);
     std::cout << at_c<0>(v) << std::endl;
     std::cout << at_c<1>(v) << std::endl;
     
    diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index 5c2a61b6..d8b91114 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,10 +3,10 @@ Extension - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    The Full Extension Mechanism
    Sequence Facade
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index 879138c3..53fe4bc8 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -3,10 +3,10 @@ The Full Extension Mechanism - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +

    The Fusion library is designed to be extensible, new sequences types can easily be added. In fact, the library support for std::pair, @@ -48,15 +52,14 @@

    - + Our example

    In order to illustrate enabling a new sequence type for use with Fusion, we are going to use the type:

    -
    -namespace example
    +
    namespace example
     {
         struct example_struct
         {
    @@ -80,7 +83,7 @@
             Start guide.
           

    - + Enabling Tag Dispatching

    @@ -90,8 +93,7 @@ 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 example {
    +
    namespace example {
         struct example_sequence_tag; // Only definition needed
     }
     
    @@ -101,8 +103,7 @@ our sequence. This is done by specializing traits::tag_of for our sequence type.

    -
    -#include <boost/fusion/support/tag_of_fwd.hpp>
    +
    #include <boost/fusion/support/tag_of_fwd.hpp>
     #include <boost/fusion/include/tag_of_fwd.hpp>
     
     namespace boost { namespace fusion { namespace traits {
    @@ -119,12 +120,11 @@
             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/adapted/array/tag_of.hpp>
    +
    #include <boost/fusion/adapted/array/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     

    - + Designing a suitable iterator

    @@ -138,8 +138,7 @@ are given numbered indices, 0 for name and 1 for age respectively.

    -
    -template<typename Struct, int Pos>
    +
    template<typename Struct, int Pos>
     struct example_struct_iterator
         : boost::fusion::iterator_base<example_struct_iterator<Struct, Pos> >
     {
    @@ -187,7 +186,7 @@
             clearer as we add features to our implementation.
           

    - + A first couple of instructive features

    @@ -196,8 +195,7 @@ do this, we provide a specialization of the boost::fusion::extension::value_of_impl template for our iterator's tag type.

    -
    -template<>
    +
    template<>
     struct value_of_impl<example::example_struct_iterator_tag>
     {
         template<typename Iterator>
    @@ -225,8 +223,7 @@
             To understand how value_of_impl
             is used by the library we will look at the implementation of value_of:
           

    -
    -template <typename Iterator>
    +
    template <typename Iterator>
     struct value_of
         : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
             template apply<Iterator>
    @@ -243,8 +240,7 @@
             Ok, lets enable dereferencing of our iterator. In this case we must provide
             a suitable specialization of deref_impl.
           

    -
    -template<>
    +
    template<>
     struct deref_impl<example::example_struct_iterator_tag>
     {
         template<typename Iterator>
    @@ -285,8 +281,7 @@
             deref_impl is used, lets
             have a look at the implementation of deref:
           

    -
    -namespace result_of
    +
    namespace result_of
     {
         template <typename Iterator>
         struct deref
    @@ -331,7 +326,7 @@
             

    - + Implementing the remaining iterator functionality

    @@ -340,8 +335,7 @@ work in pretty much the same way. Lets start with forward iteration, by providing a next_impl:

    -
    -template<>
    +
    template<>
     struct next_impl<example::example_struct_iterator_tag>
     {
         template<typename Iterator>
    @@ -386,7 +380,7 @@
             are provided in the example code.
           

    - + Implementing the intrinsic functions of the sequence

    @@ -396,8 +390,7 @@ for our sequence type. As usual we just create an impl type specialized for our sequence tag:

    -
    -template<>
    +
    template<>
     struct is_sequence_impl<example::example_sequence_tag>
     {
         template<typename T>
    @@ -415,8 +408,7 @@
             get begin working so that we can get
             an iterator to start accessing the data in our sequence.
           

    -
    -template<>
    +
    template<>
     struct begin_impl<example::example_sequence_tag>
     {
         template<typename Sequence>
    @@ -445,7 +437,7 @@
             value_at_impl and at_impl.
           

    - + Enabling our type as an associative container

    @@ -464,8 +456,7 @@ Start guide with the appropriate members of example_struct. Our implementation is as follows:

    -
    -template<>
    +
    template<>
     struct at_key_impl<example::example_sequence_tag>
     {
         template<typename Sequence, typename Key>
    @@ -513,7 +504,7 @@
             of is_associative_impl.
           

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index ce1c74f7..446b94d2 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -3,10 +3,10 @@ Iterator Facade - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext

    - +
    + +
    +

    - + Description

    @@ -35,15 +39,14 @@ iterator.

    - + Synopsis

    -
    -template<typename Derived, typename TravesalTag>
    +
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     

    - + Usage

    @@ -57,56 +60,44 @@ type.

    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

    - - + +

    - - + +

    - - + +

    -

    +

    Name -

    -
    -

    +

    Description -

    -
    -

    +

    iterator, It, It1, It2 -

    -
    -

    +

    A type derived from iterator_facade -

    -
    -

    +

    N -

    -
    -

    +

    An MPL Integral Constant -

    -
    -

    Table 1.94. Key Expressions

    +

    Table 1.94. Key Expressions

    @@ -114,266 +105,181 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Expression -

    -
    -

    +

    Result -

    -
    -

    +

    Default -

    -
    -

    +

    iterator::template value_of<It>::type -

    -
    -

    +

    The element stored at iterator position It -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template deref<It>::type -

    -
    -

    +

    The type returned when dereferencing an iterator of type It -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template deref<It>::call(it) -

    -
    -

    +

    Dereferences iterator it -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template next<It>::type -

    -
    -

    +

    The type of the next element from It -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template next<It>::call(it) -

    -
    -

    +

    The next iterator after it -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template prior<It>::type -

    -
    -

    +

    The type of the next element from It -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template prior<It>::call(it) -

    -
    -

    +

    The next iterator after it -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template advance<It, N>::type -

    -
    -

    +

    The type of an iterator advanced N elements from It -

    -
    -

    +

    Implemented in terms of next and prior -

    -
    -

    +

    iterator::template advance<It, N>::call(it) -

    -
    -

    +

    An iterator advanced N elements from it -

    -
    -

    +

    Implemented in terms of next and prior -

    -
    -

    +

    iterator::template distance<It1, It2>::type -

    -
    -

    +

    The distance between iterators of type It1 and It2 as an MPL Integral Constant -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template distance<It1, It2>::call(it1, it2) -

    -
    -

    +

    The distance between iterator it1 and it2 -

    -
    -

    +

    None -

    -
    -

    +

    iterator::template equal_to<It1, It2>::type -

    -
    -

    +

    The distance between iterators of type It1 and It2 -

    -
    -

    +

    boost::same_type<It1, It2>::type -

    -
    -

    +

    iterator::template equal_to<It1, It2>::call(it1, it2) -

    -
    -

    +

    The distance between iterators it1 and it2 -

    -
    -

    +

    boost::same_type<It1, It2>::type() -

    -

    - + Header

    -
    -#include <boost/fusion/iterator/iterator_facade.hpp>
    +
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 23a08090..5ff15c19 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -3,10 +3,10 @@ Sequence Facade - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext

    - +
    + +
    +

    - + Description

    @@ -35,15 +39,14 @@ iterator.

    - + Synopsis

    -
    -template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
    +
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     

    - + Usage

    @@ -59,199 +62,146 @@ type.

    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

    - - + +

    - - + +

    - - + +

    -

    +

    Name -

    -
    -

    +

    Description -

    -
    -

    +

    sequence, Seq -

    -
    -

    +

    A type derived from sequence_facade -

    -
    -

    +

    N -

    -
    -

    +

    An MPL Integral Constant -

    -
    -

    Table 1.92. Key Expressions

    +

    Table 1.92. Key Expressions

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    -

    +

    Expression -

    -
    -

    +

    Result -

    -
    -

    +

    sequence::template begin<Seq>::type -

    -
    -

    +

    The type of an iterator to the beginning of a sequence of type Seq -

    -
    -

    +

    sequence::template begin<Seq>::call(seq) -

    -
    -

    +

    An iterator to the beginning of sequence seq -

    -
    -

    +

    sequence::template end<Seq>::type -

    -
    -

    +

    The type of an iterator to the end of a sequence of type Seq -

    -
    -

    +

    sequence::template end<Seq>::call(seq) -

    -
    -

    +

    An iterator to the end of sequence seq -

    -
    -

    +

    sequence::template size<Seq>::type -

    -
    -

    +

    The size of a sequence of type Seq as an MPL Integral Constant -

    -
    -

    +

    sequence::template size<Seq>::call(seq) -

    -
    -

    +

    The size of sequence seq -

    -
    -

    +

    sequence::template at<Seq, N>::type -

    -
    -

    +

    The type of element N in a sequence of type Seq -

    -
    -

    +

    sequence::template at<Seq, N>::call(seq) -

    -
    -

    +

    Element N in sequence seq -

    -
    -

    +

    sequence::template value_at<Sequence, N>::type -

    -
    -

    +

    The type of the Nth element in a sequence of type Seq -

    -

    - + Include

    -
    -#include <boost/fusion/sequence/sequence_facade.hpp>
    +
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index d5ad9ee6..b0acb353 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -3,10 +3,10 @@ Functional - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext

    - +
    + +
    +
    Concepts
    @@ -40,16 +44,16 @@
    Functions
    Metafunctions
    +
    Limits
    Adapters
    fused
    fused_procedure
    fused_function_object
    -
    unfused_generic
    -
    unfused_lvalue_args
    -
    unfused_rvalue_args
    +
    unfused
    unfused_typed
    +
    Limits
    Generation
    @@ -61,19 +65,21 @@ Components to call functions and function objects and to make Fusion code callable through a function object interface.

    -

    - /functional.hpp> -

    +

    + + Header +

    +
    #include <boost/fusion/functional.hpp>
    +

    - + Fused and unfused forms

    What is a function call?

    -
    -f (a,b,c)
    +
    f (a,b,c)
     

    It is a name and a tuple written next to each other, left-to-right. @@ -83,15 +89,13 @@ with some Fusion Sequence, introducing yet another function provides a solution:

    -
    -invoke(f,my_sequence)
    +
    invoke(f,my_sequence)
     

    Alternatively it is possible to apply a simple transformation to f in order to achieve the same effect:

    -
    -f tuple <=> f' (tuple)
    +
    f tuple <=> f' (tuple)
     

    Now, f' is an unary function that takes the arguments to @@ -102,7 +106,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -129,8 +133,11 @@ variant has a corresponding generator function template that returns an adapter instance for the given argument.

    +

    + Constructors can be called applying Boost.Functional/Factory. +

    - + Making Fusion code callable through a function object interface

    @@ -141,11 +148,14 @@ 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, - approximate solution to The - Forwarding Problem. Every generic variant has a corresponding generator - function template that returns an adapter instance for the given argument. + The library provides both a strictly typed and a generic variant for this transformation. + The latter should be used in combination with Boost.Functional/Forward + to attack The + Forwarding Problem. +

    +

    + Both variants have a corresponding generator function template that returns + an adapter instance for the given argument.

    diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index 6b152eb6..c6fb7deb 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -3,11 +3,10 @@ Adapters - - + + - + @@ -21,19 +20,22 @@

    -PrevUpHomeNext +PrevUpHomeNext
    - +
    + +
    +

    Function object templates to transform a particular target function. @@ -50,7 +52,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 53e548d3..5bd93940 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -3,10 +3,10 @@ fused - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +

    +fused +

    +
    +
    - + Description

    @@ -55,19 +59,21 @@ be defined (Boost provides this function for std::auto_ptr and boost::shared_ptr).

    -

    - /functional/adapter/fused.hpp> -

    +
    + + Header +
    +
    #include <boost/fusion/functional/adapter/fused.hpp>
    +
    - + Synopsis
    -
    -template <typename Function>
    +
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -78,43 +84,31 @@ - -

    +

    Parameter -

    - - -

    +

    +

    Description -

    - - -

    +

    +

    Default -

    - +

    - -

    +

    Function -

    - - -

    +

    +

    A Deferred Callable Object -

    - - -

    -

    - +

    +

    +

    - + Model of
      @@ -150,7 +144,7 @@
    - + Expression Semantics
    @@ -160,75 +154,60 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    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;
    +
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 40b73855..36475302 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -3,11 +3,11 @@ fused_function_object - - + + - - + + @@ -20,13 +20,17 @@

    -PrevUpHomeNext +PrevUpHomeNext
    - +
    - + Description

    @@ -45,19 +49,21 @@ for an target function object that is const or, if the target function object is held by value, the adapter is const).

    -

    - /functional/adapter/fused_function_object.hpp> -

    +
    + + Header +
    +
    #include <boost/fusion/functional/adapter/fused_function_object.hpp>
    +
    - + Synopsis
    -
    -template <class Function>
    +
    template <class Function>
     class fused_function_object;
     
    - + Template parameters
    @@ -68,43 +74,31 @@ - -

    +

    Parameter -

    - - -

    +

    +

    Description -

    - - -

    +

    +

    Default -

    - +

    - -

    +

    Function -

    - - -

    +

    +

    Polymorphic Function Object type -

    - - -

    -

    - +

    +

    +

    - + Model of
    @@ -141,7 +135,7 @@
    - + Expression Semantics
    @@ -151,65 +145,48 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    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>
    +
    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)
    @@ -243,7 +220,7 @@
     }
     
    - + See also
    @@ -252,6 +229,8 @@
  • fused_procedure
  • invoke_function_object
  • +
  • make_fused_function_object
  • deduce
  • @@ -266,7 +245,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 11f3c6d9..4f3cf8e8 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -3,10 +3,10 @@ fused_procedure - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -62,19 +66,21 @@ such a pointer without returning anything does not make sense, so this case is not implemented).

    -

    - /functional/adapter/fused_procedure.hpp> -

    +
    + + Header +
    +
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
    +
    - + Synopsis
    -
    -template <typename Function>
    +
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -85,42 +91,30 @@ - -

    +

    Parameter -

    - - -

    +

    +

    Description -

    - - -

    +

    +

    Default -

    - +

    - -

    +

    Function -

    - - -

    +

    +

    Callable Object type -

    - - -

    -

    - +

    +

    +

    - + Model of
    @@ -156,7 +150,7 @@
    - + Expression Semantics
    @@ -166,65 +160,48 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    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>
    +
    template<class SequenceOfSequences, class Func>
     void n_ary_for_each(SequenceOfSequences const & s, Func const & f)
     {
         for_each(zip_view<SequenceOfSequences>(s),
    @@ -241,7 +218,7 @@
     }
     
    - + See also
    @@ -250,6 +227,8 @@
  • fused_function_object
  • invoke_procedure
  • +
  • make_fused_procedure
  • diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html new file mode 100644 index 00000000..bfab6bae --- /dev/null +++ b/doc/html/fusion/functional/adapters/limits.html @@ -0,0 +1,70 @@ + + + +Limits + + + + + + + + +
    + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    +
    +

    +Limits +

    +
    +
    +
    + + Header +
    +
    #include <boost/fusion/functional/adapter/limits.hpp>
    +
    +
    + + Macros +
    +

    + The following macros can be defined to change the maximum arity. The value + used for these macros must not exceed FUSION_MAX_VECTOR_SIZE. + The default is 6. +

    +
      +
    • + BOOST_FUSION_UNFUSED_MAX_ARITY +
    • +
    • + BOOST_FUSION_UNFUSED_TYPE_MAX_ARITY +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html new file mode 100644 index 00000000..327c5f0c --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -0,0 +1,265 @@ + + + +unfused + + + + + + + + + + + + + + + +
    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. +

    +

    + The nullary overload of the call operator can be removed by setting the + second template parameter to false, + which is very useful if the result type computation would result in a compile + error, otherwise (nullary call operator's prototypes can't be templates + and thus are instantiated as early as the class template). +

    +

    + Only LValue arguments are accepted. To overcome this limitation, apply + Boost.Functional/Forward. +

    +

    + 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.hpp>
    +
    +
    + + Synopsis +
    +
    template <class Function, bool AllowNullary = true>
    +class unfused;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +

    + Parameter +

    + Description +

    + Default +

    + Function +

    + A unary Polymorphic + Function Object +

    +

    + AllowNullary +

    + Boolean constant +

    + true +

    +
    + + 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<F> +

    +
    ul
    +

    + An instance of UL, + initialized with f +

    +
    a0...aN
    +

    + Arguments to ul +

    +
    +
    +
    + + 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(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<fused_incrementer> increment;
    +    int a = 2; char b = 'X';
    +    increment(a,b);
    +    assert(a == 3 && b == 'Y');
    +}
    +
    +
    + + See also +
    + +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 41608679..c190d5b4 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -3,11 +3,11 @@ unfused_typed - - + + - - + + @@ -20,13 +20,17 @@

    -PrevUpHomeNext +PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -51,29 +55,31 @@ object is held by value, the adapter is const).

    -

    - /functional/adapter/unfused_typed.hpp> -

    +
    + + Header +
    +
    #include <boost/fusion/functional/adapter/unfused_typed.hpp>
    +
    - + Synopsis
    -
    -template <class Function, class Sequence>
    +
    template <class Function, class Sequence>
     class unfused_typed;
     
    - + Template parameters
    @@ -84,61 +90,43 @@ - -

    +

    Parameter -

    - - -

    +

    +

    Description -

    - - -

    +

    +

    Default -

    - +

    - -

    +

    Function -

    - - -

    +

    +

    A unary Polymorphic Function Object -

    - - -

    -

    - +

    +

    +

    - -

    +

    Sequence -

    - - -

    +

    +

    A Sequence -

    - - -

    -

    - +

    +

    +

    - + Model of
    @@ -184,7 +172,7 @@
    - + Expression Semantics
    @@ -194,67 +182,50 @@ - -

    +

    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. -

    - +

    - + Example
    -
    -struct add_assign // applies operator+=
    +
    struct add_assign // applies operator+=
     {
         typedef void result_type; // for simplicity
     
    @@ -305,7 +276,7 @@
                 fused_parallel_adder<Seq>(tie) );
         }
     };
    -unfused_lvalue_args<fused_parallel_adder_maker> parallel_add;
    +unfused<fused_parallel_adder_maker> parallel_add;
     
     void try_it()
     {
    @@ -319,13 +290,11 @@
     }
     
    - + See also
    @@ -341,7 +310,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index b6ddb1b3..2fcb5288 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -3,10 +3,10 @@ Concepts - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    - +
    - + Description

    @@ -36,7 +40,7 @@ of a function call operator.

    - + Models
      @@ -51,11 +55,10 @@
    - + Examples
    -
    -& a_free_function
    +
    & a_free_function
     & a_class::a_static_member_function
     & a_class::a_nonstatic_data_member
     & a_class::a_nonstatic_member_function
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
    index 47e13671..c32f67af 100644
    --- a/doc/html/fusion/functional/concepts/def_callable.html
    +++ b/doc/html/fusion/functional/concepts/def_callable.html
    @@ -4,10 +4,10 @@
      Deferred
             Callable Object
     
    -
    -
    +
    +
     
    -
     
    @@ -26,12 +26,16 @@
     PrevUpHomeNext
     
    -

    + + Callable Object +

    +
    +
    - + Description

    @@ -40,7 +44,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -81,7 +85,7 @@
    - + Expression requirements
    @@ -91,35 +95,27 @@ - -

    +

    Expression -

    - - -

    +

    +

    Type -

    - +

    - -

    +

    boost::result_of< F(T1 ...TN) >::type -

    - - -

    +

    +

    Result of a call with A1 ...AN-typed arguments -

    - +

    - + Models
      @@ -133,11 +129,10 @@
    - + Examples
    -
    -& a_free_function
    +
    & a_free_function
     & a_class::a_static_member_function
     & a_class::a_nonstatic_data_member
     & a_class::a_nonstatic_member_function
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index e8329338..f09578a5 100644
    --- a/doc/html/fusion/functional/concepts/poly.html
    +++ b/doc/html/fusion/functional/concepts/poly.html
    @@ -4,10 +4,10 @@
      Polymorphic Function
             Object
     
    -
    -
    +
    +
     
    -
     
     
    @@ -25,12 +25,16 @@
     PrevUpHomeNext
     
     
    -
    - + Description

    @@ -39,7 +43,7 @@ Callable Object type.

    - + Refinement of
    @@ -83,7 +87,7 @@
    - + Expression requirements
    @@ -94,45 +98,33 @@ - -

    +

    Expression -

    - - -

    +

    +

    Return Type -

    - - -

    +

    +

    Runtime Complexity -

    - +

    - -

    +

    f(a1, ...aN) -

    - - -

    +

    +

    result_of< F(T1, ...TN) >::type -

    - - -

    +

    +

    Unspecified -

    - +

    - + Models
      @@ -147,11 +139,10 @@
    - + Examples
    -
    -& a_free_function
    +
    & a_free_function
     & a_class::a_static_member_function
     std::less<int>()
     // using namespace boost;
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index 2728c32d..6836380c 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -4,10 +4,10 @@
      Regular Callable
             Object
     
    -
    -
    +
    +
     
    -
    +
     
     
    @@ -25,12 +25,16 @@
     PrevUpHomeNext
     
     
    -
    +
    +
    - + Description

    @@ -39,7 +43,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -69,7 +73,7 @@
    - + Expression requirements
    @@ -80,43 +84,31 @@ - -

    +

    Expression -

    - - -

    +

    +

    Return Type -

    - - -

    +

    +

    Runtime Complexity -

    - +

    - -

    +

    f(a1, ...aN) -

    - - -

    +

    +

    Unspecified -

    - - -

    +

    +

    Unspecified -

    - +

    - + Models
      @@ -128,11 +120,10 @@
    - + Examples
    -
    -& a_free_function
    +
    & a_free_function
     & a_class::a_static_member_function
     std::less<int>()
     // using namespace boost;
    diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html
    index 4620cf2c..3a5eade9 100644
    --- a/doc/html/fusion/functional/generation.html
    +++ b/doc/html/fusion/functional/generation.html
    @@ -3,10 +3,10 @@
     
     Generation
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -20,11 +20,15 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    - +
    + +
    +
    Functions
    Metafunctions
    @@ -41,7 +45,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index c9603fba..7894f6a7 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -24,8 +24,12 @@ PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index c210e657..5d8f1d2b 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -4,10 +4,10 @@ make_fused - - + + - + @@ -25,12 +25,16 @@ PrevUpHomeNext
    -
    + + make_fused +
    +
    +
    - + Description

    @@ -40,17 +44,16 @@ conversion is applied to the target function.

    - + Synopsis
    -
    -template <typename F>
    +
    template <typename F>
     inline typename make_fused<F>::type
     make_fused(F const & f);
     
    - + Parameters
    @@ -60,49 +63,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    f -

    -
    -

    +

    Model of Deferred Callable Object -

    -
    -

    +

    The function to transform. -

    -
    - + Expression Semantics
    -
    -make_fused(f);
    +
    make_fused(f);
     

    Return type: A specialization of fused. @@ -111,19 +101,17 @@ Semantics: Returns a fused adapter for f.

    - + Header
    -
    -#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    -
    -float sub(float a, float b) { return a - b; }
    +
    float sub(float a, float b) { return a - b; }
     
     void try_it()
     {
    @@ -135,7 +123,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 04de9c87..90dc7caf 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -4,13 +4,13 @@ make_fused_function_object - - + + - - + @@ -23,15 +23,19 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    + + make_fused_function_object +
    +
    +
    - + Description

    @@ -42,17 +46,16 @@ conversion is applied to the target function.

    - + Synopsis
    -
    -template <typename F>
    +
    template <typename F>
     inline typename make_fused_function_object<F>::type
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -62,49 +65,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    f -

    -
    -

    +

    Model of Polymorphic Function Object -

    -
    -

    +

    The function to transform. -

    -
    - + Expression Semantics
    -
    -make_fused_function_object(f);
    +
    make_fused_function_object(f);
     

    Return type: A specialization of fused_function_object. @@ -114,19 +104,17 @@ for f.

    - + Header
    -
    -#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    -
    -struct sub
    +
    struct sub
     {
         template <typename Sig>
         struct result;
    @@ -151,7 +139,7 @@
     }
     
    - + See also
    @@ -173,7 +161,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 9d554eb0..f9bebfa7 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -4,10 +4,10 @@ make_fused_procedure - - + + - @@ -26,12 +26,16 @@ PrevUpHomeNext
    -
    + + make_fused_procedure +
    +
    +
    - + Description

    @@ -42,17 +46,16 @@ conversion applied to the target function.

    - + Synopsis
    -
    -template <typename F>
    +
    template <typename F>
     inline typename make_fused_procedure<F>::type
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -62,48 +65,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    f -

    -
    -

    +

    Model of Callable Object -

    -
    -

    +

    The function to transform. -

    -
    - + Expression Semantics
    -
    -make_fused_procedure(f);
    +
    make_fused_procedure(f);
     

    Return type: A specialization of fused_procedure. @@ -113,25 +103,23 @@ f.

    - + Header
    -
    -#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    -
    -vector<int,int,int> v(1,2,3);
    +
    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
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html new file mode 100644 index 00000000..0298e0f0 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -0,0 +1,163 @@ + + + + + make_unfused + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    +
    + +
    +
    +
    + + Description +
    +

    + Creates a unfused 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<F>::type
    +make_unfused(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +

    + Parameter +

    + Requirement +

    + Description +

    + f +

    + Model of Polymorphic + Function Object +

    + The function to transform. +

    +
    + + Expression + Semantics +
    +
    make_unfused(f);
    +
    +

    + Return type: A specialization of unfused. +

    +

    + Semantics: Returns a unfused adapter for f. +

    +
    + + Header +
    +
    #include <boost/fusion/functional/generation/make_unfused.hpp>
    +#include <boost/fusion/include/make_unfused.hpp>
    +
    +
    + + Example +
    +
    struct fused_incrementer
    +{
    +    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(fused_incrementer())(a,b);
    +    assert(a == 3 && b == 'Y');
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 5d165479..5e91f690 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -3,11 +3,11 @@ Metafunctions - - + + - + @@ -22,11 +22,15 @@
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -53,7 +53,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 34b602b1..5a994cbb 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -4,10 +4,10 @@ make_fused - - + + - + @@ -25,12 +25,16 @@ PrevUpHomeNext
    -
    + + make_fused +
    +
    +
    - + Description

    @@ -38,19 +42,17 @@ make_fused">make_fused.

    - + Header
    -
    -#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    -
    -namespace result_of
    +
    namespace result_of
     {
         template<typename Function>
         struct make_fused
    @@ -60,7 +62,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 cc35e263..e32d4534 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -4,13 +4,13 @@ make_fused_function_object - - + + - - + @@ -23,15 +23,19 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    + + make_fused_function_object +
    +
    +
    - + Description

    @@ -39,19 +43,17 @@ make_fused_function_object">make_fused_function_object.

    - + Header
    -
    -#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    -
    -namespace result_of
    +
    namespace result_of
     {
         template<typename Function>
         struct make_fused_function_object
    @@ -61,7 +63,7 @@
     }
     
    - + See also
    @@ -79,7 +81,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 6a29a24e..492b80e5 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -4,10 +4,10 @@ make_fused_procedure - - + + - @@ -26,12 +26,16 @@ PrevUpHomeNext
    -
    + + make_fused_procedure +
    +
    +
    - + Description

    @@ -39,19 +43,17 @@ make_fused_procedure">make_fused_procedure.

    - + Header
    -
    -#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    -
    -namespace result_of
    +
    namespace result_of
     {
         template<typename Function>
         struct make_fused_procedure
    @@ -61,7 +63,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html new file mode 100644 index 00000000..2a8e12d3 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -0,0 +1,86 @@ + + + + + make_unfused + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    +
    + +
    +
    +
    + + Description +
    +

    + Returns the result type of make_unfused. +

    +
    + + Header +
    +
    #include <boost/fusion/functional/generation/make_unfused.hpp>
    +#include <boost/fusion/include/make_unfused.hpp>
    +
    +
    + + Synopsis +
    +
    namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index d1a29b0a..57b36bfe 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -3,10 +3,10 @@ Invocation - - + + - @@ -24,11 +24,16 @@ PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index abcc99ac..de44d69e 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    @@ -76,70 +82,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    f -

    -
    -

    +

    A Deferred Callable Object -

    -
    -

    +

    The function to call. -

    -
    -

    +

    s -

    -
    -

    +

    A Forward Sequence -

    -
    -

    +

    The arguments. -

    -
    - + Expression Semantics
    -
    -invoke(f,s);
    +
    invoke(f,s);
     

    Return type: Return type of f when invoked with the elements in @@ -150,19 +137,21 @@ with the elements in s as arguments and returns the result of the call expression.

    -

    - /functional/invocation/invoke.hpp> -

    +
    + + Header +
    +
    #include <boost/fusion/functional/invocation/invoke.hpp>
    +
    - + Example
    -
    -std::plus<int> add;
    +
    std::plus<int> add;
     assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    @@ -173,6 +162,8 @@ invoke_function_object">invoke_function_object
  • result_of::invoke
  • fused
  • +
  • make_fused
  • diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index a509ae35..25fc420a 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -4,10 +4,10 @@ invoke_function_object - - + + - @@ -25,12 +25,16 @@ PrevUpHomeNext
    -
    + + invoke_function_object +
    +
    +
    - + Description

    @@ -42,12 +46,14 @@ The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object.

    +

    + Constructors can be called applying Boost.Functional/Factory. +

    - + Synopsis
    -
    -template<
    +
    template<
         typename Function,
         class Sequence
         >
    @@ -64,7 +70,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -74,70 +80,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    f -

    -
    -

    +

    Model of Polymorphic Function Object -

    -
    -

    +

    The function object to call. -

    -
    -

    +

    s -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    The arguments. -

    -
    - + Expression Semantics
    -
    -invoke_function_object(f,s);
    +
    invoke_function_object(f,s);
     

    Return type: Return type of f when invoked with the elements in @@ -148,15 +135,17 @@ with the elements in s as arguments and returns the result of the call expression.

    -

    - /functional/invocation/invoke_function_object.hpp> -

    +
    + + Header +
    +
    #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
    +
    - + Example
    -
    -struct sub
    +
    struct sub
     {
         template <typename Sig>
         struct result;
    @@ -179,7 +168,7 @@
     }
     
    - + See also
    @@ -190,6 +179,8 @@
  • result_of::invoke_function_object
  • fused_function_object
  • +
  • make_fused_function_object
  • diff --git a/doc/html/fusion/functional/invocation/functions/invoke_proc.html b/doc/html/fusion/functional/invocation/functions/invoke_proc.html index f969edf9..dd35abd7 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -4,10 +4,10 @@ invoke_procedure - - + + - + @@ -25,12 +25,16 @@ PrevUpHomeNext
    -
    + + invoke_procedure +
    +
    +
    - + Description

    @@ -54,11 +58,10 @@ isn't implemented).

    - + Synopsis
    -
    -template<
    +
    template<
         typename Function,
         class Sequence
         >
    @@ -75,7 +78,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -85,69 +88,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    f -

    -
    -

    +

    Model of Callable Object -

    -
    -

    +

    The function to call. -

    -
    -

    +

    s -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    The arguments. -

    -
    - + Expression Semantics
    -
    -invoke_procedure(f,s);
    +
    invoke_procedure(f,s);
     

    Return type: void @@ -157,21 +141,23 @@ with the elements in s as arguments.

    -

    - /functional/invocation/invoke_procedure.hpp> -

    +
    + + Header +
    +
    #include <booost/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);
     
    - + See also
    @@ -182,6 +168,8 @@
  • result_of::invoke_procedure
  • fused_procedure
  • +
  • make_fused_procedure
  • diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html new file mode 100644 index 00000000..b07fc1af --- /dev/null +++ b/doc/html/fusion/functional/invocation/limits.html @@ -0,0 +1,73 @@ + + + +Limits + + + + + + + + +
    + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    +
    +

    +Limits +

    +
    +
    +
    + + Header +
    +
    #include <boost/fusion/functional/invocation/limits.hpp>
    +
    +
    + + Macros +
    +

    + The following macros can be defined to change the maximum arity. The default + is 6. +

    +
      +
    • + BOOST_FUSION_INVOKE_MAX_ARITY +
    • +
    • + BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY +
    • +
    • + BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 93aafaf4..7ad8bfe2 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - - + + - @@ -24,8 +24,12 @@ PrevUpHomeNext
    - +
    + +
    +
    - +
    +
    +invoke +
    +
    +
    - + Description

    Returns the result type of invoke.

    - + Synopsis
    -
    -namespace result_of
    +
    namespace result_of
     {
         template<
             typename Function,
    @@ -51,7 +54,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 f8b3b9bc..521c1442 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -4,12 +4,12 @@ invoke_function_object - - + + - - + @@ -22,15 +22,19 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    + + invoke_function_object +
    +
    +
    - + Description

    @@ -38,11 +42,10 @@ invoke_function_object">invoke_function_object.

    - + Synopsis
    -
    -namespace result_of
    +
    namespace result_of
     {
         template<
             class Function,
    @@ -55,7 +58,7 @@
     }
     
    - + See also
    @@ -76,7 +79,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 454969e5..31143059 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -4,10 +4,10 @@ invoke_procedure - - + + - + @@ -25,12 +25,16 @@ PrevUpHomeNext
    -
    + + invoke_procedure +
    +
    +
    - + Description

    @@ -38,11 +42,10 @@ invoke_procedure">invoke_procedure.

    - + Synopsis
    -
    -namespace result_of
    +
    namespace result_of
     {
         template<
             typename Function,
    @@ -55,7 +58,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 6587ef11..1cb677ef 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,10 +3,10 @@ Introduction - - + + - + @@ -23,8 +23,12 @@ 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 @@ -116,7 +120,7 @@ sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you wish to work solely on types - [1] + [1] . In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence @@ -131,7 +135,7 @@



    -

    [1] +

    [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 5aac9cbb..384fd8c6 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -3,10 +3,10 @@ Iterator - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext

    - +
    + +
    +
    Concepts
    @@ -74,11 +78,10 @@ Sequence.

    - + Header

    -
    -#include <boost/fusion/iterator.hpp>
    +
    #include <boost/fusion/iterator.hpp>
     #include <boost/fusion/include/iterator.hpp>
     
    diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html index 62b3bb31..f128002f 100644 --- a/doc/html/fusion/iterator/concepts.html +++ b/doc/html/fusion/iterator/concepts.html @@ -3,10 +3,10 @@ Concepts - - + + - + @@ -24,8 +24,12 @@ PrevUpHomeNext
    - +
    + +
    +
    Forward Iterator
    diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 88c318b3..0ce19ebc 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -4,10 +4,10 @@ Bidirectional Iterator - - + + - @@ -26,12 +26,16 @@ PrevUpHomeNext
    -

    + + Iterator +

    +
    +
    - + Description

    @@ -61,7 +65,7 @@

    - + Refinement of
    @@ -70,7 +74,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -86,103 +90,73 @@ - -

    +

    Expression -

    - - -

    +

    +

    Return type -

    - - -

    +

    +

    Runtime Complexity -

    - +

    - -

    +

    next(i) -

    - - -

    +

    +

    Bidirectional Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    prior(i) -

    - - -

    +

    +

    Bidirectional Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    advance_c<N>(i) -

    - - -

    +

    +

    Bidirectional Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    advance<M>(i) -

    - - -

    +

    +

    Bidirectional Iterator -

    - - -

    +

    +

    Constant -

    - +

    - + Meta Expressions
    @@ -192,32 +166,24 @@ - -

    +

    Expression -

    - - -

    +

    +

    Compile Time Complexity -

    - +

    - -

    +

    result_of::prior<I>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - + Expression Semantics
    @@ -233,32 +199,24 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    prior(i) -

    - - -

    +

    +

    An iterator to the element preceding i -

    - +

    - + Invariants

    @@ -275,7 +233,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 54fa0077..0edff7c2 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -4,10 +4,10 @@ Forward Iterator - - + + - + @@ -25,12 +25,16 @@ PrevUpHomeNext
    -

    + + Iterator +

    +
    +
    - + Description

    @@ -63,7 +67,7 @@

    - + Expression requirements
    @@ -78,173 +82,119 @@ - -

    +

    Expression -

    - - -

    +

    +

    Return type -

    - - -

    +

    +

    Runtime Complexity -

    - +

    - -

    +

    next(i) -

    - - -

    +

    +

    Forward Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    i == j -

    - - -

    +

    +

    Convertible to bool -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    i != j -

    - - -

    +

    +

    Convertible to bool -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    advance_c<N>(i) -

    - - -

    +

    +

    Forward Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    advance<M>(i) -

    - - -

    +

    +

    Forward Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    distance(i, j) -

    - - -

    +

    +

    result_of::distance<I, J>::type -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    deref(i) -

    - - -

    +

    +

    result_of::deref<I>::type -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    *i -

    - - -

    +

    +

    result_of::deref<I>::type -

    - - -

    +

    +

    Constant -

    - +

    - + Meta Expressions
    @@ -254,108 +204,76 @@ - -

    +

    Expression -

    - - -

    +

    +

    Compile Time Complexity -

    - +

    - -

    +

    result_of::next<I>::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<I ,M>::type -

    - - -

    +

    +

    Linear -

    - +

    - -

    +

    result_of::distance<I ,J>::type -

    - - -

    +

    +

    Linear -

    - +

    - -

    +

    result_of::deref<I>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::value_of<I>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - + Expression Semantics
    @@ -365,123 +283,87 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    next(i) -

    - - -

    +

    +

    An iterator to the element following i -

    - +

    - -

    +

    i == j -

    - - -

    +

    +

    Iterator equality comparison -

    - +

    - -

    +

    i != j -

    - - -

    +

    +

    Iterator 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 -

    - +

    - -

    +

    *i -

    - - -

    +

    +

    Equivalent to deref(i) -

    - +

    - + Invariants

    @@ -505,7 +387,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 6bcb5824..50672836 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -4,10 +4,10 @@ Random Access Iterator - - + + - @@ -25,12 +25,16 @@ PrevUpHomeNext
    -

    + + Access Iterator +

    +
    +
    - + Description

    @@ -63,7 +67,7 @@

    - + Refinement of
    @@ -73,7 +77,7 @@ Iterator

    - + Expression requirements
    @@ -89,103 +93,73 @@ - -

    +

    Expression -

    - - -

    +

    +

    Return type -

    - - -

    +

    +

    Runtime Complexity -

    - +

    - -

    +

    next(i) -

    - - -

    +

    +

    Random Access Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    prior(i) -

    - - -

    +

    +

    Random Access Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    advance_c<N>(i) -

    - - -

    +

    +

    Random Access Iterator -

    - - -

    +

    +

    Constant -

    - +

    - -

    +

    advance<M>(i) -

    - - -

    +

    +

    Random Access Iterator -

    - - -

    +

    +

    Constant -

    - +

    - + Meta Expressions
    @@ -195,60 +169,44 @@ - -

    +

    Expression -

    - - -

    +

    +

    Compile Time Complexity -

    - +

    - -

    +

    result_of::advance_c<I, N>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::advance<I, M>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::distance<I ,J>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - + Models
      diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 74b52d7f..24eba686 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -3,10 +3,10 @@ Functions - - + + - @@ -24,8 +24,12 @@ PrevUpHomeNext
    - +
    + +
    +
    deref
    next
    diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index f8beff4d..0d2d2903 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -3,10 +3,10 @@ advance - - + + - + @@ -23,28 +23,31 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         typename M
         >
     typename result_of::advance<I, M>::type advance(I const& i);
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -52,70 +55,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Iterator to move relative to -

    -
    -

    +

    N -

    -
    -

    +

    An MPL Integral Constant -

    -
    -

    +

    Number of positions to move -

    -
    - + Expression Semantics
    -
    -advance<M>(i);
    +
    advance<M>(i);
     

    Return type: A model of the same iterator @@ -131,19 +115,17 @@ may be negative.

    - + Header
    -
    -#include <boost/fusion/iterator/advance.hpp>
    +
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/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);
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
    index 80782f3f..342eef78 100644
    --- a/doc/html/fusion/iterator/functions/advance_c.html
    +++ b/doc/html/fusion/iterator/functions/advance_c.html
    @@ -3,10 +3,10 @@
     
     advance_c
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,28 +23,31 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         int N
         >
     typename result_of::advance_c<I, N>::type advance_c(I const& i);
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -52,69 +55,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Iterator to move relative to -

    -
    -

    +

    N -

    -
    -

    +

    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 @@ -130,19 +114,17 @@ may be negative.

    - + Header
    -
    -#include <boost/fusion/iterator/advance.hpp>
    +
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/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);
    diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
    index 6e980ce1..0efebf3f 100644
    --- a/doc/html/fusion/iterator/functions/deref.html
    +++ b/doc/html/fusion/iterator/functions/deref.html
    @@ -3,10 +3,10 @@
     
     deref
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,27 +23,30 @@
     PrevUpHomeNext
     
    - +
    +

    +deref +

    +
    +
    - + Description

    Deferences an iterator.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I
         >
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -51,50 +54,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -deref(i);
    +
    deref(i);
     

    Return type: result_of::deref<I>::type @@ -104,19 +94,17 @@ i.

    - + Header
    -
    -#include <boost/fusion/iterator/deref.hpp>
    +
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    -
    -typedef vector<int,int&> vec;
    +
    typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
    index eb820046..d02f51a5 100644
    --- a/doc/html/fusion/iterator/functions/distance.html
    +++ b/doc/html/fusion/iterator/functions/distance.html
    @@ -3,10 +3,10 @@
     
     distance
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,28 +23,31 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         typename J
         >
     typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i, j -

    -
    -

    +

    Models of Forward Iterator into the same sequence -

    -
    -

    +

    The start and end points of the distance to be measured -

    -
    - + Expression Semantics
    -
    -distance(i,j);
    +
    distance(i,j);
     

    Return type: int @@ -105,19 +95,17 @@ iterators i and j.

    - + Header
    -
    -#include <boost/fusion/iterator/distance.hpp>
    +
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/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);
    diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
    index 2ff7f62f..ec73a842 100644
    --- a/doc/html/fusion/iterator/functions/next.html
    +++ b/doc/html/fusion/iterator/functions/next.html
    @@ -3,10 +3,10 @@
     
     next
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,27 +23,30 @@
     PrevUpHomeNext
     
    - +
    +

    +next +

    +
    +
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I
         >
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -51,50 +54,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -next(i);
    +
    next(i);
     

    Return type: A model of the same iterator @@ -105,19 +95,17 @@ next element after i.

    - + Header
    -
    -#include <boost/fusion/iterator/next.hpp>
    +
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/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);
    diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
    index 4bb04c0d..d70a7929 100644
    --- a/doc/html/fusion/iterator/functions/prior.html
    +++ b/doc/html/fusion/iterator/functions/prior.html
    @@ -3,10 +3,10 @@
     
     prior
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,27 +23,30 @@
     PrevUpHomeNext
     
    - +
    +

    +prior +

    +
    +
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I
         >
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -51,50 +54,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i -

    -
    -

    +

    Model of Bidirectional Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -prior(i);
    +
    prior(i);
     

    Return type: A model of the same iterator @@ -105,19 +95,17 @@ element prior to i.

    - + Header
    -
    -#include <boost/fusion/iterator/prior.hpp>
    +
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    -
    -typedef vector<int,int> vec;
    +
    typedef vector<int,int> vec;
     
     vec v(1,2);
     assert(deref(next(begin(v))) == 2);
    diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html
    index a3796084..8d1fb1fd 100644
    --- a/doc/html/fusion/iterator/metafunctions.html
    +++ b/doc/html/fusion/iterator/metafunctions.html
    @@ -3,10 +3,10 @@
     
     Metafunctions
     
    -
    -
    +
    +
     
    -
     
     
    @@ -24,8 +24,12 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    value_of
    deref
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index c0d2e266..28aee7dc 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -3,10 +3,10 @@ advance - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         typename M
         >
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -55,70 +58,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Iterator to move relative to -

    -
    -

    +

    M -

    -
    -

    +

    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 @@ -133,19 +117,17 @@ may be negative.

    - + Header
    -
    -#include <boost/fusion/iterator/advance.hpp>
    +
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    -
    -typedef vector<int,double,char> vec;
    +
    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;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
    index 426cefda..21362060 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
    @@ -3,10 +3,10 @@
     
     advance_c
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         int N
         >
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -55,69 +58,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Iterator to move relative to -

    -
    -

    +

    N -

    -
    -

    +

    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 @@ -132,19 +116,17 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
    -
    -#include <boost/fusion/iterator/advance.hpp>
    +
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    -
    -typedef vector<int,double,char> vec;
    +
    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;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
    index 0d49a882..ebb7fc43 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref.html
    @@ -3,10 +3,10 @@
     
     deref
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    +

    +deref +

    +
    +
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    -
    -template<
    +
    template<
         typename I
         >
     struct deref
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -54,50 +57,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::deref<I>::type
    +
    result_of::deref<I>::type
     

    Return type: Any type @@ -107,19 +97,17 @@ an iterator of type I.

    - + Header
    -
    -#include <boost/fusion/iterator/deref.hpp>
    +
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/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;
    diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
    index 7f825ef8..9c034b4f 100644
    --- a/doc/html/fusion/iterator/metafunctions/distance.html
    +++ b/doc/html/fusion/iterator/metafunctions/distance.html
    @@ -3,10 +3,10 @@
     
     distance
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         typename J
         >
    @@ -47,7 +50,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -55,50 +58,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I, J -

    -
    -

    +

    Models of Forward Iterator into the same sequence -

    -
    -

    +

    The start and end points of the distance to be measured -

    -
    - + Expression Semantics
    -
    -result_of::distance<I, J>::type
    +
    result_of::distance<I, J>::type
     

    Return type: A model of MPL @@ -110,19 +100,17 @@ J.

    - + Header
    -
    -#include <boost/fusion/iterator/distance.hpp>
    +
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    -
    -typedef vector<int,double,char> vec;
    +
    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;
    diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
    index 6dc3d549..2864ede4 100644
    --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
    @@ -3,10 +3,10 @@
     
     equal_to
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

    @@ -35,11 +39,10 @@ and J are equal.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         typename J
         >
    @@ -49,7 +52,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -57,48 +60,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I, J -

    -
    -

    +

    Any fusion iterators -

    -
    -

    +

    Operation's arguments -

    -
    - + Expression Semantics
    -
    -result_of::equal_to<I, J>::type
    +
    result_of::equal_to<I, J>::type
     

    Return type: A model of MPL @@ -110,19 +100,17 @@ Returns boost::mpl::false_ otherwise.

    - + Header
    -
    -#include <boost/fusion/iterator/equal_to.hpp>
    +
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    -
    -typedef vector<int,double> vec;
    +
    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>));
    diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
    index 6f3f418f..5e57b362 100644
    --- a/doc/html/fusion/iterator/metafunctions/next.html
    +++ b/doc/html/fusion/iterator/metafunctions/next.html
    @@ -3,10 +3,10 @@
     
     next
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    +

    +next +

    +
    +
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    -
    -template<
    +
    template<
         typename I
         >
     struct next
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -54,50 +57,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::next<I>::type
    +
    result_of::next<I>::type
     

    Return type: A model of the same iterator @@ -108,19 +98,17 @@ next element in the sequence after I.

    - + Header
    -
    -#include <boost/fusion/iterator/next.hpp>
    +
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    -
    -typedef vector<int,double> vec;
    +
    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>));
    diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
    index 5a610de9..3b4ec8da 100644
    --- a/doc/html/fusion/iterator/metafunctions/prior.html
    +++ b/doc/html/fusion/iterator/metafunctions/prior.html
    @@ -3,10 +3,10 @@
     
     prior
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    +

    +prior +

    +
    +
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I
         >
     struct prior
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -54,50 +57,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I -

    -
    -

    +

    Model of Bidirectional Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::prior<I>::type
    +
    result_of::prior<I>::type
     

    Return type: A model of the same iterator @@ -108,19 +98,17 @@ previous element in the sequence before I.

    - + Header
    -
    -#include <boost/fusion/iterator/prior.hpp>
    +
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    -
    -typedef vector<int,double> vec;
    +
    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>));
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
    index 2dfe4eaf..4b2da1c1 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
    @@ -3,10 +3,10 @@
     
     value_of
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,21 +23,24 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I
         >
     struct value_of
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -54,50 +57,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    I -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -result_of::value_of<I>::type
    +
    result_of::value_of<I>::type
     

    Return type: Any type @@ -107,19 +97,17 @@ a sequence at iterator position I.

    - + Header
    -
    -#include <boost/fusion/iterator/value_of.hpp>
    +
    #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    - + Example
    -
    -typedef vector<int,int&,const int&> vec;
    +
    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;
    diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html
    index b32d3c47..ebc0f2c0 100644
    --- a/doc/html/fusion/iterator/operator.html
    +++ b/doc/html/fusion/iterator/operator.html
    @@ -3,10 +3,10 @@
     
     Operator
     
    -
    -
    +
    +
     
    -
    +
     
     
    @@ -24,8 +24,12 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    Operator *
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index e932b79c..e416868f 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -4,10 +4,10 @@ Operator == - - + + - @@ -26,30 +26,33 @@ PrevUpHomeNext
    -

    + + == +

    +
    +
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         typename J
         >
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -57,48 +60,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i, j -

    -
    -

    +

    Any fusion iterators -

    -
    -

    +

    Operation's arguments -

    -
    - + Expression Semantics
    -
    -i == j
    +
    i == j
     

    Return type: Convertible to bool. @@ -109,11 +99,10 @@ and j respectively.

    - + Header
    -
    -#include <boost/fusion/iterator/equal_to.hpp>
    +
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html index 3c86e83f..74a5ba8e 100644 --- a/doc/html/fusion/iterator/operator/operator_inequality.html +++ b/doc/html/fusion/iterator/operator/operator_inequality.html @@ -4,10 +4,10 @@ Operator != - - + + - @@ -25,30 +25,33 @@ PrevUpHomeNext
    -

    + + != +

    +
    +
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I,
         typename J
         >
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -56,43 +59,31 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i, j -

    -
    -

    +

    Any fusion iterators -

    -
    -

    +

    Operation's arguments -

    -
    - + Expression Semantics
    @@ -105,11 +96,10 @@ and j respectively.

    - + Header
    -
    -#include <boost/fusion/iterator/equal_to.hpp>
    +
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html index 05cda673..e3223959 100644 --- a/doc/html/fusion/iterator/operator/operator_unary_star.html +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html @@ -4,10 +4,10 @@ Operator * - - + + - + @@ -25,29 +25,32 @@ PrevUpHomeNext
    -

    + + * +

    +
    +
    - + Description

    Dereferences an iterator.

    - + Synopsis
    -
    -template<
    +
    template<
         typename I
         >
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -55,50 +58,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    i -

    -
    -

    +

    Model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    - + Expression Semantics
    -
    -*i
    +
    *i
     

    Return type: Equivalent to the return @@ -108,19 +98,17 @@ Semantics: Equivalent to deref(i).

    - + Header
    -
    -#include <boost/fusion/iterator/deref.hpp>
    +
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    -
    -typedef vector<int,int&> vec;
    +
    typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index c19a134b..5dfffa50 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -3,11 +3,11 @@
     
     Notes
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -21,13 +21,17 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    - +
    +

    +Notes +

    +
    +

    - + Recursive Inlined Functions

    @@ -41,7 +45,7 @@ remains linear.

    - + Overloaded Functions

    @@ -51,7 +55,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -73,8 +77,7 @@ For example, the fusion result_of::begin metafunction is implemented as follows:

    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     struct begin
     {
         typedef typename
    @@ -103,7 +106,7 @@
           
     

    - + Extensibility

    @@ -138,7 +141,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -146,8 +149,7 @@ 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, @@ -161,18 +163,16 @@

    Array arguments are deduced to reference to const types. For example - [14] + [10] :

    -
    -make_list("Donald", "Daisy")
    +
    make_list("Donald", "Daisy")
     

    creates a list of type

    -
    -list<const char (&)[7], const char (&)[6]>
    +
    list<const char (&)[7], const char (&)[6]>
     

    Function pointers: @@ -181,8 +181,7 @@ Function pointers are deduced to the plain non-reference type (i.e. to plain function pointer). Example:

    -
    -void f(int i);
    +
    void f(int i);
       ...
     make_list(&f);
     
    @@ -190,19 +189,17 @@ 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 types as plain non-reference types. Example:

    -
    -void foo(const A& a, B& b) {
    +
    void foo(const A& a, B& b) {
         ...
         make_list(a, b)
     
    @@ -210,8 +207,7 @@ 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 @@ -223,8 +219,7 @@

    For example:

    -
    -A a; B b; const A ca = a;
    +
    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&>
    @@ -237,7 +232,7 @@
         



    -

    [14] +

    [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref @@ -256,7 +251,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 2b8ba58c..090b980e 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,10 +3,10 @@ Organization - - + + - + @@ -23,8 +23,12 @@ 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 @@ -34,14 +38,14 @@ The library is organized in three layers:

    - + Layers

    - fusion_org + fusion_org

    @@ -65,7 +69,7 @@ against.

    - + Directory

      @@ -186,7 +190,7 @@

    - + Example

    @@ -194,20 +198,19 @@ depending on the granularity that you desire, you may do so by including one of

    -
    -#include <boost/fusion/container.hpp>
    +
    #include <boost/fusion/container.hpp>
     #include <boost/fusion/include/container.hpp>
     #include <boost/fusion/container/list.hpp>
     #include <boost/fusion/include/list.hpp>
     

    The first includes all containers The second includes only list - [4] + [4] .



    -

    [4] +

    [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 5a8da91d..a3db07de 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,10 +3,10 @@ Preface - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +

    @@ -44,7 +48,7 @@

    - + Description

    @@ -62,7 +66,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -88,7 +92,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -96,7 +100,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -104,91 +108,61 @@ - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Icon -

    -
    -

    +

    Name -

    -
    -

    +

    Meaning -

    -
    -

    - note -

    -
    -

    +

    + note +

    Note -

    -
    -

    +

    Information provided is auxiliary but will give the reader a deeper insight into a specific topic. May be skipped. -

    -
    -

    - alert -

    -
    -

    +

    + alert +

    Alert -

    -
    -

    +

    Information provided is of utmost importance. -

    -
    -

    - caution -

    -
    -

    +

    + caution +

    Caution -

    -
    -

    +

    A mild warning. -

    -
    -

    - tip -

    -
    -

    +

    + tip +

    Tip -

    -
    -

    +

    A potentially useful and helpful piece of information. -

    -
    @@ -199,7 +173,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 7b92387d..62ad1d5b 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,10 +3,10 @@ Quick Start - - + + - + @@ -23,8 +23,12 @@ 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 @@ -33,20 +37,18 @@

    For starters, we shall include all of Fusion's Sequence(s) - [2] + [2] :

    -
    -#include <boost/fusion/sequence.hpp>
    +
    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     

    Let's begin with a vector - [3] + [3] :

    -
    -vector<int, char, std::string> stuff(1, 'x', "howdy");
    +
    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);
    @@ -60,23 +62,21 @@
           Let's see some examples.
         

    - + Print the vector as XML

    First, let's include the algorithms:

    -
    -#include <boost/fusion/algorithm.hpp>
    +
    #include <boost/fusion/algorithm.hpp>
     #include <boost/fusion/include/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
    +
    struct print_xml
     {
         template <typename T>
         void operator()(T const& x) const
    @@ -92,8 +92,7 @@
     

    Now, finally:

    -
    -for_each(stuff, print_xml());
    +
    for_each(stuff, print_xml());
     

    That's it! for_each is a fusion algorithm. @@ -118,7 +117,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -127,14 +126,12 @@ which are pointers. Ah, easy. First, let's include the is_pointer boost type trait:

    -
    -#include <boost/type_traits/is_pointer.hpp>
    +
    #include <boost/type_traits/is_pointer.hpp>
     

    Then, simply:

    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     void xml_print_pointers(Sequence const& seq)
     {
         for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
    @@ -152,7 +149,7 @@
           Easy, right?
         

    - + Associative tuples

    @@ -169,8 +166,7 @@ associate types with elements. It can be used as a cleverer replacement of the struct. Example:

    -
    -namespace fields
    +
    namespace fields
     {
         struct name;
         struct age;
    @@ -190,8 +186,7 @@
           For example, given a a_person
           of type, person, you can do:
         

    -
    -using namespace fields;
    +
    using namespace fields;
     std::string person_name = at_key<name>(a_person);
     int person_age = at_key<age>(a_person);
     
    @@ -204,8 +199,7 @@ maps. Example:

    -
    -struct saver
    +
    struct saver
     {
         template <typename Pair>
         void operator()(Pair const& data) const
    @@ -227,7 +221,7 @@
           a dog or a whole alternate_universe.
         

    - + Tip of the Iceberg

    @@ -238,12 +232,12 @@



    -

    [2] +

    [2] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [3] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index e5d6d26a..f2ae59a4 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,10 +3,10 @@ References - - + + - + @@ -22,8 +22,12 @@ PrevUpHome
    - +
    + +
    +
    - +
    + +
    +
    Concepts
    @@ -59,11 +63,10 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    -
    -#include <boost/fusion/sequence.hpp>
    +
    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html index 9fd3ec7e..acfc1f0f 100644 --- a/doc/html/fusion/sequence/concepts.html +++ b/doc/html/fusion/sequence/concepts.html @@ -3,10 +3,10 @@ Concepts - - + + - + @@ -24,8 +24,12 @@ PrevUpHomeNext
    - +
    + +
    +
    Forward Sequence
    @@ -40,7 +44,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

    - + Traversal

    @@ -58,7 +62,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index ee092f1f..7ca14672 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -4,10 +4,10 @@ Associative Sequence - - + + - @@ -25,12 +25,16 @@ PrevUpHomeNext

    -

    + + Sequence +

    +
    +
    - + Description

    @@ -71,7 +75,7 @@

    - + Valid Expressions
    @@ -86,101 +90,69 @@
    - - + - + - + +

    - - + - - + + +

    - - + - - + + +

    - - + - + - + +

    -

    +

    Expression -

    -
    -

    +

    Return type -

    -
    -

    +

    Type Requirements -

    -
    -

    +

    Runtime Complexity -

    -
    -

    +

    has_key<K>(s) -

    -
    -

    +

    MPL Boolean Constant. Convertible to bool. -

    -
    -

    -

    -
    -

    +

    +

    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 -

    -

    - + Result Type Expressions
    @@ -190,61 +162,45 @@ - -

    +

    Expression -

    - - -

    +

    +

    Compile Time Complexity -

    - +

    - -

    +

    result_of::has_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 -

    - +

    - + Expression Semantics
    @@ -262,52 +218,40 @@ - -

    +

    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. -

    - +

    - -

    +

    at_key<K>(s) -

    - - -

    +

    +

    The element associated with the key K in the sequence s; see at. -

    - +

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 3e7b0d79..cb6c54e1 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -4,10 +4,10 @@ Bidirectional Sequence - - + + - @@ -26,12 +26,16 @@ PrevUpHomeNext
    -

    + + Sequence +

    +
    +
    - + Description

    @@ -42,7 +46,7 @@ Iterator.

    - + Refinement of
    @@ -72,7 +76,7 @@
    - + Valid Expressions
    @@ -89,125 +93,85 @@ - -

    +

    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 -

    - +

    - + Result Type Expressions
    @@ -217,58 +181,42 @@ - -

    +

    Expression -

    - - -

    +

    +

    Compile Time Complexity -

    - +

    - -

    +

    result_of::begin<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::end<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::back<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - + Expression Semantics
    @@ -284,32 +232,24 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    back(s) -

    - - -

    +

    +

    The last element in the sequence; see back. -

    - +

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 7d5f8719..8b8711a7 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -4,10 +4,10 @@ Forward Sequence - - + + - + @@ -25,12 +25,16 @@ PrevUpHomeNext
    -

    + + Sequence +

    +
    +
    - + Description

    @@ -62,7 +66,7 @@

    - + Valid Expressions
    @@ -77,169 +81,113 @@ - -

    +

    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 -

    - +

    - + Result Type Expressions
    @@ -249,82 +197,58 @@ - -

    +

    Expression -

    - - -

    +

    +

    Compile Time Complexity -

    - +

    - -

    +

    result_of::begin<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::end<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::size<S>::type -

    - - -

    +

    +

    Unspecified -

    - +

    - -

    +

    result_of::empty<S>::type -

    - - -

    +

    +

    Constant time -

    - +

    - -

    +

    result_of::front<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - + Expression Semantics
    @@ -334,85 +258,61 @@ - -

    +

    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. -

    - +

    - + Invariants

    @@ -438,7 +338,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 5de20cec..e98694dc 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -4,10 +4,10 @@ Random Access Sequence - - + + - @@ -26,12 +26,16 @@ PrevUpHomeNext
    -

    + + Access Sequence +

    +
    +
    - + Description

    @@ -43,7 +47,7 @@ sequence elements.

    - + Refinement of
    @@ -79,7 +83,7 @@
    - + Valid Expressions
    @@ -96,125 +100,85 @@ - -

    +

    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) = 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
    @@ -224,72 +188,52 @@ - -

    +

    Expression -

    - - -

    +

    +

    Compile Time Complexity -

    - +

    - -

    +

    result_of::begin<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::end<S>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::at<S, N>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - -

    +

    result_of::value_at<S, N>::type -

    - - -

    +

    +

    Amortized constant time -

    - +

    - + Expression Semantics
    @@ -313,32 +257,24 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    at<N>(s) -

    - - -

    +

    +

    The Nth element from the beginning of the sequence; see at. -

    - +

    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 7a65a0fe..af42206f 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -3,10 +3,10 @@ Intrinsic - - + + - @@ -24,8 +24,12 @@ PrevUpHomeNext
    - +
    + +
    +
    Functions
    Metafunctions
    @@ -37,20 +41,19 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [5] + [5] .

    - + Header

    -
    -#include <boost/fusion/sequence/intrinsic.hpp>
    +
    #include <boost/fusion/sequence/intrinsic.hpp>
     #include <boost/fusion/include/intrinsic.hpp>
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index 69208798..e2b94ae0 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -3,10 +3,10 @@ Functions - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    begin
    end
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 9c4b9d4b..91429544 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -3,10 +3,10 @@ at - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    -
    -at
    +
    +
    +at +
    +
    +
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    -
    -template <typename N, typename Sequence>
    +
    template <typename N, typename Sequence>
     typename result_of::at<Sequence, N>::type
     at(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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. -

    -
    - + Expression Semantics
    -
    -at<N>(seq);
    +
    at<N>(seq);
     

    Return type: Returns a reference to @@ -137,23 +121,20 @@

    Semantics: Equivalent to

    -
    -deref(advance<N>(begin(s)))
    +
    deref(advance<N>(begin(s)))
     
    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/at.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html index 7cb5f0bb..5af335fc 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html @@ -3,10 +3,10 @@ at_c - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +at_c +
    +
    +
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    -
    -template <int N, typename Sequence>
    +
    template <int N, typename Sequence>
     typename result_of::at_c<Sequence, N>::type
     at_c(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -56,68 +59,49 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    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. -

    -
    - + Expression Semantics
    -
    -at_c<N>(seq);
    +
    at_c<N>(seq);
     

    Return type: Returns a reference to @@ -137,23 +121,20 @@

    Semantics: Equivalent to

    -
    -deref(advance<N>(begin(s)))
    +
    deref(advance<N>(begin(s)))
     
    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/at_c.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html index ec15a26a..811f5537 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html @@ -3,10 +3,10 @@ at_key - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +at_key +
    +
    +
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    -
    -template <typename Key, typename Sequence>
    +
    template <typename Key, typename Sequence>
     typename result_of::at_key<Sequence, Key>::type
     at_key(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -56,68 +59,49 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Associative Sequence -

    -
    -

    +

    The sequence we wish to investigate. -

    -
    -

    +

    Key -

    -
    -

    +

    Any type -

    -
    -

    +

    The queried key. -

    -
    - + Expression Semantics
    -
    -at_key<Key>(seq);
    +
    at_key<Key>(seq);
     

    Return type: Returns a reference to @@ -136,19 +120,17 @@ with Key.

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/at_key.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html index addace54..57b4b4af 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/back.html +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html @@ -3,10 +3,10 @@ back - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +back +
    +
    +
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::back<Sequence>::type
     back(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -56,49 +59,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Bidirectional Sequence -

    -
    -

    +

    The sequence we wish to investigate. -

    -
    - + Expression Semantics
    -
    -back(seq);
    +
    back(seq);
     

    Return type: Returns a reference to @@ -117,19 +107,17 @@ in the sequence.

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/back.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html index 516eec4d..0263e040 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html @@ -3,10 +3,10 @@ begin - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +begin +
    +
    +
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::begin<Sequence>::type
     begin(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -56,49 +59,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    The sequence we wish to get an iterator from. -

    -
    - + Expression Semantics
    -
    -begin(seq);
    +
    begin(seq);
     

    Return type:

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/begin.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    -
    -vector<int, int, int> v(1, 2, 3);
    +
    vector<int, int, int> v(1, 2, 3);
     assert(deref(begin(v)) == 1);
     
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html index de9b5c8d..694e11d8 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html @@ -3,10 +3,10 @@ empty - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +empty +
    +
    +
    - + Description

    @@ -35,16 +39,15 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::empty<Sequence>::type
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -54,49 +57,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    The sequence we wish to investigate. -

    -
    - + Expression Semantics
    -
    -empty(seq);
    +
    empty(seq);
     

    Return type: Convertible to bool. @@ -106,19 +96,17 @@ to false.

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/empty.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html index 99039044..b33b5599 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/end.html +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html @@ -3,10 +3,10 @@ end - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    -
    -end
    +
    +
    +end +
    +
    +
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::end<Sequence>::type
     end(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -56,49 +59,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    The sequence we wish to get an iterator from. -

    -
    - + Expression Semantics
    -
    -end(seq);
    +
    end(seq);
     

    Return type:

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/end.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    -
    -vector<int, int, int> v(1, 2, 3);
    +
    vector<int, int, int> v(1, 2, 3);
     assert(deref(prior(end(v))) == 3);
     
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html index 20fadc19..5362469a 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/front.html +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html @@ -3,10 +3,10 @@ front - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    +
    +front +
    +
    +
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::front<Sequence>::type
     front(Sequence& seq);
     
    @@ -46,7 +49,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -56,49 +59,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    The sequence we wish to investigate. -

    -
    - + Expression Semantics
    -
    -front(seq);
    +
    front(seq);
     

    Return type: Returns a reference to @@ -117,19 +107,17 @@ in the sequence.

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/front.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html index 25811df4..798e7686 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html @@ -3,10 +3,10 @@ has_key - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    @@ -36,16 +40,15 @@ to false.

    - + Synopsis
    -
    -template <typename Key, typename Sequence>
    +
    template <typename Key, typename Sequence>
     typename result_of::has_key<Sequence, Key>::type
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -55,68 +58,49 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Associative Sequence -

    -
    -

    +

    The sequence we wish to investigate. -

    -
    -

    +

    Key -

    -
    -

    +

    Any type -

    -
    -

    +

    The queried key. -

    -
    - + Expression Semantics
    -
    -has_key<Key>(seq);
    +
    has_key<Key>(seq);
     

    Return type: Convertible to bool. @@ -126,19 +110,17 @@ associated with Key, else, evaluates to false.

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/has_key.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html index aa312a98..31d177c9 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/size.html +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html @@ -3,10 +3,10 @@ size - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    +
    +size +
    +
    +
    - + Description

    @@ -34,16 +38,15 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     typename result_of::size<Sequence>::type
     size(Sequence const& seq);
     
    - + Parameters
    @@ -53,49 +56,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq -

    -
    -

    +

    Model of Forward Sequence -

    -
    -

    +

    The sequence we wish to investigate. -

    -
    - + Expression Semantics
    -
    -size(seq);
    +
    size(seq);
     

    Return type: Convertible to int. @@ -105,19 +95,17 @@ in the sequence.

    - + Header
    -
    -#include <boost/fusion/sequence/intrinsic/size.hpp>
    +
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/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/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html index 3a573a71..c10e2b72 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html @@ -3,10 +3,10 @@ swap - - + + - + @@ -23,25 +23,28 @@ PrevUpHomeNext
    - +
    +
    +swap +
    +
    +
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    -
    -template<typename Seq1, typename Seq2>
    +
    template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -51,49 +54,36 @@ - - + - + +

    - - + - + +

    -

    +

    Parameters -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    seq1, seq2 -

    -
    -

    +

    Models of Forward Sequence -

    -
    -

    +

    The sequences whos elements we wish to swap. -

    -
    - + Expression Semantics
    -
    -swap(seq1, seq2);
    +
    swap(seq1, seq2);
     

    Return type: void @@ -108,11 +98,10 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    -
    -vector<int, std::string> v1(1, "hello"), v2(2, "world");
    +
    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"));
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html
    index 589d575b..8166d000 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html
    @@ -3,10 +3,10 @@
     
     Metafunctions
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,8 +23,12 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    begin
    end
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index f627a517..c9c97486 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -3,10 +3,10 @@ at - - + + - + @@ -23,23 +23,26 @@ PrevUpHomeNext
    -
    -at
    +
    +
    +at +
    +
    +
    - + Description

    Returns the result type of at - [6] + [6] .

    - + Synopsis
    -
    -template<
    +
    template<
         typename Seq,
         typename N>
     struct at
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -56,70 +59,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    +

    N -

    -
    -

    +

    An MPL Integral Constant -

    -
    -

    +

    Index of element -

    -
    - + Expression Semantics
    -
    -result_of::at<Seq, N>::type
    +
    result_of::at<Seq, N>::type
     

    Return type: Any type. @@ -132,16 +116,15 @@ /sequence/intrinsic/at.hpp>

    - + Example
    -
    -typedef vector<int,float,char> vec;
    +
    typedef vector<int,float,char> vec;
     BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
     


    -

    [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/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 2e74d5a1..97ba28cc 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -3,10 +3,10 @@ at_c - - + + - + @@ -23,23 +23,26 @@ PrevUpHomeNext

    - +
    +
    +at_c +
    +
    +
    - + Description

    Returns the result type of at_c - [7] + [7] .

    - + Synopsis
    -
    -template<
    +
    template<
         typename Seq,
         int M>
     struct at_c
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    +

    M -

    -
    -

    +

    Positive integer index -

    -
    -

    +

    Index of element -

    -
    - + Expression Semantics
    -
    -result_of::at_c<Seq, M>::type
    +
    result_of::at_c<Seq, M>::type
     

    Return type: Any type @@ -131,16 +115,15 @@ /sequence/intrinsic/at.hpp>

    - + Example
    -
    -typedef vector<int,float,char> vec;
    +
    typedef vector<int,float,char> vec;
     BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
     


    -

    [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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index e6905a1a..dfd8cae3 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -3,10 +3,10 @@ at_key - - + + - + @@ -23,23 +23,26 @@ PrevUpHomeNext

    - +
    +
    +at_key +
    +
    +
    - + Description

    Returns the result type of at_key - [8] + [8] .

    - + Synopsis
    -
    -template<
    +
    template<
         typename Seq,
         typename Key>
     struct at_key
    @@ -48,7 +51,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -56,69 +59,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    +

    Key -

    -
    -

    +

    Any type -

    -
    -

    +

    Key type -

    -
    - + Expression Semantics
    -
    -result_of::at_key<Seq, Key>::type
    +
    result_of::at_key<Seq, Key>::type
     

    Return type: Any type. @@ -133,16 +117,15 @@ /sequence/intrinsic/at_key.hpp>

    - + Example
    -
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +
    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] +

    [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/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 721782f6..61a62cc2 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -3,10 +3,10 @@ back - - + + - + @@ -23,28 +23,31 @@ PrevUpHomeNext

    - +
    +
    +back +
    +
    +
    - + Description

    Returns the result type of back.

    - + Synopsis
    -
    -template<typename Seq>
    +
    template<typename Seq>
     struct back
     {
         typedef unspecified type;
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    - + Expression Semantics
    -
    -result_of::back<Seq>::type
    +
    result_of::back<Seq>::type
     

    Return type: Any type @@ -108,11 +98,10 @@ /sequence/intrinsic/back.hpp>

    - + Example
    -
    -typedef vector<int,char> vec;
    +
    typedef vector<int,char> vec;
     BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
     
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html index cbe37740..a0fc4f58 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html @@ -3,10 +3,10 @@ begin - - + + - + @@ -23,28 +23,31 @@ PrevUpHomeNext
    - +
    +
    +begin +
    +
    +
    - + Description

    Returns the result type of begin.

    - + Synopsis
    -
    -template<typename Seq>
    +
    template<typename Seq>
     struct begin
     {
         typedef unspecified type;
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    - + Expression Semantics
    -
    -result_of::begin<Seq>::type
    +
    result_of::begin<Seq>::type
     

    Return type: An iterator modelling the @@ -109,11 +99,10 @@ /sequence/intrinsic/begin.hpp>

    - + Example
    -
    -typedef vector<int> vec;
    +
    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/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html index d5b777d0..4825331c 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html @@ -3,10 +3,10 @@ empty - - + + - + @@ -23,28 +23,31 @@ PrevUpHomeNext
    - +
    +
    +empty +
    +
    +
    - + Description

    Returns the result type of empty.

    - + Synopsis
    -
    -template<typename Seq>
    +
    template<typename Seq>
     struct empty
     {
         typedef unspecified type;
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    - + Expression Semantics
    -
    -result_of::empty<Seq>::type
    +
    result_of::empty<Seq>::type
     

    Return type: An MPL @@ -110,11 +100,10 @@ /sequence/intrinsic/empty.hpp>

    - + Example
    -
    -typedef vector<> empty_vec;
    +
    typedef vector<> empty_vec;
     typedef vector<int,float,char> vec;
     
     BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index d82b3a6a..fdf88564 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    @@ -3,10 +3,10 @@
     
     end
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,28 +23,31 @@
     PrevUpHomeNext
     
    -
    -end
    +
    +
    +end +
    +
    +
    - + Description

    Returns the result type of end.

    - + Synopsis
    -
    -template<typename Seq>
    +
    template<typename Seq>
     struct end
     {
         typedef unspecified type;
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    - + Expression Semantics
    -
    -result_of::end<Seq>::type
    +
    result_of::end<Seq>::type
     

    Return type: A model of the same traversal @@ -109,11 +99,10 @@ /sequence/intrinsic/end.hpp>

    - + Example
    -
    -typedef vector<int> vec;
    +
    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/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html index 37b92308..ffe3e082 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html @@ -3,10 +3,10 @@ front - - + + - + @@ -23,28 +23,31 @@ PrevUpHomeNext
    - +
    +
    +front +
    +
    +
    - + Description

    Returns the result type of front.

    - + Synopsis
    -
    -template<typename Seq>
    +
    template<typename Seq>
     struct front
     {
         typedef unspecified type;
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    - + Expression Semantics
    -
    -result_of::front<Seq>::type
    +
    result_of::front<Seq>::type
     

    Return type: Any type @@ -109,11 +99,10 @@ /sequence/intrinsic/front.hpp>

    - + Example
    -
    -typedef vector<int,char> vec;
    +
    typedef vector<int,char> vec;
     BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
     
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html index 851e1c03..3afd7418 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html @@ -3,10 +3,10 @@ has_key - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Seq,
         typename Key>
     struct has_key
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -54,69 +57,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    +

    Key -

    -
    -

    +

    Any type -

    -
    -

    +

    Key type -

    -
    - + Expression Semantics
    -
    -result_of::has_key<Seq, Key>::type
    +
    result_of::has_key<Seq, Key>::type
     

    Return type: An MPL @@ -132,11 +116,10 @@ /sequence/intrinsic/has_key.hpp>

    - + Example
    -
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +
    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/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html index 0a6a05c0..7b9c087d 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html @@ -3,10 +3,10 @@ size - - + + - + @@ -23,28 +23,31 @@ PrevUpHomeNext
    - +
    +
    +size +
    +
    +
    - + Description

    Returns the result type of size.

    - + Synopsis
    -
    -template<typename Seq>
    +
    template<typename Seq>
     struct size
     {
         typedef unspecified type;
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    - + Expression Semantics
    -
    -result_of::size<Seq>::type
    +
    result_of::size<Seq>::type
     

    Return type: An MPL @@ -109,11 +99,10 @@ /sequence/intrinsic/size.hpp>

    - + Example
    -
    -typedef vector<int,float,char> vec;
    +
    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/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html index e40a04ce..cd7bfb14 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html @@ -3,10 +3,10 @@ swap - - + + - + @@ -23,28 +23,31 @@ PrevUpHomeNext
    - +
    +
    +swap +
    +
    +
    - + Description

    Returns the return type of swap.

    - + Synopsis
    -
    -template<typename Seq1, typename Seq2>
    +
    template<typename Seq1, typename Seq2>
     struct swap
     {
         typedef void type;
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -52,50 +55,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameters -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq1, Seq2 -

    -
    -

    +

    Models of Forward Sequence -

    -
    -

    +

    The sequences being swapped -

    -
    - + Expression Semantics
    -
    -result_of::swap<Seq1, Seq2>::type
    +
    result_of::swap<Seq1, Seq2>::type
     

    Return type: void. diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index a47106ae..fe665b3e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html @@ -3,10 +3,10 @@ value_at - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext

    - +
    + +
    +
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Seq,
         typename N>
     struct value_at
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -54,70 +57,51 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    +

    N -

    -
    -

    +

    An MPL Integral Constant -

    -
    -

    +

    Index of element -

    -
    - + Expression Semantics
    -
    -result_of::value_at<Seq, N>::type
    +
    result_of::value_at<Seq, N>::type
     

    Return type: Any type. @@ -130,11 +114,10 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    -
    -typedef vector<int,float,char> vec;
    +
    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/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html index 7cc7efe8..8a7deecb 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html @@ -3,10 +3,10 @@ value_at_c - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Seq,
         int M>
     struct value_at_c
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -54,69 +57,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    +

    M -

    -
    -

    +

    Positive integer index -

    -
    -

    +

    Index of element -

    -
    - + Expression Semantics
    -
    -result_of::value_at_c<Seq, M>::type
    +
    result_of::value_at_c<Seq, M>::type
     

    Return type: Any type @@ -129,11 +113,10 @@ /sequence/intrinsic/value_at.hpp>

    - + Example
    -
    -typedef vector<int,float,char> vec;
    +
    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/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html index fea4702b..f294d2eb 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html @@ -3,10 +3,10 @@ value_at_key - - + + - + @@ -23,21 +23,24 @@ PrevUpHomeNext
    - +
    + +
    +
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    -
    -template<
    +
    template<
         typename Seq,
         typename Key>
     struct value_at_key
    @@ -46,7 +49,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -54,69 +57,50 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    Seq -

    -
    -

    +

    A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    +

    Key -

    -
    -

    +

    Any type -

    -
    -

    +

    Key type -

    -
    - + Expression Semantics
    -
    -result_of::value_at_key<Seq, Key>::type
    +
    result_of::value_at_key<Seq, Key>::type
     

    Return type: Any type. @@ -130,11 +114,10 @@ /sequence/intrinsic/value_at_key.hpp>

    - + Example
    -
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +
    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/sequence/operator.html b/doc/html/fusion/sequence/operator.html index b60aa3bc..6c3f0e63 100644 --- a/doc/html/fusion/sequence/operator.html +++ b/doc/html/fusion/sequence/operator.html @@ -3,10 +3,10 @@ Operator - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    I/O
    Comparison
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index 173ded05..646951a7 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -3,10 +3,10 @@ Comparison - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    equal
    not @@ -48,11 +52,10 @@ only until the result is clear.

    - + Header
    -
    -#include <boost/fusion/sequence/comparison.hpp>
    +
    #include <boost/fusion/sequence/comparison.hpp>
     #include <boost/fusion/include/comparison.hpp>
     
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html index c76ddb57..06345af6 100644 --- a/doc/html/fusion/sequence/operator/comparison/equal.html +++ b/doc/html/fusion/sequence/operator/comparison/equal.html @@ -3,10 +3,10 @@ equal - - + + - + @@ -24,26 +24,29 @@ PrevUpHomeNext
    - +
    +
    +equal +
    +
    +
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    -
    -template <typename Seq1, typename Seq2>
    +
    template <typename Seq1, typename Seq2>
     bool
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,48 +56,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    a, b -

    -
    -

    +

    Instances of Sequence -

    -
    -

    +

    Sequence(s) to compare -

    -
    - + Expression Semantics
    -
    -a == b
    +
    a == b
     

    Return type: bool @@ -125,19 +115,17 @@ true.

    - + Header
    -
    -#include <boost/fusion/sequence/comparison/equal_to.hpp>
    +
    #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    -
    -vector<int, char> v1(5, 'a');
    +
    vector<int, char> v1(5, 'a');
     vector<int, char> v2(5, 'a');
     assert(v1 == v2);
     
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html index 9f19fd25..7b3f04ec 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html @@ -4,10 +4,10 @@ greater than - - + + - @@ -26,24 +26,27 @@ PrevUpHomeNext
    -
    + + than +
    +
    +

    Lexicographically compare two sequences.

    - + Synopsis
    -
    -template <typename Seq1, typename Seq2>
    +
    template <typename Seq1, typename Seq2>
     bool
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,48 +56,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    a, b -

    -
    -

    +

    Instances of Sequence -

    -
    -

    +

    Sequence(s) to compare -

    -
    - + Expression Semantics
    -
    -a > b
    +
    a > b
     

    Return type: bool @@ -117,19 +107,17 @@ Semantics: Returns b < a.

    - + Header
    -
    -#include <boost/fusion/sequence/comparison/less_equal.hpp>
    +
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    -
    -vector<int, float> v1(4, 3.3f);
    +
    vector<int, float> v1(4, 3.3f);
     vector<short, float> v2(5, 3.3f);
     vector<long, double> v3(5, 4.4);
     assert(v2 > v1);
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index e0be2950..65a75b58 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    @@ -4,10 +4,10 @@
     greater
               than equal
     
    -
    -
    +
    +
     
    -
     
     
    @@ -25,24 +25,27 @@
     PrevUpHomeNext
     
    -
    + + than equal +
    +
    +

    Lexicographically compare two sequences.

    - + Synopsis
    -
    -template <typename Seq1, typename Seq2>
    +
    template <typename Seq1, typename Seq2>
     bool
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -52,48 +55,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    a, b -

    -
    -

    +

    Instances of Sequence -

    -
    -

    +

    Sequence(s) to compare -

    -
    - + Expression Semantics
    -
    -a >= b
    +
    a >= b
     

    Return type: bool @@ -116,19 +106,17 @@ Semantics: Returns !(a < b).

    - + Header
    -
    -#include <boost/fusion/sequence/comparison/greater_equal.hpp>
    +
    #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    -
    -vector<int, float> v1(4, 3.3f);
    +
    vector<int, float> v1(4, 3.3f);
     vector<short, float> v2(5, 3.3f);
     vector<long, double> v3(5, 4.4);
     assert(v2 >= v1);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index 42dbe895..f4d6e672 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
    @@ -4,10 +4,10 @@
     less
               than
     
    -
    -
    +
    +
     
    -
     
    @@ -26,24 +26,27 @@
     PrevUpHomeNext
     
    -
    + + than +
    +
    +

    Lexicographically compare two sequences.

    - + Synopsis
    -
    -template <typename Seq1, typename Seq2>
    +
    template <typename Seq1, typename Seq2>
     bool
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,48 +56,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    a, b -

    -
    -

    +

    Instances of Sequence -

    -
    -

    +

    Sequence(s) to compare -

    -
    - + Expression Semantics
    -
    -a < b
    +
    a < b
     

    Return type: bool @@ -119,19 +109,17 @@ and b.

    - + Header
    -
    -#include <boost/fusion/sequence/comparison/less.hpp>
    +
    #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    -
    -vector<int, float> v1(4, 3.3f);
    +
    vector<int, float> v1(4, 3.3f);
     vector<short, float> v2(5, 3.3f);
     vector<long, double> v3(5, 4.4);
     assert(v1 < v2);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index 300ec0ab..de2c1bd5 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    @@ -4,10 +4,10 @@
     less
               than equal
     
    -
    -
    +
    +
     
    -
     
    @@ -26,24 +26,27 @@
     PrevUpHomeNext
     
    -
    + + than equal +
    +
    +

    Lexicographically compare two sequences.

    - + Synopsis
    -
    -template <typename Seq1, typename Seq2>
    +
    template <typename Seq1, typename Seq2>
     bool
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,48 +56,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    a, b -

    -
    -

    +

    Instances of Sequence -

    -
    -

    +

    Sequence(s) to compare -

    -
    - + Expression Semantics
    -
    -a <= b
    +
    a <= b
     

    Return type: bool @@ -117,19 +107,17 @@ Semantics: Returns !(b < a).

    - + Header
    -
    -#include <boost/fusion/sequence/comparison/less_equal.hpp>
    +
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    -
    -vector<int, float> v1(4, 3.3f);
    +
    vector<int, float> v1(4, 3.3f);
     vector<short, float> v2(5, 3.3f);
     vector<long, double> v3(5, 4.4);
     assert(v1 <= v2);
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index 089452a4..5c7fb1d3 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    @@ -4,10 +4,10 @@
     not
               equal
     
    -
    -
    +
    +
     
    -
    +
     
     
    @@ -25,24 +25,27 @@
     PrevUpHomeNext
     
    -
    + + equal +
    +
    +

    Compare two sequences for inequality.

    - + Synopsis
    -
    -template <typename Seq1, typename Seq2>
    +
    template <typename Seq1, typename Seq2>
     bool
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -52,48 +55,35 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    a, b -

    -
    -

    +

    Instances of Sequence -

    -
    -

    +

    Sequence(s) to compare -

    -
    - + Expression Semantics
    -
    -a != b
    +
    a != b
     

    Return type: bool @@ -119,19 +109,17 @@ Returns !(a == b).

    - + Header
    -
    -#include <boost/fusion/sequence/comparison/not_equal_to.hpp>
    +
    #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    -
    -vector<int, char> v3(5, 'b');
    +
    vector<int, char> v3(5, 'b');
     vector<int, char> t4(2, 'a');
     assert(v1 != v3);
     assert(v1 != t4);
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index c8ec47dc..207565e9 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -3,10 +3,10 @@
     
     I/O
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,8 +23,12 @@
     PrevUpHomeNext
     
    -

    -I/O

    +
    +

    +I/O +

    +
    +
    in
    out
    @@ -43,8 +47,7 @@ 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;
     

    @@ -79,8 +82,7 @@

    Example:

    -
    -std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;
    +
    std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;
     

    outputs the same vector, a @@ -91,14 +93,12 @@ as well. Suppose the std::cin stream contains the following data:

    -
    -(1 2 3) [4:5]
    +
    (1 2 3) [4:5]
     

    The code:

    -
    -vector<int, int, int> i;
    +
    vector<int, int, int> i;
     vector<int, int> j;
     
     std::cin >> i;
    @@ -116,11 +116,10 @@
               representation may not be unambiguously parseable.
             

    - + Header
    -
    -#include <boost/fusion/sequence/io.hpp>
    +
    #include <boost/fusion/sequence/io.hpp>
     #include <boost/fusion/include/io.hpp>
     
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html index 40fb2b53..dd769851 100644 --- a/doc/html/fusion/sequence/operator/i_o/in.html +++ b/doc/html/fusion/sequence/operator/i_o/in.html @@ -3,10 +3,10 @@ in - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    -
    -in
    +
    +
    +in +
    +
    +
    - + Description

    @@ -34,16 +38,15 @@ stream.

    - + Synopsis
    -
    -template <typename IStream, typename Sequence>
    +
    template <typename IStream, typename Sequence>
     IStream&
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -53,66 +56,47 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    is -

    -
    -

    +

    An input stream. -

    -
    -

    +

    Stream to extract information from. -

    -
    -

    +

    seq -

    -
    -

    +

    A Sequence. -

    -
    -

    +

    The sequence to read. -

    -
    - + Expression Semantics
    -
    -is >> seq
    +
    is >> seq
     

    Return type: IStream& @@ -123,19 +107,17 @@ e.

    - + Header
    -
    -#include <boost/fusion/sequence/io/in.hpp>
    +
    #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    -
    -vector<int, std::string, char> v;
    +
    vector<int, std::string, char> v;
     std::cin >> v;
     
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html index 63e3d34d..2b081701 100644 --- a/doc/html/fusion/sequence/operator/i_o/out.html +++ b/doc/html/fusion/sequence/operator/i_o/out.html @@ -3,10 +3,10 @@ out - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    -
    -out
    +
    +
    +out +
    +
    +
    - + Description

    @@ -34,16 +38,15 @@ stream.

    - + Synopsis
    -
    -template <typename OStream, typename Sequence>
    +
    template <typename OStream, typename Sequence>
     OStream&
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -53,66 +56,47 @@ - - + - + +

    - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    os -

    -
    -

    +

    An output stream. -

    -
    -

    +

    Stream to write information to. -

    -
    -

    +

    seq -

    -
    -

    +

    A Sequence. -

    -
    -

    +

    The sequence to write. -

    -
    - + Expression Semantics
    -
    -os << seq
    +
    os << seq
     

    Return type: OStream& @@ -123,19 +107,17 @@ e.

    - + Header
    -
    -#include <boost/fusion/sequence/io/out.hpp>
    +
    #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/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/support.html b/doc/html/fusion/support.html index 3f08cffc..7b36fd9c 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,10 +3,10 @@ Support - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +
    is_sequence
    is_view
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index f04098bd..7da56cdd 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,10 +3,10 @@ category_of - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +

    - + Description

    @@ -36,11 +40,10 @@ Sequence Concepts).

    - + Synopsis

    -
    -namespace traits
    +
    namespace traits
     {
         template <typename T>
         struct category_of
    @@ -50,7 +53,7 @@
     }
     

    - + Parameters

    @@ -60,47 +63,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    The type to query. -

    -

    - + Expression Semantics

    -
    -typedef traits::category_of<T>::type category;
    +
    typedef traits::category_of<T>::type category;
     

    Return type: @@ -108,8 +98,7 @@

    For Iterators, the return type is derived from one of:

    -
    -namespace boost { namespace fusion
    +
    namespace boost { namespace fusion
     {
         struct incrementable_traversal_tag {};
     
    @@ -129,8 +118,7 @@
     

    For Sequences, the return type is derived from one of:

    -
    -namespace boost { namespace fusion
    +
    namespace boost { namespace fusion
     {
         struct incrementable_sequence_tag {};
     
    @@ -150,8 +138,7 @@
     

    And optionally from:

    -
    -namespace boost { namespace fusion
    +
    namespace boost { namespace fusion
     {
         struct associative_sequence_tag {};
     }}
    @@ -161,19 +148,17 @@
             of a particular Sequence or Iterator.
           

    - + Header

    -
    -#include <boost/fusion/support/category_of.hpp>
    +
    #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     

    - + Example

    -
    -using boost::is_base_of;
    +
    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_traversal_tag, list_category> ));
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index f245a0c1..24e42164 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -3,10 +3,10 @@
     
     deduce
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    +

    +deduce +

    +
    +

    - + Description

    @@ -39,19 +43,17 @@ Reference wrappers are removed (see boost::ref).

    - + Header

    -
    -#include <boost/fusion/support/deduce.hpp>
    +
    #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     

    - + Synopsis

    -
    -namespace traits
    +
    namespace traits
     {
         template <typename T>
         struct deduce
    @@ -61,11 +63,10 @@
     }
     

    - + Example

    -
    -template <typename T>
    +
    template <typename T>
     struct holder
     {
         typename traits::deduce<T const &>::type element;
    @@ -82,7 +83,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 0ac46f2c..7c0eef03 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,10 +3,10 @@ deduce_sequence - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +

    - + Description

    @@ -39,19 +43,17 @@ original type as its argument.

    - + Header

    -
    -#include <boost/fusion/support/deduce_sequence.hpp>
    +
    #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     

    - + Synopsis

    -
    -namespace traits
    +
    namespace traits
     {
         template <class Sequence>
         struct deduce_sequence
    @@ -61,11 +63,10 @@
     }
     

    - + Example

    -
    -template <class Seq>
    +
    template <class Seq>
     struct holder
     {
         typename traits::deduce_sequence<Seq>::type element;
    @@ -84,7 +85,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index dbf93333..a54a64a9 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,10 +3,10 @@ is_sequence - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +

    - + Description

    @@ -37,11 +41,10 @@ conforming sequences.

    - + Synopsis

    -
    -namespace traits
    +
    namespace traits
     {
         template <typename T>
         struct is_sequence
    @@ -51,7 +54,7 @@
     }
     

    - + Parameters

    @@ -61,47 +64,34 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    The type to query. -

    -

    - + Expression Semantics

    -
    -typedef traits::is_sequence<T>::type c;
    +
    typedef traits::is_sequence<T>::type c;
     

    Return type: An MPL @@ -114,19 +104,17 @@ otherwise.

    - + Header

    -
    -#include <boost/fusion/support/is_sequence.hpp>
    +
    #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     

    - + Example

    -
    -BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
    +
    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> > ));
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index 516e6129..75bb31b0 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -3,10 +3,10 @@
     
     is_view
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    + +
    +

    - + Description

    @@ -40,11 +44,10 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    -
    -namespace traits
    +
    namespace traits
     {
         template <typename T>
         struct is_view
    @@ -54,7 +57,7 @@
     }
     

    - + Parameters

    @@ -64,46 +67,33 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    The type to query. -

    -

    - + Expression Semantics

    -
    -typedef traits::is_view<T>::type c;
    +
    typedef traits::is_view<T>::type c;
     

    Return type: An MPL @@ -116,19 +106,17 @@ otherwise.

    - + Header

    -
    -#include <boost/fusion/support/is_view.hpp>
    +
    #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     

    - + Example

    -
    -BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
    +
    BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
     BOOST_MPL_ASSERT_NOT(( traits::is_view<int> ));
     
     using boost::mpl::_
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index b6fdb969..91f9088b 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -3,10 +3,10 @@
     
     pair
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    +

    +pair +

    +
    +

    - + Description

    @@ -37,11 +41,10 @@ for example.

    - + Synopsis

    -
    -template <typename First, typename Second>
    +
    template <typename First, typename Second>
     struct pair;
     
     namespace result_of
    @@ -61,7 +64,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -70,41 +73,29 @@ - - + +

    - - + +

    - - + +

    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    First -

    -
    -

    +

    The first type. This is purely a type. No data is held. -

    -
    -

    +

    Second -

    -
    -

    +

    The second type. This contains data. -

    -
    @@ -140,7 +131,7 @@

    - + Expression Semantics

    @@ -149,190 +140,136 @@ - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    -

    +

    Expression -

    -
    -

    +

    Semantics -

    -
    -

    +

    P::first_type -

    -
    -

    +

    The type of the first template parameter, F, equivalent to result_of::first<P>::type. -

    -
    -

    +

    P::second_type -

    -
    -

    +

    The type of the second template parameter, S, equivalent to result_of::second<P>::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. -

    -
    -

    +

    p.second -

    -
    -

    +

    Get the data from p1. -

    -
    -

    +

    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 -

    -
    -

    +

    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. -

    -

    - + Header

    -
    -#include <boost/fusion/support/pair.hpp>
    +
    #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     

    - + Example

    -
    -pair<int, char> p('X');
    +
    pair<int, char> p('X');
     std::cout << p << std::endl;
     std::cout << make_pair<int>('X') << std::endl;
     assert((p == make_pair<int>('X')));
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 602913dd..fa39c0c0 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -3,10 +3,10 @@
     
     tag_of
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    +

    +tag_of +

    +
    +

    - + Description

    @@ -40,11 +44,10 @@ conforming sequences.

    - + Synopsis

    -
    -namespace traits
    +
    namespace traits
     {
         template<typename Sequence>
         struct tag_of
    @@ -54,7 +57,7 @@
     }
     

    - + Parameters

    @@ -64,46 +67,33 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    +

    The type to query. -

    -

    - + Expression Semantics

    -
    -typedef traits::tag_of<T>::type tag;
    +
    typedef traits::tag_of<T>::type tag;
     

    Return type: Any type. @@ -113,19 +103,17 @@ with T.

    - + Header

    -
    -#include <boost/fusion/support/tag_of.hpp>
    +
    #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     

    - + Example

    -
    -typedef traits::tag_of<list<> >::type tag1;
    +
    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;
    diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html
    index cfa62786..9abb1754 100644
    --- a/doc/html/fusion/tuple.html
    +++ b/doc/html/fusion/tuple.html
    @@ -3,10 +3,10 @@
     
     Tuple
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,8 +23,12 @@
     PrevUpHomeNext
     
    - +
    +

    +Tuple +

    +
    +
    Class template tuple
    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 5a5ea9ff..210e3abd 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -3,10 +3,10 @@ Class template tuple - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    Construction
    Tuple @@ -48,11 +52,10 @@ in future releases of fusion.

    - + Synopsis

    -
    -template<
    +
    template<
         typename T1 = unspecified,
         typename T2 = unspecified,
         ...
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index e9a5c7ed..dcb36b49 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -3,10 +3,10 @@
     
     Construction
     
    -
    -
    +
    +
     
    -
    +
     
     
    @@ -24,10 +24,14 @@
     PrevUpHomeNext
     
    - +
    + +
    +
    - + Description

    @@ -38,7 +42,7 @@ in this section.

    - + Specification
    @@ -69,8 +73,7 @@

    -
    -tuple();
    +
    tuple();
     

    Requirements: Each Ti @@ -80,8 +83,7 @@ Semantics: Default initializes each element of the tuple.

    -
    -tuple(P1,P2,...,PN);
    +
    tuple(P1,P2,...,PN);
     

    Requirements: Each Pi @@ -91,8 +93,7 @@ Semantics: Copy initializes each element with the corresponding parameter.

    -
    -tuple(const tuple& t);
    +
    tuple(const tuple& t);
     

    Requirements: Each Ti @@ -103,8 +104,7 @@ of *this with the corresponding element of t.

    -
    -template<typename U1, typename U2, ..., typename UN>
    +
    template<typename U1, typename U2, ..., typename UN>
     tuple(const tuple<U1, U2, ..., UN>& t);
     

    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 38d0c243..42ea67b2 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -4,10 +4,10 @@ Element access - - + + - @@ -26,12 +26,16 @@ PrevUpHomeNext

    -

    + + access +

    +
    +
    - + Description

    @@ -40,11 +44,10 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    -
    -template<int I, T>
    +
    template<int I, T>
     RJ get(T& t);
     

    @@ -62,8 +65,7 @@

    Returns: A reference to the Ith element of T.

    -
    -template<int I, typename T>
    +
    template<int I, typename T>
     PJ get(T const& t);
     

    diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html index 896a5c0d..03009096 100644 --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html @@ -4,10 +4,10 @@ Relational operators - - + + - @@ -25,12 +25,16 @@ PrevUpHomeNext

    -

    + + operators +

    +
    +
    - + Description

    @@ -38,7 +42,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    @@ -69,8 +73,7 @@

    -
    -template<typename T1, typename T2, ..., typename TN,
    +
    template<typename T1, typename T2, ..., typename TN,
              typename U1, typename U2, ..., typename UN>
     bool operator==(
         const tuple<T1, T2, ..., TN>& lhs,
    @@ -95,8 +98,7 @@
               == f
               returns true.
             

    -
    -template<typename T1, typename T2, ..., typename TN,
    +
    template<typename T1, typename T2, ..., typename TN,
              typename U1, typename U2, ..., typename UN>
     bool operator<(
         const tuple<T1, T2, ..., TN>& lhs,
    @@ -116,8 +118,7 @@
               comparison of between lhs
               and rhs.
             

    -
    -template<typename T1, typename T2, ..., typename TN,
    +
    template<typename T1, typename T2, ..., typename TN,
              typename U1, typename U2, ..., typename UN>
     bool operator!=(
         const tuple<T1, T2, ..., TN>& lhs,
    @@ -135,8 +136,7 @@
     

    Semantics: Returns !(lhs == rhs).

    -
    -template<typename T1, typename T2, ..., typename TN,
    +
    template<typename T1, typename T2, ..., typename TN,
              typename U1, typename U2, ..., typename UN>
     bool operator<=(
         const tuple<T1, T2, ..., TN>& lhs,
    @@ -154,8 +154,7 @@
     

    Semantics: Returns !(rhs < lhs)

    -
    -template<typename T1, typename T2, ..., typename TN,
    +
    template<typename T1, typename T2, ..., typename TN,
              typename U1, typename U2, ..., typename UN>
     bool operator>(
         const tuple<T1, T2, ..., TN>& lhs,
    @@ -174,8 +173,7 @@
               Semantics: Returns rhs
               < lhs.
             

    -
    -template<typename T1, typename T2, ..., typename TN,
    +
    template<typename T1, typename T2, ..., typename TN,
              typename U1, typename U2, ..., typename UN>
     bool operator>=(
         const tuple<T1, T2, ..., TN>& lhs,
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html
    index 5a61e7e9..6ca825e5 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html
    @@ -4,10 +4,10 @@
     Tuple
             creation functions
     
    -
    -
    +
    +
     
    -
    +
     
     
    @@ -25,12 +25,16 @@
     PrevUpHomeNext
     
    -

    + + creation functions +

    +
    +
    - + Description

    @@ -40,11 +44,10 @@ functions are described in this section.

    - + Specification
    -
    -template<typename T1, typename T2, ..., typename TN>
    +
    template<typename T1, typename T2, ..., typename TN>
     tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
     

    @@ -56,8 +59,7 @@

    Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN)

    -
    -template<typename T1, typename T2, ..., typename TN>
    +
    template<typename T1, typename T2, ..., typename TN>
     tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
     

    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html index a79dd592..144ae7bd 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html @@ -4,10 +4,10 @@ Tuple helper classes - - + + - @@ -26,12 +26,16 @@ PrevUpHomeNext

    -

    + + helper classes +

    +
    +
    - + Description

    @@ -40,11 +44,10 @@ tuple size, and the element types.

    - + Specification
    -
    -tuple_size<T>::value
    +
    tuple_size<T>::value
     

    Requires: T @@ -58,8 +61,7 @@ Value: The number of elements in the sequence. Equivalent to result_of::size<T>::type.

    -
    -tuple_element<I, T>::type
    +
    tuple_element<I, T>::type
     

    Requires: T diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html index 8c91a35f..e4c9f43d 100644 --- a/doc/html/fusion/tuple/pairs.html +++ b/doc/html/fusion/tuple/pairs.html @@ -3,10 +3,10 @@ Pairs - - + + - @@ -24,10 +24,14 @@ PrevUpHomeNext

    - +
    +

    +View +

    +
    +
    single_view
    filter_view
    @@ -44,11 +48,10 @@ to copy and be passed around by value.

    - + Header

    -
    -#include <boost/fusion/view.hpp>
    +
    #include <boost/fusion/view.hpp>
     #include <boost/fusion/include/view.hpp>
     
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html index f15d8e8a..9e72031b 100644 --- a/doc/html/fusion/view/filter_view.html +++ b/doc/html/fusion/view/filter_view.html @@ -3,10 +3,10 @@ filter_view - - + + - + @@ -23,10 +23,14 @@ PrevUpHomeNext
    - +
    + +
    +

    - + Description

    @@ -37,23 +41,21 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header

    -
    -#include <boost/fusion/view/filter_view.hpp>
    +
    #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     

    - + Synopsis

    -
    -template <typename Sequence, typename Pred>
    +
    template <typename Sequence, typename Pred>
     struct filter_view;
     

    - + Template parameters

    @@ -63,61 +65,43 @@ - - + - + +

    - - + - +

    + - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    Sequence -

    -
    -

    +

    A Forward Sequence -

    -
    -

    -

    -

    +

    -

    +

    Pred -

    -
    -

    +

    Unary Metafunction returning an mpl::bool_ -

    -
    -

    -

    -

    +

    - + Model of

    • - + Expression Semantics

      @@ -157,68 +141,51 @@ - -

      +

      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. -

      - +

    - + Example

    -
    -using boost::mpl::_;
    +
    using boost::mpl::_;
     using boost::mpl::not_;
     using boost::is_class;
     
    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 9487c625..3b882b27 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -3,10 +3,10 @@
     
     iterator_range
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    + +
    +

    - + Description

    @@ -34,23 +38,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header

    -
    -#include <boost/fusion/view/iterator_range.hpp>
    +
    #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     

    - + Synopsis

    -
    -template <typename First, typename Last>
    +
    template <typename First, typename Last>
     struct iterator_range;
     

    - + Template parameters

    @@ -60,59 +62,41 @@ - - + - + +

    - - + - +

    + - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    First -

    -
    -

    +

    A fusion Iterator -

    -
    -

    -

    -

    +

    -

    +

    Last -

    -
    -

    +

    A fusion Iterator -

    -
    -

    -

    -

    +

    - + Model of

    • @@ -149,7 +133,7 @@

    - + Expression Semantics

    @@ -165,70 +149,53 @@ - -

    +

    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. -

    - +

    - + Example

    -
    -char const* s = "Ruby";
    +
    char const* s = "Ruby";
     typedef vector<int, char, double, char const*> vector_type;
     vector_type vec(1, 'x', 3.3, s);
     
    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 2c60599c..42139fda 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -3,10 +3,10 @@
     
     joint_view
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    + +
    +

    - + Description

    @@ -34,23 +38,21 @@ which is a concatenation of two sequences.

    - + Header

    -
    -#include <boost/fusion/view/joint_view.hpp>
    +
    #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     

    - + Synopsis

    -
    -template <typename Sequence1, typename Sequence2>
    +
    template <typename Sequence1, typename Sequence2>
     struct joint_view;
     

    - + Template parameters

    @@ -60,63 +62,45 @@ - - + - + +

    - - + - +

    + - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    Sequence1 -

    -
    -

    +

    A Forward Sequence -

    -
    -

    -

    -

    +

    -

    +

    Sequence2 -

    -
    -

    +

    A Forward Sequence -

    -
    -

    -

    -

    +

    - + Model of

    • - + Expression Semantics

      @@ -159,69 +143,52 @@ - -

      +

      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. -

      - +

    - + Example

    -
    -vector<int, char> v1(3, 'x');
    +
    vector<int, char> v1(3, 'x');
     vector<std::string, int> v2("hello", 123);
     joint_view<
         vector<int, char>
    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index 93260b61..d9e32c9e 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -3,10 +3,10 @@
     
     reverse_view
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,31 +23,33 @@
     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/view/reverse_view.hpp>
    +
    #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     

    - + Synopsis

    -
    -template <typename Sequence>
    +
    template <typename Sequence>
     struct reverse_view;
     

    - + Template parameters

    @@ -57,43 +59,31 @@ - - + - + +

    - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    Sequence -

    -
    -

    +

    A Bidirectional Sequence -

    -
    -

    -

    -

    +

    - + Model of

    • - + Expression Semantics

      @@ -134,68 +124,51 @@ - -

      +

      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. -

      - +

    - + 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/view/single_view.html b/doc/html/fusion/view/single_view.html
    index f3f8595c..45ba7877 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -3,10 +3,10 @@
     
     single_view
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,30 +23,32 @@
     PrevUpHomeNext
     
    - +
    + +
    +

    single_view is a view into a value as a single element sequence.

    - + Header

    -
    -#include <boost/fusion/view/single_view.hpp>
    +
    #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     

    - + Synopsis

    -
    -template <typename T>
    +
    template <typename T>
     struct single_view;
     

    - + Template parameters

    @@ -56,41 +58,29 @@ - - + - + +

    - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    T -

    -
    -

    +

    Any type -

    -
    -

    -

    -

    +

    - + Model of

    • - + Expression Semantics

      @@ -129,68 +119,51 @@ - -

      +

      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. -

      - +

    - + Example

    -
    -single_view<int> view(3);
    +
    single_view<int> view(3);
     std::cout << view << std::endl;
     
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html index a129645d..4b4c8397 100644 --- a/doc/html/fusion/view/transform_view.html +++ b/doc/html/fusion/view/transform_view.html @@ -3,10 +3,10 @@ transform_view - - + + - + @@ -23,8 +23,12 @@ PrevUpHomeNext
    - +
    + +
    +

    The unary version of transform_view presents a view of its underlying sequence given a unary function object @@ -35,33 +39,30 @@ Traversal Concept) of its underlying sequence or sequences.

    - + Header

    -
    -#include <boost/fusion/view/transform_view.hpp>
    +
    #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     

    - + Synopsis

    Unary Version

    -
    -template <typename Sequence, typename F1>
    +
    template <typename Sequence, typename F1>
     struct transform_view;
     

    Binary Version

    -
    -template <typename Sequence1, typename Sequence2, typename F2>
    +
    template <typename Sequence1, typename Sequence2, typename F2>
     struct transform_view;
     

    - + Template parameters

    @@ -71,119 +72,83 @@ - - + - + +

    - - + - +

    + - - + - +

    + - - + - +

    + - - + - +

    + - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    Sequence -

    -
    -

    +

    A Forward Sequence -

    -
    -

    -

    -

    +

    -

    +

    Sequence1 -

    -
    -

    +

    A Forward Sequence -

    -
    -

    -

    -

    +

    -

    +

    Sequence2 -

    -
    -

    +

    A Forward Sequence -

    -
    -

    -

    -

    +

    -

    +

    F1 -

    -
    -

    +

    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. -

    -
    -

    -

    -

    +

    - + Model of

    • @@ -242,7 +207,7 @@

    - + Expression Semantics

    @@ -263,85 +228,64 @@ - -

    +

    Expression -

    - - -

    +

    +

    Semantics -

    - +

    - -

    +

    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. -

    - +

    - + Example

    -
    -struct square
    +
    struct square
     {
         template<typename Sig>
         struct result;
    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index c23468cc..3b7b0a50 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -3,10 +3,10 @@
     
     zip_view
     
    -
    -
    +
    +
     
    -
    +
     
     
     
    @@ -23,10 +23,14 @@
     PrevUpHomeNext
     
    - +
    + +
    +

    - + Description

    @@ -37,23 +41,21 @@ to the component _sequence_s.

    - + Header

    -
    -#include <boost/fusion/view/zip_view.hpp>
    +
    #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     

    - + Synopsis

    -
    -template <typename Sequences>
    +
    template <typename Sequences>
     struct zip_view;
     

    - + Template parameters

    @@ -63,43 +65,31 @@ - - + - + +

    - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    +

    Sequences -

    -
    -

    +

    A Forward Sequence of references to other Fusion _sequence_s -

    -
    -

    -

    -

    +

    - + Model of

    • @@ -132,7 +122,7 @@

    - + Expression Semantics

    @@ -147,68 +137,51 @@ - -

    +

    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. -

    - +

    - + Example

    -
    -typedef vector<int,int> vec1;
    +
    typedef vector<int,int> vec1;
     typedef vector<char,char> vec2;
     vec1 v1(1,2);
     vec2 v2('a','b');
    diff --git a/doc/html/index.html b/doc/html/index.html
    index 6d3d1f9a..befc55dd 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -3,8 +3,8 @@
     
     Chapter 1. Fusion 2.0
     
    -
    -
    +
    +
     
     
     
    @@ -19,7 +19,8 @@
     
    Next
    -
    +
    +

    Chapter 1. Fusion 2.0

    @@ -33,13 +34,13 @@

    -
    -

    +

    Distributed under the 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: July 21, 2008 at 07:17:27 GMT

    Last revised: June 13, 2009 at 06:22:11 GMT


    diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp index 33772383..ac5baee4 100644 --- a/example/cookbook/do_the_bind.cpp +++ b/example/cookbook/do_the_bind.cpp @@ -22,23 +22,29 @@ form. ==============================================================================*/ + #include -#include -#include +#include #include #include -#include #include -#include +#include #include #include +#include +#include + +#include +#include #include #include #include #include +#include +#include #include #include @@ -105,6 +111,7 @@ namespace impl // returned by bind template class fused_bound_function { + // Transform arguments to be held by value typedef typename traits::deduce_sequence::type bound_args; bound_args fsq_bind_args; @@ -144,19 +151,40 @@ namespace impl }; + // Find the number of placeholders in use + struct n_placeholders + { + struct fold_op + { + template struct result; + template struct result< S(A &,B &) > + : mpl::max { }; + }; + struct filter_pred + { + template struct apply : is_placeholder { }; + }; + + template + struct apply + : mpl::next< typename result_of::fold< + fusion::filter_view, mpl::int_<-1>, fold_op + >::type>::type + { }; + }; + // Fused implementation of the 'bind' function struct fused_binder { template struct result; - template + template ::value> struct result_impl { - // We have to transform the arguments so they are held by-value - // in the returned function. - typedef fusion::unfused_generic< - fused_bound_function > type; + typedef boost::forward_adapter,!Placeholders>,Placeholders> type; }; template @@ -168,14 +196,16 @@ namespace impl inline typename result_impl< BindArgs >::type operator()(BindArgs & bind_args) const { - return typename result< void(BindArgs) >::type(bind_args); + return typename result< void(BindArgs) >::type( + fusion::unfused< fused_bound_function, + ! n_placeholders::apply::value >(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 + // The binder's unfused type. We use lightweght_forward_adapter 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; + typedef boost::lightweight_forward_adapter< fusion::unfused > binder; } // Placeholder globals @@ -225,10 +255,11 @@ int main() 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,"The answer is",_1_)(12) == 2); errors += !( bind(f,_1_,ref(value))("Really?") == 2); errors += !( bind(f,_1_,_2_)("Dunno. If there is an answer, it's",value) == 2); diff --git a/example/performance/functional.cpp b/example/performance/functional.cpp index e16d764d..8f7b3ecd 100644 --- a/example/performance/functional.cpp +++ b/example/performance/functional.cpp @@ -10,10 +10,12 @@ #include #include #include -#include -#include +#include #include +#include +#include + #include #include #include @@ -265,13 +267,13 @@ int main() total += res; } { - boost::fusion::unfused_rvalue_args f; - std::cout << "unfused_rvalue_args " << call_unfused(f,res) << std::endl; + boost::lightweight_forward_adapter< boost::fusion::unfused > f; + std::cout << "lightweight_forward_adapter< unfused > " << call_unfused(f,res) << std::endl; total += res; } { - boost::fusion::unfused_generic f; - std::cout << "unfused_generic " << call_unfused(f,res) << std::endl; + boost::forward_adapter< boost::fusion::unfused > f; + std::cout << "forward_adapter< unfused > " << call_unfused(f,res) << std::endl; total += res; } std::cout << std::endl << "Fused adapters:" << std::endl; @@ -291,13 +293,13 @@ int main() total += res; } { - boost::fusion::unfused_rvalue_args< boost::fusion::fused_function_object > f; - std::cout << "unfused_rvalue_args > " << call_unfused(f,res) << std::endl; + boost::lightweight_forward_adapter< boost::fusion::unfused< boost::fusion::fused_function_object > > f; + std::cout << "lightweight_forward_adapter< unfused > >" << 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; + boost::forward_adapter< boost::fusion::unfused< boost::fusion::fused_function_object > > f; + std::cout << "forward_adapter< unfused > > " << call_unfused(f,res) << std::endl; total += res; } diff --git a/test/Jamfile b/test/Jamfile index 12407035..76e9d1da 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -112,16 +112,12 @@ import testing ; [ 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.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/make_unfused.cpp : : : : ] [ run functional/invoke.cpp : : : : ] [ run functional/invoke_function_object.cpp : : : : ] [ run functional/invoke_procedure.cpp : : : : ] diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp index 47c65e50..a4c7f32c 100644 --- a/test/algorithm/all.cpp +++ b/test/algorithm/all.cpp @@ -33,12 +33,24 @@ namespace int main() { + { + boost::fusion::vector<> t; + 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 < 4))); BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 > 0))); } + { + boost::fusion::vector t(1, 2, 3.3, 2); + 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))); diff --git a/test/compile_time/Makefile b/test/compile_time/Makefile new file mode 100644 index 00000000..4887cf24 --- /dev/null +++ b/test/compile_time/Makefile @@ -0,0 +1,29 @@ +#============================================================================= +# Copyright (c) 2008 Dan Marsden +# +# 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). +#============================================================================== + +CXX=g++ +CXXFLAGS=-I$(BOOST_ROOT) + +TEST_SRCS=\ + vector_construction.cpp\ + vector_iteration.cpp\ + vector_intrinsic.cpp\ + fold.cpp\ + transform.cpp + +TEST_OBJS=$(TEST_SRCS:.cpp=.o) + +TEST_TARGETS=$(TEST_SRCS:.cpp=.test) + +all: $(TEST_TARGETS) + +%.test : %.cpp + time $(CXX) $(CXXFLAGS) $< -o $@ + +clean: + rm -f $(TEST_TARGETS) $(TEST_OBJS) diff --git a/test/compile_time/driver.hpp b/test/compile_time/driver.hpp new file mode 100644 index 00000000..8d06e6de --- /dev/null +++ b/test/compile_time/driver.hpp @@ -0,0 +1,75 @@ +/*============================================================================= + Copyright (c) 2008 Dan Marsden + + 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_COMPILE_TIME_DRIVER) +#define BOOST_FUSION_COMPILE_TIME_DRIVER + +int main() +{ + test<0>(); + test<1>(); + test<2>(); + test<3>(); + test<4>(); + + test<5>(); + test<6>(); + test<7>(); + test<8>(); + test<9>(); + + test<10>(); + test<11>(); + test<12>(); + test<13>(); + test<14>(); + + test<15>(); + test<16>(); + test<17>(); + test<18>(); + test<19>(); + + test<20>(); + test<21>(); + test<22>(); + test<23>(); + test<24>(); + + test<25>(); + test<26>(); + test<27>(); + test<28>(); + test<29>(); + + test<30>(); + test<31>(); + test<32>(); + test<33>(); + test<34>(); + + test<35>(); + test<36>(); + test<37>(); + test<38>(); + test<39>(); + + test<40>(); + test<41>(); + test<42>(); + test<43>(); + test<44>(); + + test<45>(); + test<46>(); + test<47>(); + test<48>(); + test<49>(); +} + +#endif diff --git a/test/compile_time/fold.cpp b/test/compile_time/fold.cpp new file mode 100644 index 00000000..fa2e8f6c --- /dev/null +++ b/test/compile_time/fold.cpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2008 Dan Marsden + + 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 + +namespace fusion = boost::fusion; + +namespace +{ + template + struct distinct + {}; + + struct f + { + typedef int result_type; + + template + int operator()(distinct const& d, int state) const + { + return state + n; + } + }; + + template + void test() + { + fusion::vector< + distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>, + distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v; + + fusion::fold(v, 0, f()); + } +} + +#include "./driver.hpp" diff --git a/test/compile_time/transform.cpp b/test/compile_time/transform.cpp new file mode 100644 index 00000000..04ad8ab2 --- /dev/null +++ b/test/compile_time/transform.cpp @@ -0,0 +1,55 @@ +/*============================================================================= + Copyright (c) 2008 Dan Marsden + + 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 + +namespace fusion = boost::fusion; + +namespace +{ + template + struct distinct + { + static const int value = n; + }; + + struct f + { + typedef int result_type; + + template + result_type operator()(T const& t) const + { + return T::value; + } + }; + + struct touch + { + template + void operator()(T const&) const + {} + }; + + template + void test() + { + fusion::vector< + distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>, + distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v; + + // We're testing transform really + // for_each call is to force iteration through the lazy + // transform, otherwise very little will happen. + fusion::for_each(fusion::transform(v, f()), touch()); + } +} + +#include "./driver.hpp" diff --git a/test/compile_time/vector_construction.cpp b/test/compile_time/vector_construction.cpp new file mode 100644 index 00000000..18f9f16b --- /dev/null +++ b/test/compile_time/vector_construction.cpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2008 Dan Marsden + + 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 + +namespace fusion = boost::fusion; + +namespace +{ + template + struct distinct + {}; + + template + void test() + { + fusion::vector< + distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>, + distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v; + } +} + +#include "./driver.hpp" diff --git a/test/compile_time/vector_intrinsic.cpp b/test/compile_time/vector_intrinsic.cpp new file mode 100644 index 00000000..3fa3a77e --- /dev/null +++ b/test/compile_time/vector_intrinsic.cpp @@ -0,0 +1,59 @@ +/*============================================================================= + Copyright (c) 2008 Dan Marsden + + 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 + +namespace fusion = boost::fusion; + +namespace +{ + template + struct distinct + {}; + + template + void test() + { + typedef fusion::vector< + distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>, + distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v_type; + + v_type v; + + fusion::at_c<0>(v); + fusion::at_c<1>(v); + fusion::at_c<2>(v); + fusion::at_c<3>(v); + fusion::at_c<4>(v); + + fusion::at_c<5>(v); + fusion::at_c<6>(v); + fusion::at_c<7>(v); + fusion::at_c<8>(v); + fusion::at_c<9>(v); + + typedef typename fusion::result_of::value_at_c::type va0; + typedef typename fusion::result_of::value_at_c::type va1; + typedef typename fusion::result_of::value_at_c::type va2; + typedef typename fusion::result_of::value_at_c::type va3; + typedef typename fusion::result_of::value_at_c::type va4; + + typedef typename fusion::result_of::value_at_c::type va5; + typedef typename fusion::result_of::value_at_c::type va6; + typedef typename fusion::result_of::value_at_c::type va7; + typedef typename fusion::result_of::value_at_c::type va8; + typedef typename fusion::result_of::value_at_c::type va9; + + fusion::begin(v); + fusion::end(v); + fusion::size(v); + } +} + +#include "./driver.hpp" diff --git a/test/compile_time/vector_iteration.cpp b/test/compile_time/vector_iteration.cpp new file mode 100644 index 00000000..ee63bee5 --- /dev/null +++ b/test/compile_time/vector_iteration.cpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2008 Dan Marsden + + 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 + +namespace fusion = boost::fusion; + +namespace +{ + template + struct distinct + {}; + + struct null_op + { + template + void operator()(T const& t) const + {} + }; + + template + void test() + { + fusion::vector< + distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>, + distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v; + + fusion::for_each(v, null_op()); + } +} + +#include "./driver.hpp" diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index 68c59e4b..460e1e29 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -340,7 +340,7 @@ void result_type_tests() using boost::is_same; BOOST_TEST(( is_same< - fusion::result_of::invoke::type, int + fusion::result_of::invoke >::type, int >::value )); // disabled until boost::result_of supports it // BOOST_TEST(( is_same< diff --git a/test/functional/make_unfused.cpp b/test/functional/make_unfused.cpp new file mode 100644 index 00000000..a6462eb1 --- /dev/null +++ b/test/functional/make_unfused.cpp @@ -0,0 +1,126 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include + +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; + +using boost::noncopyable; +typedef mpl::true_ no_nullary_call; + +using boost::ref; +using boost::cref; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(Seq &) > + : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, + boost::blank, mpl::identity >::type + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template < typename Seq > + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value + elem; + } + }; +}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +int main() +{ + test_func<> f; + test_func f_nc; + + fusion::result_of::make_unfused< test_func<> >::type unfused_func = + fusion::make_unfused(f); + + fusion::result_of::make_unfused< boost::reference_wrapper< + test_func > >::type unfused_func_ref = + fusion::make_unfused(ref(f_nc)); + + fusion::result_of::make_unfused< boost::reference_wrapper< + test_func const> >::type unfused_func_c_ref = + fusion::make_unfused(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/unfused.cpp b/test/functional/unfused.cpp new file mode 100644 index 00000000..0f69be9c --- /dev/null +++ b/test/functional/unfused.cpp @@ -0,0 +1,119 @@ +/*============================================================================= + Copyright (c) 2006-2007 Tobias Schwinger + + Use modification and distribution are subject to the Boost Software + License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +==============================================================================*/ + +#include +#include + +#include +#include + +#include + +#include + +#include +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; + +using boost::noncopyable; + +template +struct test_func + : Base +{ + template + struct result; + + template + struct result< Self(Seq) > + : mpl::identity + { }; + + template + long operator()(Seq const & seq) const + { + long state = 0; + return fusion::fold(seq, state, fold_op()); + } + + template + long operator()(Seq const & seq) + { + long state = 100; + return fusion::fold(seq, state, fold_op()); + } + + private: + + struct fold_op + { + typedef long result_type; + + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value + elem; + } + }; +}; + +void result_type_tests() +{ + using boost::is_same; + + typedef fusion::unfused< test_func<> > t; + BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); +} + +int main() +{ + result_type_tests(); + + test_func f; + fusion::unfused< test_func<> > unfused_func; + fusion::unfused< test_func & > unfused_func_ref(f); + fusion::unfused< test_func<> const > unfused_func_c; + fusion::unfused< test_func<> > const unfused_func_c2; + fusion::unfused< 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/sequence/as_list.cpp b/test/sequence/as_list.cpp index 52846d9d..cf282741 100644 --- a/test/sequence/as_list.cpp +++ b/test/sequence/as_list.cpp @@ -26,7 +26,7 @@ main() std::cout << tuple_delimiter(", "); { - vector0 empty; + vector0<> empty; std::cout << as_list(make_vector(1, 1.23, "harru")) << std::endl; std::cout << as_list(push_back(empty, 999)) << std::endl; diff --git a/test/sequence/as_map.cpp b/test/sequence/as_map.cpp index 32e3a420..6c18a3cc 100644 --- a/test/sequence/as_map.cpp +++ b/test/sequence/as_map.cpp @@ -28,7 +28,7 @@ main() std::cout << tuple_delimiter(", "); { - vector0 empty; + 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; } diff --git a/test/sequence/as_set.cpp b/test/sequence/as_set.cpp index 12a3641c..d13d0959 100644 --- a/test/sequence/as_set.cpp +++ b/test/sequence/as_set.cpp @@ -29,7 +29,7 @@ main() std::cout << tuple_delimiter(", "); { - vector0 empty; + vector0<> empty; std::cout << as_set(make_list(1, 1.23, "harru")) << std::endl; std::cout << as_set(push_back(empty, 999)) << std::endl; diff --git a/test/sequence/as_vector.cpp b/test/sequence/as_vector.cpp index 27905de5..2bcc2b32 100644 --- a/test/sequence/as_vector.cpp +++ b/test/sequence/as_vector.cpp @@ -27,7 +27,7 @@ main() std::cout << tuple_delimiter(", "); { - vector0 empty; + vector0<> empty; std::cout << as_vector(make_list(1, 1.23, "harru")) << std::endl; std::cout << as_vector(push_back(empty, 999)) << std::endl; diff --git a/test/sequence/boost_tuple.cpp b/test/sequence/boost_tuple.cpp index 07e39695..c3949cbf 100644 --- a/test/sequence/boost_tuple.cpp +++ b/test/sequence/boost_tuple.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -84,6 +85,16 @@ main() fusion::list l(tuples::make_tuple(123, "Hola!!!")); l = tuples::make_tuple(123, "Hola!!!"); } + + { + // test from Ticket #1601, submitted by Shunsuke Sogame + // expanded by Stjepan Rajko + boost::tuple t(3, 'a'); + + BOOST_TEST(0u == fusion::distance(fusion::begin(t), fusion::begin(t))); + BOOST_TEST(1u == fusion::distance(fusion::begin(t), fusion::next(fusion::begin(t)))); + BOOST_TEST(2u == fusion::distance(fusion::begin(t), fusion::end(t))); + } return boost::report_errors(); } diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp index b051ca89..f041bac8 100644 --- a/test/sequence/vector_n.cpp +++ b/test/sequence/vector_n.cpp @@ -33,10 +33,10 @@ main() using namespace std; { - vector0 vec; + vector0<> vec; (void) vec; cout << "(): " << sizeof(vec) << endl; - cout << (boost::is_empty::value ? "is empty" : "is not empty") << endl; + cout << (boost::is_empty >::value ? "is empty" : "is not empty") << endl; } { @@ -207,7 +207,7 @@ main() { // testing copy and assign from a view - vector0 empty; + 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); diff --git a/test/sequence/zip_view.cpp b/test/sequence/zip_view.cpp index 7f88f52a..8409711a 100644 --- a/test/sequence/zip_view.cpp +++ b/test/sequence/zip_view.cpp @@ -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) ==============================================================================*/ #include @@ -58,8 +58,8 @@ int main() 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 >)); + BOOST_MPL_ASSERT((boost::is_same::type, vector2 >)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, vector2 >)); } { using namespace boost; diff --git a/test/sequence/zip_view2.cpp b/test/sequence/zip_view2.cpp index 8a07aa88..38075f07 100644 --- a/test/sequence/zip_view2.cpp +++ b/test/sequence/zip_view2.cpp @@ -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) ==============================================================================*/ #include @@ -57,8 +57,8 @@ int main() 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 >)); + BOOST_MPL_ASSERT((boost::is_same::type, vector3 >)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, vector3 >)); } return boost::report_errors(); } From 7615b492af0ac83502e6986f215254d42264b9b6 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 11 Oct 2009 16:08:54 +0000 Subject: [PATCH 24/82] Sync from trunk (except adapt class) [SVN r56713] --- include/boost/fusion/adapted/class.hpp | 28 +++++ .../adapted/class/adapt_assoc_class.hpp | 94 ++++++++++++++++ .../fusion/adapted/class/adapt_class.hpp | 104 +++++++++++++++++ .../fusion/adapted/class/class_iterator.hpp | 105 ++++++++++++++++++ .../fusion/adapted/class/detail/at_impl.hpp | 70 ++++++++++++ .../adapted/class/detail/at_key_impl.hpp | 54 +++++++++ .../adapted/class/detail/begin_impl.hpp | 40 +++++++ .../adapted/class/detail/category_of_impl.hpp | 35 ++++++ .../container/vector/detail/vector_n.hpp | 2 +- .../fusion/view/nview/detail/nview_impl.hpp | 20 +++- .../fusion/view/nview/detail/size_impl.hpp | 38 +++++++ .../fusion/view/nview/nview_iterator.hpp | 1 + 12 files changed, 585 insertions(+), 6 deletions(-) create mode 100644 include/boost/fusion/adapted/class.hpp create mode 100644 include/boost/fusion/adapted/class/adapt_assoc_class.hpp create mode 100644 include/boost/fusion/adapted/class/adapt_class.hpp create mode 100644 include/boost/fusion/adapted/class/class_iterator.hpp create mode 100644 include/boost/fusion/adapted/class/detail/at_impl.hpp create mode 100644 include/boost/fusion/adapted/class/detail/at_key_impl.hpp create mode 100644 include/boost/fusion/adapted/class/detail/begin_impl.hpp create mode 100644 include/boost/fusion/adapted/class/detail/category_of_impl.hpp create mode 100644 include/boost/fusion/view/nview/detail/size_impl.hpp diff --git a/include/boost/fusion/adapted/class.hpp b/include/boost/fusion/adapted/class.hpp new file mode 100644 index 00000000..be973831 --- /dev/null +++ b/include/boost/fusion/adapted/class.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + 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_CLASS_OCTOBER_4_2009_839PM) +#define BOOST_FUSION_CLASS_OCTOBER_4_2009_839PM + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/adapted/class/adapt_assoc_class.hpp b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp new file mode 100644 index 00000000..11f40ade --- /dev/null +++ b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp @@ -0,0 +1,94 @@ +/*============================================================================= + Copyright (c) 2001-2009 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_CLASS_OCTOBER_4_2009_840PM) +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_OCTOBER_4_2009_840PM + +#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 class_assoc_member; +}}} + + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS(name, bseq) \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_I( \ + name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_X bseq, 0)) \ + /***/ + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_X(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_CLASS_Y +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_Y(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_CLASS_X +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_X0 +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_Y0 + +// BOOST_FUSION_ADAPT_ASSOC_CLASS_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_CLASS_I(name, seq) \ + namespace boost { namespace fusion { namespace traits \ + { \ + template <> \ + struct tag_of \ + { \ + typedef class_tag type; \ + }; \ + }}} \ + namespace boost { namespace fusion { namespace extension \ + { \ + template <> \ + struct class_size : mpl::int_ {}; \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_ASSOC_CLASS_C, name, seq) \ + }}} \ + /***/ + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_C(r, name, i, xy) \ + template <> \ + struct class_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \ + static type& call(name& class_) \ + { \ + return class_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \ + }; \ + }; \ + template<> \ + struct class_assoc_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \ + static type& call(name& class_) \ + { \ + return class_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \ + }; \ + }; + /***/ + +#endif diff --git a/include/boost/fusion/adapted/class/adapt_class.hpp b/include/boost/fusion/adapted/class/adapt_class.hpp new file mode 100644 index 00000000..c4e5c29f --- /dev/null +++ b/include/boost/fusion/adapted/class/adapt_class.hpp @@ -0,0 +1,104 @@ +/*============================================================================= + Copyright (c) 2001-2009 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_CLASS_OCTOBER_4_2009_840PM) +#define BOOST_FUSION_ADAPT_CLASS_OCTOBER_4_2009_840PM + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_FUSION_ADAPT_CLASS(name, bseq) \ + BOOST_FUSION_ADAPT_CLASS_I( \ + name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_X bseq, 0)) \ + /***/ + +#define BOOST_FUSION_ADAPT_CLASS_X(w, x, y, z) ((w, x, y, z)) BOOST_FUSION_ADAPT_CLASS_Y +#define BOOST_FUSION_ADAPT_CLASS_Y(w, x, y, z) ((w, x, y, z)) BOOST_FUSION_ADAPT_CLASS_X +#define BOOST_FUSION_ADAPT_CLASS_X0 +#define BOOST_FUSION_ADAPT_CLASS_Y0 + +// BOOST_FUSION_ADAPT_CLASS_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_CLASS_I(name, seq) \ + namespace boost { namespace fusion { namespace traits \ + { \ + template <> \ + struct tag_of \ + { \ + typedef class_tag type; \ + }; \ + }}} \ + namespace boost { namespace fusion { namespace extension \ + { \ + template <> \ + struct class_size : mpl::int_ {}; \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_CLASS_C, name, seq) \ + }}} \ + /***/ + +#define BOOST_FUSION_ADAPT_CLASS_C(r, name, i, xy) \ + template <> \ + struct class_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(4, 0, xy) type; \ + typedef BOOST_PP_TUPLE_ELEM(4, 1, xy) get_type; \ + struct proxy \ + { \ + typedef BOOST_PP_TUPLE_ELEM(4, 0, xy) type; \ + typedef BOOST_PP_TUPLE_ELEM(4, 1, xy) get_type; \ + typedef \ + add_reference::type>::type \ + cref_type; \ + \ + proxy(name& obj) : obj(obj) {} \ + name& obj; \ + \ + proxy& operator=(cref_type val) \ + { \ + BOOST_PP_TUPLE_ELEM(4, 3, xy); \ + return *this; \ + } \ + \ + operator get_type() \ + { \ + return BOOST_PP_TUPLE_ELEM(4, 2, xy); \ + } \ + }; \ + \ + static get_type call(name const& obj) \ + { \ + return BOOST_PP_TUPLE_ELEM(4, 2, xy); \ + }; \ + \ + static proxy call(name& obj) \ + { \ + return proxy(obj); \ + }; \ + }; \ + /***/ + +#endif diff --git a/include/boost/fusion/adapted/class/class_iterator.hpp b/include/boost/fusion/adapted/class/class_iterator.hpp new file mode 100644 index 00000000..639ee927 --- /dev/null +++ b/include/boost/fusion/adapted/class/class_iterator.hpp @@ -0,0 +1,105 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M) +#define FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct random_access_traversal_tag; + + template + struct class_iterator + : iterator_facade, random_access_traversal_tag> + { + BOOST_MPL_ASSERT_RELATION(N_, >=, 0); + BOOST_MPL_ASSERT_RELATION(N_, <=, extension::class_size::value); + + typedef mpl::int_ index; + typedef Class class_type; + + class_iterator(Class& class_) + : class_(class_) {} + Class& class_; + + template + struct value_of + : extension::class_member + { + }; + + template + struct deref + { + typedef typename + mpl::if_< + is_const + , typename extension::class_member::get_type + , typename extension::class_member::proxy + >::type + type; + + static type + call(Iterator const& iter) + { + return extension::class_member:: + call(iter.class_); + } + }; + + template + struct advance + { + typedef typename Iterator::index index; + typedef typename Iterator::class_type class_type; + typedef class_iterator type; + + static type + call(Iterator const& iter) + { + return type(iter.class_); + } + }; + + template + struct next : advance > {}; + + template + struct prior : advance > {}; + + template + struct distance : mpl::minus + { + typedef typename + mpl::minus< + typename I2::index, typename I1::index + >::type + type; + + static type + call(I1 const&, I2 const&) + { + return type(); + } + }; + }; +}} + +#endif + + diff --git a/include/boost/fusion/adapted/class/detail/at_impl.hpp b/include/boost/fusion/adapted/class/detail/at_impl.hpp new file mode 100644 index 00000000..12b5171f --- /dev/null +++ b/include/boost/fusion/adapted/class/detail/at_impl.hpp @@ -0,0 +1,70 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM) +#define BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct class_tag; + + namespace extension + { + template + struct at_impl; + + template + struct class_member; + + template + struct class_size; + + template <> + struct at_impl + { + template + struct apply + { + static int const n_value = N::value; + BOOST_MPL_ASSERT_RELATION( + n_value, <=, extension::class_size::value); + + typedef typename + extension::class_member + element; + + typedef typename + mpl::if_< + is_const + , typename class_member::get_type + , typename class_member::proxy + >::type + type; + + static type + call(Sequence& seq) + { + return extension:: + class_member::call(seq); + } + + //~ static typename class_member::get_type + //~ call(Sequence const& seq) + //~ { + //~ return extension:: + //~ class_member::call(seq); + //~ } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/adapted/class/detail/at_key_impl.hpp b/include/boost/fusion/adapted/class/detail/at_key_impl.hpp new file mode 100644 index 00000000..9df985bf --- /dev/null +++ b/include/boost/fusion/adapted/class/detail/at_key_impl.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2007 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM) +#define BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM + +#include + +namespace boost { namespace fusion +{ + struct class_tag; + + namespace extension + { + template + struct at_key_impl; + + template + struct class_assoc_member; + + template <> + struct at_key_impl + { + template + struct apply + { + typedef typename + extension::class_assoc_member + element; + + typedef typename + mpl::eval_if< + is_const + , detail::cref_result + , detail::ref_result + >::type + type; + + static type + call(Sequence& seq) + { + return extension:: + class_assoc_member::call(seq); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/adapted/class/detail/begin_impl.hpp b/include/boost/fusion/adapted/class/detail/begin_impl.hpp new file mode 100644 index 00000000..4fadac4e --- /dev/null +++ b/include/boost/fusion/adapted/class/detail/begin_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM) +#define BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM + +#include + +namespace boost { namespace fusion +{ + struct class_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef class_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/adapted/class/detail/category_of_impl.hpp b/include/boost/fusion/adapted/class/detail/category_of_impl.hpp new file mode 100644 index 00000000..821cf38b --- /dev/null +++ b/include/boost/fusion/adapted/class/detail/category_of_impl.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM) +#define BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM + +#include + +namespace boost { namespace fusion +{ + struct class_tag; + struct random_access_traversal_tag; + + namespace extension + { + template + struct category_of_impl; + + template<> + struct category_of_impl + { + template + struct apply + { + typedef random_access_traversal_tag type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp index 01981ab3..2d9ac128 100644 --- a/include/boost/fusion/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n.hpp @@ -9,7 +9,7 @@ #if !defined(FUSION_MACRO_05042005) #define FUSION_MACRO_05042005 -#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##n(T##n()) +#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##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; diff --git a/include/boost/fusion/view/nview/detail/nview_impl.hpp b/include/boost/fusion/view/nview/detail/nview_impl.hpp index c0179597..03aa49f4 100644 --- a/include/boost/fusion/view/nview/detail/nview_impl.hpp +++ b/include/boost/fusion/view/nview/detail/nview_impl.hpp @@ -23,24 +23,22 @@ "boost/fusion/view/nview/detail/nview_impl.hpp")) \ /**/ -#include BOOST_PP_ITERATE() - /////////////////////////////////////////////////////////////////////////////// namespace boost { namespace fusion { namespace result_of { template + , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_VECTOR_SIZE, int I, LONG_MAX)> struct as_nview { typedef mpl::vector_c< int, BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, I) > index_type; - typedef nview type; }; - }}} +#include BOOST_PP_ITERATE() + #endif /////////////////////////////////////////////////////////////////////////////// @@ -50,6 +48,18 @@ namespace boost { namespace fusion { namespace result_of #define N BOOST_PP_ITERATION() +#if N < FUSION_MAX_VECTOR_SIZE +namespace boost { namespace fusion { namespace result_of +{ + template + struct as_nview + { + typedef mpl::vector_c index_type; + typedef nview type; + }; +}}} +#endif + namespace boost { namespace fusion { template diff --git a/include/boost/fusion/view/nview/detail/size_impl.hpp b/include/boost/fusion/view/nview/detail/size_impl.hpp new file mode 100644 index 00000000..0c834026 --- /dev/null +++ b/include/boost/fusion/view/nview/detail/size_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + 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_NVIEW_SIZE_IMPL_OCT_06_2009_0525PM) +#define FUSION_NVIEW_SIZE_IMPL_OCT_06_2009_0525PM + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct nview_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/view/nview/nview_iterator.hpp b/include/boost/fusion/view/nview/nview_iterator.hpp index 12580749..60895093 100644 --- a/include/boost/fusion/view/nview/nview_iterator.hpp +++ b/include/boost/fusion/view/nview/nview_iterator.hpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include From 46fc256c2fd0422b1346701561ffb451142decae Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 11 Oct 2009 16:12:54 +0000 Subject: [PATCH 25/82] Sync from trunk (except adapt class) [SVN r56714] --- doc/container.qbk | 4 +- doc/html/fusion/acknowledgements.html | 15 +- doc/html/fusion/adapted.html | 31 +- doc/html/fusion/adapted/adapt_assoc.html | 77 ++- doc/html/fusion/adapted/adapt_struct.html | 73 +- doc/html/fusion/adapted/boost__array.html | 67 +- doc/html/fusion/adapted/boost__tuple.html | 59 +- doc/html/fusion/adapted/mpl_sequence.html | 72 +- doc/html/fusion/adapted/std__pair.html | 67 +- doc/html/fusion/algorithm.html | 71 +- doc/html/fusion/algorithm/iteration.html | 23 +- .../fusion/algorithm/iteration/functions.html | 15 +- .../iteration/functions/accumulate.html | 164 ++--- .../algorithm/iteration/functions/fold.html | 164 ++--- .../iteration/functions/for_each.html | 135 ++-- .../algorithm/iteration/metafunctions.html | 15 +- .../iteration/metafunctions/accumulate.html | 150 ++--- .../iteration/metafunctions/fold.html | 150 ++--- .../iteration/metafunctions/for_each.html | 122 ++-- doc/html/fusion/algorithm/query.html | 23 +- .../fusion/algorithm/query/functions.html | 15 +- .../fusion/algorithm/query/functions/all.html | 144 ++-- .../fusion/algorithm/query/functions/any.html | 144 ++-- .../algorithm/query/functions/count.html | 134 ++-- .../algorithm/query/functions/count_if.html | 132 ++-- .../algorithm/query/functions/find.html | 130 ++-- .../algorithm/query/functions/find_if.html | 128 ++-- .../algorithm/query/functions/none.html | 144 ++-- .../fusion/algorithm/query/metafunctions.html | 15 +- .../algorithm/query/metafunctions/all.html | 126 ++-- .../algorithm/query/metafunctions/any.html | 126 ++-- .../algorithm/query/metafunctions/count.html | 116 ++-- .../query/metafunctions/count_if.html | 116 ++-- .../algorithm/query/metafunctions/find.html | 120 ++-- .../query/metafunctions/find_if.html | 122 ++-- .../algorithm/query/metafunctions/none.html | 126 ++-- doc/html/fusion/algorithm/transformation.html | 27 +- .../algorithm/transformation/functions.html | 15 +- .../transformation/functions/clear.html | 101 ++- .../transformation/functions/erase.html | 172 +++-- .../transformation/functions/erase_key.html | 129 ++-- .../transformation/functions/filter.html | 127 ++-- .../transformation/functions/filter_if.html | 131 ++-- .../transformation/functions/insert.html | 148 ++--- .../functions/insert_range.html | 153 ++--- .../transformation/functions/join.html | 130 ++-- .../transformation/functions/pop_back.html | 103 ++- .../transformation/functions/pop_front.html | 103 ++- .../transformation/functions/push_back.html | 125 ++-- .../transformation/functions/push_front.html | 125 ++-- .../transformation/functions/remove.html | 127 ++-- .../transformation/functions/remove_if.html | 129 ++-- .../transformation/functions/replace.html | 155 ++--- .../transformation/functions/replace_if.html | 155 ++--- .../transformation/functions/reverse.html | 101 ++- .../transformation/functions/transform.html | 258 ++++---- .../transformation/functions/zip.html | 117 ++-- .../transformation/metafunctions.html | 15 +- .../transformation/metafunctions/clear.html | 90 ++- .../transformation/metafunctions/erase.html | 152 ++--- .../metafunctions/erase_key.html | 117 ++-- .../transformation/metafunctions/filter.html | 121 ++-- .../metafunctions/filter_if.html | 119 ++-- .../transformation/metafunctions/insert.html | 142 ++-- .../metafunctions/insert_range.html | 145 ++-- .../transformation/metafunctions/join.html | 46 +- .../metafunctions/pop_back.html | 95 ++- .../metafunctions/pop_front.html | 91 ++- .../metafunctions/push_back.html | 113 ++-- .../metafunctions/push_front.html | 113 ++-- .../transformation/metafunctions/remove.html | 121 ++-- .../metafunctions/remove_if.html | 121 ++-- .../transformation/metafunctions/replace.html | 115 ++-- .../metafunctions/replace_if.html | 141 ++-- .../transformation/metafunctions/reverse.html | 95 ++- .../metafunctions/transform.html | 258 ++++---- .../transformation/metafunctions/zip.html | 57 +- doc/html/fusion/change_log.html | 37 +- doc/html/fusion/container.html | 26 +- doc/html/fusion/container/cons.html | 340 +++++----- doc/html/fusion/container/conversion.html | 25 +- .../container/conversion/functions.html | 15 +- .../conversion/functions/as_list.html | 87 ++- .../conversion/functions/as_map.html | 95 ++- .../conversion/functions/as_set.html | 89 ++- .../conversion/functions/as_vector.html | 87 ++- .../container/conversion/metafunctions.html | 15 +- .../conversion/metafunctions/as_list.html | 91 ++- .../conversion/metafunctions/as_map.html | 99 ++- .../conversion/metafunctions/as_set.html | 93 ++- .../conversion/metafunctions/as_vector.html | 91 ++- doc/html/fusion/container/generation.html | 25 +- .../container/generation/functions.html | 15 +- .../generation/functions/list_tie.html | 101 ++- .../generation/functions/make_cons.html | 123 ++-- .../generation/functions/make_list.html | 107 ++- .../generation/functions/make_map.html | 143 ++-- .../generation/functions/make_set.html | 109 ++- .../generation/functions/make_vector.html | 107 ++- .../generation/functions/map_tie.html | 127 ++-- .../container/generation/functions/tiers.html | 47 +- .../generation/functions/vector_tie.html | 101 ++- .../container/generation/metafunctions.html | 15 +- .../generation/metafunctions/list_tie.html | 97 ++- .../generation/metafunctions/make_cons.html | 111 ++-- .../generation/metafunctions/make_list.html | 99 ++- .../generation/metafunctions/make_map.html | 131 ++-- .../generation/metafunctions/make_set.html | 101 ++- .../generation/metafunctions/make_vector.html | 99 ++- .../generation/metafunctions/map_tie.html | 123 ++-- .../generation/metafunctions/vector_tie.html | 97 ++- doc/html/fusion/container/list.html | 278 ++++---- doc/html/fusion/container/map.html | 259 ++++---- doc/html/fusion/container/set.html | 247 ++++--- doc/html/fusion/container/vector.html | 243 ++++--- doc/html/fusion/extension.html | 17 +- doc/html/fusion/extension/ext_full.html | 278 ++++---- .../fusion/extension/iterator_facade.html | 445 +++++-------- .../fusion/extension/sequence_facade.html | 283 ++++---- doc/html/fusion/functional.html | 68 +- doc/html/fusion/functional/adapters.html | 17 +- .../fusion/functional/adapters/fused.html | 249 ++++--- .../adapters/fused_function_object.html | 250 ++++--- .../functional/adapters/fused_procedure.html | 253 ++++--- .../fusion/functional/adapters/limits.html | 41 +- .../fusion/functional/adapters/unfused.html | 261 ++++---- .../functional/adapters/unfused_typed.html | 288 ++++---- doc/html/fusion/functional/concepts.html | 17 +- .../fusion/functional/concepts/callable.html | 55 +- .../functional/concepts/def_callable.html | 153 +++-- doc/html/fusion/functional/concepts/poly.html | 156 +++-- .../functional/concepts/reg_callable.html | 133 ++-- doc/html/fusion/functional/generation.html | 15 +- .../functional/generation/functions.html | 18 +- .../generation/functions/mk_fused.html | 122 ++-- .../generation/functions/mk_fused_fobj.html | 125 ++-- .../generation/functions/mk_fused_proc.html | 120 ++-- .../generation/functions/mk_unfused.html | 114 ++-- .../functional/generation/metafunctions.html | 19 +- .../generation/metafunctions/mk_fused.html | 44 +- .../metafunctions/mk_fused_fobj.html | 45 +- .../metafunctions/mk_fused_proc.html | 45 +- .../generation/metafunctions/mk_unfused.html | 42 +- doc/html/fusion/functional/invocation.html | 16 +- .../functional/invocation/functions.html | 15 +- .../invocation/functions/invoke.html | 152 ++--- .../invocation/functions/invoke_fobj.html | 148 ++--- .../invocation/functions/invoke_proc.html | 152 ++--- .../fusion/functional/invocation/limits.html | 42 +- .../functional/invocation/metafunctions.html | 16 +- .../invocation/metafunctions/invoke.html | 38 +- .../invocation/metafunctions/invoke_fobj.html | 42 +- .../invocation/metafunctions/invoke_proc.html | 44 +- doc/html/fusion/introduction.html | 53 +- doc/html/fusion/iterator.html | 25 +- doc/html/fusion/iterator/concepts.html | 33 +- .../concepts/bidirectional_iterator.html | 307 ++++----- .../iterator/concepts/forward_iterator.html | 623 +++++++----------- .../concepts/random_access_iterator.html | 285 ++++---- doc/html/fusion/iterator/functions.html | 16 +- .../fusion/iterator/functions/advance.html | 145 ++-- .../fusion/iterator/functions/advance_c.html | 145 ++-- doc/html/fusion/iterator/functions/deref.html | 120 ++-- .../fusion/iterator/functions/distance.html | 116 ++-- doc/html/fusion/iterator/functions/next.html | 120 ++-- doc/html/fusion/iterator/functions/prior.html | 120 ++-- doc/html/fusion/iterator/metafunctions.html | 16 +- .../iterator/metafunctions/advance.html | 147 ++--- .../iterator/metafunctions/advance_c.html | 149 ++--- .../fusion/iterator/metafunctions/deref.html | 124 ++-- .../iterator/metafunctions/distance.html | 122 ++-- .../iterator/metafunctions/equal_to.html | 123 ++-- .../fusion/iterator/metafunctions/next.html | 118 ++-- .../fusion/iterator/metafunctions/prior.html | 122 ++-- .../iterator/metafunctions/value_of.html | 124 ++-- doc/html/fusion/iterator/operator.html | 18 +- .../iterator/operator/operator_equality.html | 107 ++- .../operator/operator_inequality.html | 104 ++- .../operator/operator_unary_star.html | 125 ++-- doc/html/fusion/notes.html | 177 ++--- doc/html/fusion/organization.html | 137 ++-- doc/html/fusion/preface.html | 157 ++--- doc/html/fusion/quick_start.html | 155 ++--- doc/html/fusion/references.html | 31 +- doc/html/fusion/sequence.html | 29 +- doc/html/fusion/sequence/concepts.html | 54 +- .../concepts/associative_sequence.html | 319 ++++----- .../concepts/bidirectional_sequence.html | 342 ++++------ .../sequence/concepts/forward_sequence.html | 510 ++++++-------- .../concepts/random_access_sequence.html | 377 +++++------ doc/html/fusion/sequence/intrinsic.html | 36 +- .../fusion/sequence/intrinsic/functions.html | 15 +- .../sequence/intrinsic/functions/at.html | 124 ++-- .../sequence/intrinsic/functions/at_c.html | 124 ++-- .../sequence/intrinsic/functions/at_key.html | 120 ++-- .../sequence/intrinsic/functions/back.html | 100 ++- .../sequence/intrinsic/functions/begin.html | 114 ++-- .../sequence/intrinsic/functions/empty.html | 96 ++- .../sequence/intrinsic/functions/end.html | 114 ++-- .../sequence/intrinsic/functions/front.html | 100 ++- .../sequence/intrinsic/functions/has_key.html | 116 ++-- .../sequence/intrinsic/functions/size.html | 90 ++- .../sequence/intrinsic/functions/swap.html | 88 ++- .../sequence/intrinsic/metafunctions.html | 15 +- .../sequence/intrinsic/metafunctions/at.html | 124 ++-- .../intrinsic/metafunctions/at_c.html | 124 ++-- .../intrinsic/metafunctions/at_key.html | 128 ++-- .../intrinsic/metafunctions/back.html | 92 ++- .../intrinsic/metafunctions/begin.html | 96 ++- .../intrinsic/metafunctions/empty.html | 98 ++- .../sequence/intrinsic/metafunctions/end.html | 96 ++- .../intrinsic/metafunctions/front.html | 94 ++- .../intrinsic/metafunctions/has_key.html | 118 ++-- .../intrinsic/metafunctions/size.html | 92 ++- .../intrinsic/metafunctions/swap.html | 80 +-- .../intrinsic/metafunctions/value_at.html | 112 ++-- .../intrinsic/metafunctions/value_at_c.html | 112 ++-- .../intrinsic/metafunctions/value_at_key.html | 114 ++-- doc/html/fusion/sequence/operator.html | 17 +- .../fusion/sequence/operator/comparison.html | 31 +- .../sequence/operator/comparison/equal.html | 112 ++-- .../operator/comparison/greater_than.html | 107 ++- .../comparison/greater_than_equal.html | 104 ++- .../operator/comparison/less_than.html | 111 ++-- .../operator/comparison/less_than_equal.html | 107 ++- .../operator/comparison/not_equal.html | 104 ++- doc/html/fusion/sequence/operator/i_o.html | 77 +-- doc/html/fusion/sequence/operator/i_o/in.html | 107 ++- .../fusion/sequence/operator/i_o/out.html | 107 ++- doc/html/fusion/support.html | 15 +- doc/html/fusion/support/category_of.html | 117 ++-- doc/html/fusion/support/deduce.html | 65 +- doc/html/fusion/support/deduce_sequence.html | 69 +- doc/html/fusion/support/is_sequence.html | 123 ++-- doc/html/fusion/support/is_view.html | 121 ++-- doc/html/fusion/support/pair.html | 345 ++++------ doc/html/fusion/support/tag_of.html | 119 ++-- doc/html/fusion/tuple.html | 19 +- .../fusion/tuple/class_template_tuple.html | 28 +- .../class_template_tuple/construction.html | 86 +-- .../class_template_tuple/element_access.html | 73 +- .../relational_operators.html | 150 +++-- .../tuple_creation_functions.html | 58 +- .../tuple_helper_classes.html | 63 +- doc/html/fusion/tuple/pairs.html | 70 +- doc/html/fusion/view.html | 23 +- doc/html/fusion/view/filter_view.html | 237 +++---- doc/html/fusion/view/iterator_range.html | 257 ++++---- doc/html/fusion/view/joint_view.html | 245 +++---- doc/html/fusion/view/nview.html | 268 ++++---- doc/html/fusion/view/reverse_view.html | 202 +++--- doc/html/fusion/view/single_view.html | 197 +++--- doc/html/fusion/view/transform_view.html | 378 +++++------ doc/html/fusion/view/zip_view.html | 228 +++---- doc/html/index.html | 19 +- test/sequence/nview.cpp | 32 +- test/sequence/test_deduce_sequence.cpp | 16 + 257 files changed, 13732 insertions(+), 16068 deletions(-) create mode 100644 test/sequence/test_deduce_sequence.cpp diff --git a/doc/container.qbk b/doc/container.qbk index c859e4ae..226d3da1 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -716,9 +716,7 @@ default. Example: [heading Example] - make_map( - __fusion_make_pair__('X') - , __fusion_make_pair__("Men")) + make_map('X', "Men") [heading See also] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 10e477dc..77569ed6 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,10 +3,10 @@ Acknowledgements - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +

    Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey Gurtovoy, Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 092d31a7..bc480000 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -3,10 +3,10 @@ Adapted - + - + @@ -22,10 +22,13 @@

    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    - 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 Fusion's - non-intrusive Extension mechanism. + 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.

    @@ -46,16 +49,16 @@ Fusion also provides various schemes to make it easy for the user to adapt various data structures, non-intrusively, as full fledged Fusion sequences.

    -

    - - Header -

    +

    + + Header +

    #include <boost/fusion/adapted.hpp>
     #include <boost/fusion/include/adapted.hpp>
     

    Fusion sequences may also be adapted as fully conforming MPL - sequences (see Intrinsics). + sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL and Fusion. To make Fusion sequences fully conforming MPL sequences, include: diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index a15b8973..bc16c7f9 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -1,12 +1,12 @@ -BOOST_FUSION_ADAPT_ASSOC_STRUCT + BOOST_FUSION_ADAPT_ASSOC_STRUCT - + - + @@ -22,24 +22,29 @@

    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    + +

    + + Description +

    BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all - the necessary boilerplate to make an arbitrary struct into a model of Random Access Sequence - and Associative + the necessary boilerplate to make an arbitrary struct into a model of Random Access Sequence + and Associative Sequence.

    -
    - - Synopsis -
    +

    + + Synopsis +

    BOOST_FUSION_ADAPT_ASSOC_STRUCT(
         struct_name,
         (member_type0, member_name0, key_type0)
    @@ -47,35 +52,37 @@
         ...
         )
     
    -
    - - Semantics -
    +

    + + Semantics +

    - The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence and Associative - Sequence. The sequence of (member_typeN, + The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence and Associative + Sequence. The sequence of (member_typeN, member_nameN, - key_typeN) + key_typeN) triples declare the type, name and key type of each of the struct members that will be part of the sequence.

    - The macro should be used at global scope, and struct_name + The macro should be used at global scope, and struct_name should be the fully namespace qualified name of the struct to be converted.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    -
    - - Example -
    +

    + + Example +

    namespace demo
     {
         struct employee
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 371f71dd..1e665cd6 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -1,13 +1,13 @@
     
     
     
    -BOOST_FUSION_ADAPT_STRUCT
    + BOOST_FUSION_ADAPT_STRUCT
     
    -
    +
     
     
    -
    -
    +
    +
     
     
     
    @@ -22,23 +22,27 @@
     
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    + +

    + + Description +

    BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the - necessary boilerplate to make an arbitrary struct into a Random + necessary boilerplate to make an arbitrary struct into a Random Access Sequence.

    -
    - - Synopsis -
    +

    + + Synopsis +

    BOOST_FUSION_ADAPT_STRUCT(
         struct_name,
         (member_type0, member_name0)
    @@ -46,33 +50,34 @@
         ...
         )
     
    -
    - - Semantics -
    +

    + + Semantics +

    - The above macro generates the necessary code to adapt struct_name - as a model of Random - Access Sequence. The sequence of (member_typeN, - member_nameN) + The above macro generates the necessary code to adapt struct_name + as a model of Random + Access Sequence. The sequence of (member_typeN, + member_nameN) pairs declare the type and names of each of the struct members that will be part of the sequence.

    - The macro should be used at global scope, and struct_name + The macro should be used at global scope, and struct_name should be the fully namespace qualified name of the struct to be converted.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    -
    - - Example -
    +

    + + Example +

    namespace demo
     {
         struct employee
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index ef50847b..1d64985c 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -3,10 +3,10 @@
     
     boost::array
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,45 +22,50 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    - This module provides adapters for boost::array. - Including the module header makes boost::array - a fully conforming Random + This module provides adapters for boost::array. + Including the module header makes boost::array + a fully conforming Random Access Sequence.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     
    -
    - - Model of -
    -
    • Random +

      + + Model of +

      + -
      - - Example -
      +

      + + 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 -
      +

      + + See also +

      Boost.Array Library

      diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index 1d391b4b..3ddd4b84 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -3,11 +3,11 @@ boost::tuple - + - - + +
    @@ -22,40 +22,45 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    - This module provides adapters for boost::tuple. - Including the module header makes boost::tuple - a fully conforming Forward + This module provides adapters for boost::tuple. + Including the module header makes boost::tuple + a fully conforming Forward Sequence.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     
    -
    - - Model of -
    - -
    - - Example -
    +

    + + 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 -
    +

    + + See also +

    Boost.Tuple Library diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 768703e7..954dcc27 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -3,10 +3,10 @@ mpl sequence - + - + @@ -22,60 +22,66 @@

    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    This module provides adapters for MPL sequences. Including the module header makes all MPL sequences fully conforming fusion sequences.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/adapted/mpl.hpp>
     #include <boost/fusion/include/mpl.hpp>
     
    -
    - - Model of -
    -
    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index d14c7812..1bf2e3f8 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -3,10 +3,10 @@ Algorithm - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    Iteration
    @@ -43,10 +46,10 @@
    Metafunctions
    -

    - - Lazy Evaluation -

    +

    + + Lazy Evaluation +

    Unlike MPL, Fusion algorithms are lazy and non sequence-type preserving. What does that mean? @@ -58,41 +61,41 @@ 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 -

    +

    + + 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 + 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 + 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 -

    +

    + + Header +

    #include <boost/fusion/algorithm.hpp>
     #include <boost/fusion/include/algorithm.hpp>
     
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html index a82a8d1e..c99b7083 100644 --- a/doc/html/fusion/algorithm/iteration.html +++ b/doc/html/fusion/algorithm/iteration.html @@ -3,10 +3,10 @@ Iteration - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    Functions
    Metafunctions
    @@ -34,10 +37,10 @@ The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/algorithm/iteration.hpp>
     #include <boost/fusion/include/iteration.hpp>
     
    diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html index 9b310aee..dcba7466 100644 --- a/doc/html/fusion/algorithm/iteration/functions.html +++ b/doc/html/fusion/algorithm/iteration/functions.html @@ -3,10 +3,10 @@ Functions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    fold
    accumulate
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index eb9ca358..b3d7e94a 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -3,10 +3,10 @@ accumulate - + - + @@ -22,150 +22,130 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - For a sequence Seq, initial - state, and binary function object or function pointer f, - accumulate repeatedly applies binary f - to each element of Seq + 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 + + Synopsis
    template<
         typename Sequence,
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    - - - + + +

    -
    -

    +

    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 -

    -
    -

    +

    + 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 -

    -
    -

    +

    + initial_state +

    Any type -

    -
    -

    +

    Initial state -

    -
    -

    - f -

    -
    -

    - 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 -

    -
    -

    +

    + f +

    + 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 +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    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 + + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - - Header + + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - - Example + + Example
    struct make_string
     {
    @@ -178,8 +158,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/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html index e266f0f3..8bc6fb46 100644 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -3,10 +3,10 @@ fold - + - + @@ -22,150 +22,130 @@
    PrevUpHomeNext
    -
    -
    -fold -
    +
    +
    +
    +fold +
    +
    +
    - - Description + + Description

    - For a sequence Seq, initial - state, and binary function object or function pointer f, - fold repeatedly applies binary f - to each element of Seq + 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 + + Synopsis
    template<
         typename Sequence,
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    - - - + + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward - Sequence,f(e,s) must be a valid expression for - each element e - in seq, and current - state s -

    -
    -

    +

    + 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 -

    -
    -

    +

    + initial_state +

    Any type -

    -
    -

    +

    Initial state -

    -
    -

    - f -

    -
    -

    - 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 -

    -
    -

    +

    + f +

    + 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 +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    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 + + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - - Header + + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - - Example + + Example
    struct make_string
     {
    @@ -178,8 +158,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/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html index aa78fa40..01231181 100644 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -3,10 +3,10 @@ for_each - + - + @@ -22,126 +22,113 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Applies a unary function object to each element of a sequence.

    - - Synopsis + + Synopsis
    template<
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward - Sequence, f(e) must be a valid expression for - each element e - in seq -

    -
    -

    +

    + 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 Regular +

    + f +

    + A unary Regular Callable Object -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + 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 + + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - - Header + + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - - Example + + Example
    struct increment
     {
    @@ -152,9 +139,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/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html index f49150fd..d4d69116 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    fold
    accumulate
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 90ea13a2..da430a99 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -3,10 +3,10 @@ accumulate - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the result type of accumulate. + Returns the result type of accumulate.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -47,115 +50,92 @@
     };
     
    -

    Table 1.37. Parameters

    -
    +

    Table 1.37. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - +

    + - - - + + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    The sequence to iterate -

    -
    -

    - State -

    -
    -

    +

    + State +

    Any type -

    -
    -

    - The initial state for the first application of F -

    -

    + The initial state for the first application of F +

    -

    - F -

    -
    -

    - 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 -

    -
    -

    +

    + F +

    + 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 +

    The operation to be applied on forward traversal -

    -
    + -
    - - Expression +
    + + 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 function object or function pointer 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 + + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - - Header + + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index 1bf2a6a3..3688b58d 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -3,10 +3,10 @@
     
     fold
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,20 +22,23 @@
     
    PrevUpHomeNext
    -
    -
    -fold -
    +
    +
    +
    +fold +
    +
    +
    - - Description + + Description

    - Returns the result type of fold. + Returns the result type of fold.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -47,115 +50,92 @@
     };
     
    -

    Table 1.36. Parameters

    -
    +

    Table 1.36. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - +

    + - - - + + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    The sequence to iterate -

    -
    -

    - State -

    -
    -

    +

    + State +

    Any type -

    -
    -

    - The initial state for the first application of F -

    -

    + The initial state for the first application of F +

    -

    - F -

    -
    -

    - 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 -

    -
    -

    +

    + F +

    + 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 +

    The operation to be applied on forward traversal -

    -
    +
    -
    - - Expression +
    + + 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 function object or function pointer 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 + + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - - Header + + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index 9ff50008..341f181d 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -3,10 +3,10 @@
     
     for_each
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    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 + + Description
    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -48,96 +51,79 @@
     };
     
    -

    Table 1.38. Parameters

    -
    +

    Table 1.38. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - F -

    -
    -

    +

    + F +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index 81960755..2a36a1f4 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -3,10 +3,10 @@
     
     Query
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,10 +22,13 @@
     
    PrevUpHomeNext
    -
    -

    -Query -

    +
    +
    +

    +Query +

    +
    +
    Functions
    Metafunctions
    @@ -33,10 +36,10 @@

    The query algorithms provide support for searching and analyzing sequences.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/algorithm/query.hpp>
     #include <boost/fusion/include/query.hpp>
     
    diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html index f1d19357..67be2efb 100644 --- a/doc/html/fusion/algorithm/query/functions.html +++ b/doc/html/fusion/algorithm/query/functions.html @@ -3,10 +3,10 @@ Functions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    any
    all
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index 8b696e11..99b995ba 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -3,10 +3,10 @@ all - + - + @@ -22,131 +22,117 @@
    PrevUpHomeNext
    -
    -
    -all -
    +
    +
    +
    +all +
    +
    +
    - - Description + + 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 + + Synopsis
    template<
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq -

    -
    -

    +

    + 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 -

    -
    -

    +

    + f +

    A unary function object -

    -
    -

    +

    The search predicate -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - - Example + + Example
    struct odd
     {
    @@ -157,8 +143,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/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html index 1e5a1a53..011b019e 100644 --- a/doc/html/fusion/algorithm/query/functions/any.html +++ b/doc/html/fusion/algorithm/query/functions/any.html @@ -3,10 +3,10 @@ any - + - + @@ -22,131 +22,117 @@
    PrevUpHomeNext
    -
    -
    -any -
    +
    +
    +
    +any +
    +
    +
    - - Description + + 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 + + Synopsis
    template<
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    -
    -

    +

    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 -

    -
    -

    +

    + 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 -

    -
    -

    +

    + f +

    A unary function object -

    -
    -

    +

    The search predicate -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - - Example + + Example
    struct odd
     {
    @@ -157,8 +143,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/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html index 284af260..8675a7d3 100644 --- a/doc/html/fusion/algorithm/query/functions/count.html +++ b/doc/html/fusion/algorithm/query/functions/count.html @@ -3,10 +3,10 @@ count - + - + @@ -22,130 +22,116 @@
    PrevUpHomeNext
    -
    -
    -count -
    +
    +
    +
    +count +
    +
    +
    - - Description + + Description

    Returns the number of elements of a given type within a sequence.

    - - Synopsis + + Synopsis
    template<
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    -
    -

    +

    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 -

    -
    -

    +

    + 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 -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type to count -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - - Example + + 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/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html index 6c31ef0e..0ea219a0 100644 --- a/doc/html/fusion/algorithm/query/functions/count_if.html +++ b/doc/html/fusion/algorithm/query/functions/count_if.html @@ -3,10 +3,10 @@ count_if - + - + @@ -22,129 +22,115 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each - element e in seq -

    -
    -

    +

    + 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 -

    -
    -

    +

    + f +

    A unary function object -

    -
    -

    +

    The search predicate -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - - Example + + 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/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html index 1a5ea6b7..f3f695fe 100644 --- a/doc/html/fusion/algorithm/query/functions/find.html +++ b/doc/html/fusion/algorithm/query/functions/find.html @@ -3,10 +3,10 @@ find - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    -
    -find -
    +
    +
    +
    +find +
    +
    +
    - - Description + + Description

    Finds the first element of a given type within a sequence.

    - - Synopsis + + Synopsis
    template<
         typename T,
    @@ -50,107 +53,90 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.42. Parameters

    -
    +

    Table 1.42. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    The sequence to search -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type to search for -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - - Example + + 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/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html index 7ca805cc..d5eed466 100644 --- a/doc/html/fusion/algorithm/query/functions/find_if.html +++ b/doc/html/fusion/algorithm/query/functions/find_if.html @@ -3,10 +3,10 @@ find_if - + - + @@ -22,22 +22,25 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    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 + + Description
    - - Synopsis + + Synopsis
    template<
         typename F,
    @@ -52,105 +55,88 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.43. Parameters

    -
    +

    Table 1.43. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    The sequence to search -

    -
    -

    - F -

    -
    -

    +

    + F +

    A unary MPL Lambda Expression -

    -
    -

    +

    The search predicate -

    -
    + -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    /algorithm/query/find_if.hpp>

    - - Example + + 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/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html index a93362b3..fb2f13e2 100644 --- a/doc/html/fusion/algorithm/query/functions/none.html +++ b/doc/html/fusion/algorithm/query/functions/none.html @@ -3,10 +3,10 @@ none - + - + @@ -22,131 +22,117 @@
    PrevUpHomeNext
    -
    -
    -none -
    +
    +
    +
    +none +
    +
    +
    - - Description + + 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 + + Synopsis
    template<
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq -

    -
    -

    +

    + 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 -

    -
    -

    +

    + f +

    A unary function object -

    -
    -

    +

    The search predicate -

    -
    + -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - - Example + + Example
    struct odd
     {
    @@ -157,8 +143,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/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html index f6b639c1..03aa9147 100644 --- a/doc/html/fusion/algorithm/query/metafunctions.html +++ b/doc/html/fusion/algorithm/query/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    any
    all
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index 2e34c969..5c4d3889 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -3,10 +3,10 @@ all - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    -
    -all -
    +
    +
    +
    +all +
    +
    +
    - - Description + + Description

    - A metafunction returning the result type of all. + A metafunction returning the result type of all.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -47,98 +50,83 @@
     };
     
    -

    Table 1.47. Parameters

    -
    +

    Table 1.47. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - F -

    -
    -

    - A model of unary Polymorphic +

    + F +

    + A model of unary Polymorphic Function Object -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index c91cb670..772e1969 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -3,10 +3,10 @@
     
     any
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,20 +22,23 @@
     
    PrevUpHomeNext
    -
    -
    -any -
    +
    +
    +
    +any +
    +
    +
    - - Description + + Description

    - A metafunction returning the result type of any. + A metafunction returning the result type of any.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -47,98 +50,83 @@
     };
     
    -

    Table 1.46. Parameters

    -
    +

    Table 1.46. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - F -

    -
    -

    - A model of unary Polymorphic +

    + F +

    + A model of unary Polymorphic Function Object -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index 9d771d66..0e20ddc0 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -3,10 +3,10 @@
     
     count
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    -
    -count -
    +
    +
    +
    +count +
    +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -48,94 +51,77 @@
     };
     
    -

    Table 1.51. Parameters

    -
    +

    Table 1.51. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    heading Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index 7a81368c..8587194e 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -3,10 +3,10 @@
     
     count_if
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -48,94 +51,77 @@
     };
     
    -

    Table 1.52. Parameters

    -
    +

    Table 1.52. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Pred -

    -
    -

    +

    + Pred +

    A unary function object -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index 3172d49c..305bb4ba 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -3,10 +3,10 @@
     
     find
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    -
    -find -
    +
    +
    +
    +find +
    +
    +
    - - Description + + Description

    - Returns the result type of find, + Returns the result type of find, given the sequence and search types.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -48,96 +51,79 @@
     };
     
    -

    Table 1.49. Parameters

    -
    +

    Table 1.49. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - Model of Forward +

    + Sequence +

    + Model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + 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 + 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 + + Complexity

    - Linear, at most result_of::size<Sequence>::value comparisons. + Linear, at most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index c05ecb3d..ee10c29c 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -3,10 +3,10 @@
     
     find_if
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the result type of find_if + Returns the result type of find_if given the sequence and predicate types.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -48,97 +51,80 @@
     };
     
    -

    Table 1.50. Parameters

    -
    +

    Table 1.50. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Pred -

    -
    -

    +

    + Pred +

    A model of MPL Lambda Expression -

    -
    -

    +

    Operation's arguments -

    -
    +
    -
    - - Expression +
    + + 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 + + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/find_if.hpp>
     #include <boost/fusion/include/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index 1bb5329e..cbcc6bad 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -3,10 +3,10 @@
     
     none
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,20 +22,23 @@
     
    PrevUpHomeNext
    -
    -
    -none -
    +
    +
    +
    +none +
    +
    +
    - - Description + + Description

    - A metafunction returning the result type of none. + A metafunction returning the result type of none.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -47,98 +50,83 @@
     };
     
    -

    Table 1.48. Parameters

    -
    +

    Table 1.48. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - F -

    -
    -

    - A model of unary Polymorphic +

    + F +

    + A model of unary Polymorphic Function Object -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + 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 Polymorphic - Function Object of type F. - The return type is always 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 6c7283f0..17f9572e 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -3,10 +3,10 @@
     
     Transformation
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,10 +22,13 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    Functions
    Metafunctions
    @@ -35,21 +38,21 @@ 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 -
    +

    + + Header +

    #include <boost/fusion/algorithm/transformation.hpp>
     #include <boost/fusion/include/transformation.hpp>
     
    diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html index 0ce466d5..99877326 100644 --- a/doc/html/fusion/algorithm/transformation/functions.html +++ b/doc/html/fusion/algorithm/transformation/functions.html @@ -3,10 +3,10 @@ Functions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    filter
    filter_if
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index eb400f13..f9338990 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -3,10 +3,10 @@ clear - + - + @@ -22,105 +22,98 @@
    PrevUpHomeNext
    -
    -
    -clear -
    +
    +
    +
    +clear +
    +
    +
    - - Description + + Description

    - clear returns an empty sequence. + clear returns an empty sequence.

    - - Synposis + + 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

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    clear(seq);
    +
    clear(seq);
     

    - Return type: A model of Forward + Return type: A model of Forward Sequence.

    - Expression Semantics: Returns a sequence + Expression Semantics: Returns a sequence with no elements.

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html index b086ac00..0160fd20 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html @@ -3,10 +3,10 @@ erase - + - + @@ -22,27 +22,30 @@
    PrevUpHomeNext
    -
    -
    -erase -
    +
    +
    +
    +erase +
    +
    +
    - - Description + + Description

    Returns a new sequence, containing all the elements of the original except those at a specified iterator, or between two iterators.

    - - Synposis + + Synposis
    template<
         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,141 +53,122 @@
         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

    +
    - - + - + +

    - - + - + +

    - - + - +

    + - - + - +

    + -
    -

    +

    Parameters -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - it1 -

    -
    -

    - A model of Forward +

    + it1 +

    + A model of Forward Iterator -

    -
    -

    - Iterator into seq -

    -

    + Iterator into seq +

    -

    - it2 -

    -
    -

    - A model of Forward +

    + it2 +

    + A model of Forward Iterator -

    -
    -

    - Iterator into seq - after it1 -

    -

    + Iterator into seq + after it1 +

    +
    -
    - - Expression +
    + + Expression Semantics
    -
    erase(seq, pos);
    +
    erase(seq, pos);
     

    - Return type: A model of Forward + 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 Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html index d121b4b0..ca02e1f1 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html @@ -3,10 +3,10 @@ erase_key - + - + @@ -22,24 +22,29 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - For an Associative - Sequence seq, - returns a Forward + For an Associative + Sequence seq, + returns a Forward Sequence containing all the elements of the original except those with a given key.

    - - Synposis + + Synposis
    template<
         typename Key,
    @@ -48,104 +53,88 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    -
    +

    Table 1.64. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Associative +

    + seq +

    + A model of Associative Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Key -

    -
    -

    +

    + Key +

    Any type -

    -
    -

    +

    Key to erase -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    erase_key<Key>(seq);
    +
    erase_key<Key>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html index a8234730..9fbefd71 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html @@ -3,10 +3,10 @@ filter - + - + @@ -22,129 +22,116 @@
    PrevUpHomeNext
    -
    -
    -filter -
    +
    +
    +
    +filter +
    +
    +
    - - Description + + Description

    For a given sequence, filter returns a new sequences containing only the elements of a specified type.

    - - Synopsis + + Synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type to retain -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    filter<T>(seq);
    +
    filter<T>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html index 528ca4e0..be0cf834 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html @@ -3,10 +3,10 @@ filter_if - + - + @@ -22,132 +22,119 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Pred -

    -
    -

    +

    + Pred +

    A unary MPL Lambda Expression -

    -
    -

    +

    The predicate to filter by -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    filter_if<Pred>(seq);
    +
    filter_if<Pred>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html index 711d9965..2149d2b4 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html @@ -3,10 +3,10 @@ insert - + - + @@ -22,21 +22,24 @@
    PrevUpHomeNext
    -
    -
    -insert -
    +
    +
    +
    +insert +
    +
    +
    - - Description + + 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 + + Synposis
    template<
         typename Sequence,
    @@ -46,125 +49,104 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.65. Parameters

    -
    +

    Table 1.65. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - pos -

    -
    -

    - A model of Forward +

    + pos +

    + A model of Forward Iterator -

    -
    -

    +

    The position to insert at -

    -
    -

    - t -

    -
    -

    +

    + t +

    Any type -

    -
    -

    +

    The value to insert -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    insert(seq, p, t);
    +
    insert(seq, p, t);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html index 041574dc..53cc548f 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html @@ -3,10 +3,10 @@ insert_range - + - + @@ -22,151 +22,134 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Returns a new sequence with another sequence inserted at a specified iterator.

    - - Synposis + + Synposis
    template<
         typename Sequence,
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - pos -

    -
    -

    - A model of Forward +

    + pos +

    + A model of Forward Iterator -

    -
    -

    +

    The position to insert at -

    -
    -

    - range -

    -
    -

    - A model of Forward +

    + range +

    + A model of Forward Sequence -

    -
    -

    +

    Range to insert -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    insert(seq, pos, range);
    +
    insert(seq, pos, range);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html index a49b802b..1b910024 100644 --- a/doc/html/fusion/algorithm/transformation/functions/join.html +++ b/doc/html/fusion/algorithm/transformation/functions/join.html @@ -3,10 +3,10 @@ join - + - + @@ -22,130 +22,118 @@
    PrevUpHomeNext
    -
    -
    -join -
    +
    +
    +
    +join +
    +
    +
    - - Description + + Description

    Takes 2 sequences and returns a sequence containing the elements of the first followed by the elements of the second.

    - - Synopsis + + 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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - lhs -

    -
    -

    - A model of Forward +

    + lhs +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - rhs -

    -
    -

    - A model of Forward +

    + rhs +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    join(lhs, rhs);
    +
    join(lhs, rhs);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html index 9d2dab07..5335bf4c 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html @@ -3,10 +3,10 @@ pop_back - + - + @@ -22,107 +22,100 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Returns a new sequence, with the last element of the original removed.

    - - Synopsis + + 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

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    pop_back(seq);
    +
    pop_back(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html index ad3177f2..66766f43 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html @@ -3,10 +3,10 @@ pop_front - + - + @@ -22,107 +22,100 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Returns a new sequence, with the first element of the original removed.

    - - Synopsis + + 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

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    pop_front(seq);
    +
    pop_front(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html index 15cc4b66..7a4a9d26 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html @@ -3,10 +3,10 @@ push_back - + - + @@ -22,128 +22,115 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Returns a new sequence with an element added at the end.

    - - Synopsis + + Synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - t -

    -
    -

    +

    + t +

    Any type -

    -
    -

    +

    The value to add to the end -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    push_back(seq, t);
    +
    push_back(seq, t);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
     #include <boost/fusion/include/push_back.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html index fc7d0540..637636fd 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html @@ -3,10 +3,10 @@ push_front - + - + @@ -22,129 +22,116 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Returns a new sequence with an element added at the beginning.

    - - Synopsis + + Synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - t -

    -
    -

    +

    + t +

    Any type -

    -
    -

    +

    The value to add to the beginning -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    push_back(seq, t);
    +
    push_back(seq, t);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html index 9150de0d..b2512b28 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html @@ -3,10 +3,10 @@ remove - + - + @@ -22,129 +22,116 @@
    PrevUpHomeNext
    -
    -
    -remove -
    +
    +
    +
    +remove +
    +
    +
    - - Description + + Description

    Returns a new sequence, with all the elements of the original sequence, except those of a given type.

    - - Synopsis + + Synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Type to remove -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    remove<T>(seq);
    +
    remove<T>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html index f1a4161b..a4bd622b 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html @@ -3,10 +3,10 @@ remove_if - + - + @@ -22,131 +22,118 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + seq +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Pred -

    -
    -

    +

    + Pred +

    A model of unary MPL Lambda Expression -

    -
    -

    +

    Removal predicate -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    remove_if<Pred>(seq);
    +
    remove_if<Pred>(seq);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html index d11940a6..ef8b4384 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html @@ -3,10 +3,10 @@ replace - + - + @@ -22,150 +22,131 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Replaces each value within a sequence of a given type and value with a new value.

    - - Synopsis + + Synopsis
    template<
         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

    +
    - - + - + +

    - - - + + +

    - - + - + +

    - - + - + +

    -
    -

    +

    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 -

    -
    -

    +

    + 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 -

    -
    -

    +

    + old_value +

    Any type -

    -
    -

    +

    Value to replace -

    -
    -

    - new_value -

    -
    -

    +

    + new_value +

    Any type -

    -
    -

    +

    Replacement value -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    replace(seq, old_value, new_value);
    +
    replace(seq, old_value, new_value);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html index cc1c3028..4298583f 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html @@ -3,10 +3,10 @@ replace_if - + - + @@ -22,148 +22,129 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - - + + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + 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 -

    -
    -

    +

    + 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 -

    -
    -

    +

    + new_value +

    Any type -

    -
    -

    +

    Replacement value -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    replace_if(seq, f, new_value);
    +
    replace_if(seq, f, new_value);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - - Example + + Example
    struct odd
     {
    @@ -174,7 +155,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/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html index 20727fe5..a827ef7e 100644 --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html @@ -3,10 +3,10 @@ reverse - + - + @@ -22,106 +22,99 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    Returns a new sequence with the elements of the original in reverse order.

    - - Synposis + + 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

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Bidirectional +

    + seq +

    + A model of Bidirectional Sequence -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    reverse(seq);
    +
    reverse(seq);
     

    - Return type: A model of Bidirectional + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - - Example + + 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/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html index d0084f29..3bbfd6a3 100644 --- a/doc/html/fusion/algorithm/transformation/functions/transform.html +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html @@ -3,10 +3,10 @@ transform - + - + @@ -22,119 +22,106 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - 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. + 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 + + Unary version synopsis
    template<
         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

    +
    - - + - + +

    - - + - + +

    - - - + + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + 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<F(E)>::type is the return type of f when called with a value of - each element type E. -

    -
    -

    +

    + f +

    + 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 -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    transform(seq, f);
    +
    transform(seq, f);
     

    - Return type: A model of Forward + 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 + + Binary version synopsis
    template<
    @@ -142,121 +129,100 @@
         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

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - - + + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq1 -

    -
    -

    - A model of Forward +

    + seq1 +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - seq2 -

    -
    -

    - A model of Forward +

    + 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 -

    -
    -

    +

    + 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 +

    + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - - Example + + Example
    struct triple
     {
    @@ -268,7 +234,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/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html index 27b408b7..d150346a 100644 --- a/doc/html/fusion/algorithm/transformation/functions/zip.html +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html @@ -3,10 +3,10 @@ zip - + - + @@ -22,21 +22,24 @@
    PrevUpHomeNext
    -
    -
    -zip -
    +
    +
    +
    +zip +
    +
    +
    - - Description + + Description

    Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences.

    - - Synopsis + + Synopsis
    template<
         typename Sequence1,
    @@ -44,96 +47,86 @@
         ...
         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

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq1 to seqN -

    -
    -

    - Each sequence is a model of Forward +

    + seq1 to seqN +

    + Each sequence is a model of Forward Sequence. -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    zip(seq1, seq2, ... seqN);
    +
    zip(seq1, seq2, ... seqN);
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - - Example + + 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/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html index 58e32ad4..f51eb53b 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    filter
    filter_if
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index 04778f69..3834fce7 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -3,10 +3,10 @@ clear - + - + @@ -22,21 +22,24 @@
    PrevUpHomeNext
    -
    -
    -clear -
    +
    +
    +
    +clear +
    +
    +
    - - Description + + Description

    - Returns the result type of clear, given the input sequence + Returns the result type of clear, given the input sequence type.

    - - Synopsis + + Synopsis
    template<
         typename Sequence
    @@ -47,73 +50,62 @@
     };
     
    -

    Table 1.82. Parameters

    -
    +

    Table 1.82. Parameters

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    +

    + Sequence +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    + -
    - - Expression +
    + + Expression Semantics
    -
    result_of::clear<Sequence>::type
    +
    result_of::clear<Sequence>::type
     

    - Return type: A model of Forward + Return type: A model of Forward Sequence.

    - Semantics: Returns an empty sequence. + Semantics: Returns an empty sequence.

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index 6b243133..d09ea874 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -3,10 +3,10 @@
     
     erase
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    -
    -erase -
    +
    +
    +
    +erase +
    +
    +

    - 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 + + Description
    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -48,124 +51,105 @@
     };
     
    -

    Table 1.83. Parameters

    -
    +

    Table 1.83. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - It1 -

    -
    -

    - A model of Forward +

    + It1 +

    + A model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    -

    - It2 -

    -
    -

    - A model of Forward +

    + It2 +

    + A model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::erase<Sequence, It1>::type
    +
    result_of::erase<Sequence, It1>::type
     

    - Return type: A model of Forward + 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 Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index 6d7b1a9c..8be1990a 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -3,10 +3,10 @@
     
     erase_key
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -48,95 +51,79 @@
     };
     
    -

    Table 1.84. Parameters

    -
    +

    Table 1.84. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Associative +

    + Sequence +

    + A model of Associative Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Key -

    -
    -

    +

    + Key +

    Any type -

    -
    -

    +

    Key type -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::erase_key<Sequence, Key>::type
    +
    result_of::erase_key<Sequence, Key>::type
     

    - Return type: A model of Associative + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index a93af175..a752f5c2 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -3,10 +3,10 @@
     
     filter
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    -
    -filter -
    +
    +
    +
    +filter +
    +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -48,97 +51,81 @@
     };
     
    -

    Table 1.73. Parameter

    -
    +

    Table 1.73. Parameter

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Type to retain -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::filter<Sequence, T>::type
    +
    result_of::filter<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index dc9c45f0..14e36e11 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -3,10 +3,10 @@
     
     filter_if
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,22 +22,25 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -49,97 +52,81 @@
     };
     
    -

    Table 1.74. Parameter

    -
    +

    Table 1.74. Parameter

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Pred -

    -
    -

    +

    + Pred +

    A unary MPL Lambda Expression -

    -
    -

    +

    Type to retain -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::filter_if<Sequence, Pred>::type
    +
    result_of::filter_if<Sequence, Pred>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index 983fd85d..1eeffc70 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -3,10 +3,10 @@
     
     insert
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    -
    -insert -
    +
    +
    +
    +insert +
    +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -49,114 +52,93 @@
     };
     
    -

    Table 1.85. Parameters

    -
    +

    Table 1.85. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Position -

    -
    -

    - A model of Forward +

    + Position +

    + A model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::insert<Sequence, Position, T>::type
    +
    result_of::insert<Sequence, Position, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index 10ec861a..097c63eb 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -3,10 +3,10 @@
     
     insert_range
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -49,115 +52,95 @@
     };
     
    -

    Table 1.86. Parameters

    -
    +

    Table 1.86. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Position -

    -
    -

    - A model of Forward +

    + Position +

    + A model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    -

    - Range -

    -
    -

    - A model of Forward +

    + Range +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::insert_range<Sequence, Position, Range>::type
    +
    result_of::insert_range<Sequence, Position, Range>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 696245f9..39d35ca8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -3,10 +3,10 @@
     
     join
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,20 +22,23 @@
     
    PrevUpHomeNext
    -
    -
    -join -
    +
    +
    +
    +join +
    +
    +
    - - Description + + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - - Synopsis + + Synopsis
    template<
         typename LhSequence,
    @@ -47,32 +50,33 @@
     };
     
    - - Expression + + Expression Semantics
    -
    result_of::join<LhSequence, RhSequence>::type
    +
    result_of::join<LhSequence, RhSequence>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 5859e925..6ad86087 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -3,10 +3,10 @@
     
     pop_back
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence
    @@ -47,76 +50,66 @@
     };
     
    -

    Table 1.87. Parameters

    -
    +

    Table 1.87. Parameters

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::pop_back<Sequence>::type
    +
    result_of::pop_back<Sequence>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/tranformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index c0577a61..54d17335 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -3,10 +3,10 @@
     
     pop_front
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence
    @@ -47,69 +50,59 @@
     };
     
    -

    Table 1.88. Parameters

    -
    +

    Table 1.88. Parameters

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::pop_front<Sequence>::type
    +
    result_of::pop_front<Sequence>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 1ae0b42e..e6038f04 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html @@ -3,10 +3,10 @@ push_back - + - + @@ -22,21 +22,24 @@

    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -48,89 +51,73 @@
     };
     
    -

    Table 1.89. Parameters

    -
    +

    Table 1.89. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::push_back<Sequence, T>::type
    +
    result_of::push_back<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index 5a04893f..bfa4c9a4 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html @@ -3,10 +3,10 @@ push_front - + - + @@ -22,21 +22,24 @@

    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -48,89 +51,73 @@
     };
     
    -

    Table 1.90. Parameters

    -
    +

    Table 1.90. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::push_front<Sequence, T>::type
    +
    result_of::push_front<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant. diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index a4be10fb..ed429d68 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -3,10 +3,10 @@ remove - + - + @@ -22,21 +22,24 @@

    PrevUpHomeNext
    -
    -
    -remove -
    +
    +
    +
    +remove +
    +
    +
    - - Description + + Description

    - Returns the result type of remove, given the sequence and + Returns the result type of remove, given the sequence and removal types.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -48,97 +51,81 @@
     };
     
    -

    Table 1.79. Parameters

    -
    +

    Table 1.79. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    Remove elements of this type -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::remove<Sequence, T>::type
    +
    result_of::remove<Sequence, T>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index b2118f07..81161922 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -3,10 +3,10 @@
     
     remove_if
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,22 +22,25 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -49,97 +52,81 @@
     };
     
    -

    Table 1.80. Parameters

    -
    +

    Table 1.80. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - +

    + -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - Pred -

    -
    -

    +

    + Pred +

    A model of unary MPL Lambda Expression -

    -
    -

    - Remove elements which evaluate to boost::mpl::true_ -

    -

    + Remove elements which evaluate to boost::mpl::true_ +

    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::remove_if<Sequence, Pred>::type
    +
    result_of::remove_if<Sequence, Pred>::type
     

    - Return type: A model of Forward + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 47c94e70..8318882a 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -3,10 +3,10 @@
     
     replace
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + 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 + + Synopsis
    template<
         typename Sequence,
    @@ -48,94 +51,78 @@
     };
     
    -

    Table 1.77. Parameters

    -
    +

    Table 1.77. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type of the search and replacement objects -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::replace<Sequence,T>::type
    +
    result_of::replace<Sequence,T>::type
     

    - Return type: A model of Forward + Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace. + Semantics: Returns the return type of + replace.

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index 4bc21140..082689a8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -3,10 +3,10 @@
     
     replace_if
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,22 +22,26 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the result type of replace_if, given the types - of the sequence, Polymorphic + Returns the result type of replace_if, given the types + of the sequence, Polymorphic Function Object predicate and replacement object.

    - - Synopsis + + Synopsis
    template<
         typename Sequence,
    @@ -49,112 +53,91 @@
     };
     
    -

    Table 1.78. Parameters

    -
    +

    Table 1.78. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Forward +

    + Sequence +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - F -

    -
    -

    - A model of unary Polymorphic +

    + F +

    + A model of unary Polymorphic Function Object -

    -
    -

    +

    Replacement predicate -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type of the replacement object -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::replace_if<Sequence,F,T>::type
    +
    result_of::replace_if<Sequence,F,T>::type
     

    - Return type: A model of Forward + Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace_if. + Semantics: Returns the return type of + replace_if.

    - - Complexity + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index cb0f6d3b..dd237ca1 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -3,10 +3,10 @@
     
     reverse
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,21 +22,24 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the result type of reverse, given the input sequence + Returns the result type of reverse, given the input sequence type.

    - - Synopsis + + Synopsis
    template<
         typename Sequence
    @@ -47,75 +50,65 @@
     };
     
    -

    Table 1.81. Parameters

    -
    +

    Table 1.81. Parameters

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A model of Bidirectional +

    + Sequence +

    + A model of Bidirectional Sequence -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    result_of::reverse<Sequence>::type
    +
    result_of::reverse<Sequence>::type
     

    - Return type: A model of Bidirectional + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index 260ef5c1..5dd6e4ce 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -3,10 +3,10 @@
     
     transform
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,119 +22,106 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - 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. + 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 + + Unary version synopsis
    template<
         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.75. Parameters

    -
    +

    Table 1.75. Parameters

    +
    - - + - + +

    - - + - + +

    - - - + + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    - A model of Forward +

    + 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<F(E)>::type is the return type of f when called with a value of - each element type E. -

    -
    -

    +

    + f +

    + 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 -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    -
    transform(seq, f);
    +
    transform(seq, f);
     

    - Return type: A model of Forward + 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 + + Binary version synopsis
    template<
    @@ -142,121 +129,100 @@
         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.76. Parameters

    -
    +

    Table 1.76. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - - + + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq1 -

    -
    -

    - A model of Forward +

    + seq1 +

    + A model of Forward Sequence -

    -
    -

    +

    Operation's argument -

    -
    -

    - seq2 -

    -
    -

    - A model of Forward +

    + 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 -

    -
    -

    +

    + 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 +

    + 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 + + Complexity

    Constant. Returns a view which is lazily evaluated.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - - Example + + Example
    struct triple
     {
    @@ -268,7 +234,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/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html index cf8cbe7f..8ecd5532 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html @@ -3,10 +3,10 @@ zip - + - + @@ -22,21 +22,24 @@
    PrevUpHomeNext
    -
    -
    -zip -
    +
    +
    +
    +zip +
    +
    +
    - - Description + + Description

    Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences.

    - - Synopsis + + Synopsis
    template<
         typename Sequence1,
    @@ -50,37 +53,37 @@
     };
     
    - - Expression + + 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 + + Complexity

    Constant.

    - - Header + + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
    index d3bd0560..38a42e09 100644
    --- a/doc/html/fusion/change_log.html
    +++ b/doc/html/fusion/change_log.html
    @@ -3,10 +3,10 @@
     
     Change log
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,38 +22,41 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    This section summarizes significant changes to the Fusion library.

    -
      -
    • - Sep 27, 2006: Added boost::tuple +
        +
      • + Sep 27, 2006: Added boost::tuple support. (Joel de Guzman)
      • -
      • - Nov 17, 2006: Added boost::variant +
      • + Nov 17, 2006: Added boost::variant support. (Joel de Guzman)
      • -
      • +
      • Feb 15, 2007: Added functional module. (Tobias Schwinger)
      • -
      • +
      • APRIL 2, 2007: Added struct adapter. (Joel de Guzman)
      • -
      • +
      • May 8, 2007: Added associative struct adapter. (Dan Marsden)
      • -
      • - Dec 20, 2007: Removed boost::variant +
      • + Dec 20, 2007: Removed boost::variant support. After thorough investigation, I think now that the move to make variant a fusion sequence is rather quirky. A variant will always have a size==1 regardless of the number of types it can contain and there's no way to know at compile time what it contains. Iterating over its types is simply - wrong. All these imply that the variant is not + wrong. All these imply that the variant is not a fusion sequence. (Joel de Guzman)
      diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index 5d1dcfe0..d8c2ac88 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -3,10 +3,11 @@ Container - + - + @@ -22,10 +23,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      vector
      cons
      @@ -45,13 +49,13 @@

      Fusion provides a few predefined sequences out of the box. These containers - actually hold heterogenously typed data; unlike Views. + actually hold heterogenously typed data; unlike Views. These containers are more or less counterparts of those in STL.

      -

      - - Header -

      +

      + + Header +

      #include <boost/fusion/container.hpp>
       #include <boost/fusion/include/container.hpp>
       
      diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html index 06583d06..1aa4dca7 100644 --- a/doc/html/fusion/container/cons.html +++ b/doc/html/fusion/container/cons.html @@ -3,10 +3,10 @@ cons - + - + @@ -22,43 +22,47 @@
      PrevUpHomeNext
      -
      -

      -cons -

      -
      - - Description -
      +
      +
      +

      +cons +

      +
      +
      +

      + + 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 + 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 + each element is peculiarly constant (see Recursive Inlined Functions).

      -
      - - Header -
      +

      + + Header +

      #include <boost/fusion/container/list/cons.hpp>
       #include <boost/fusion/include/cons.hpp>
       
      -
      - - Synopsis -
      +

      + + Synopsis +

      template <typename Car, typename Cdr = nil>
       struct cons;
       
      -
      - - Template parameters -
      +

      + + Template parameters +

    @@ -66,105 +70,90 @@ - - + - + +

    - - + - +

    + - - + - +

    +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    - Car -

    -
    -

    +

    + Car +

    Head type -

    -
    -

    -

    -

    +

    -

    - Cdr -

    -
    -

    +

    + Cdr +

    Tail type -

    -
    -

    - nil -

    -

    + nil +

    -
    - - Model of -
    - -
    +

    + + Model of +

    + +

    Notation

    -
    nil
    +
    nil

    - An empty cons + An empty cons

    -
    C
    +
    C

    - A cons type + A cons type

    -
    l, - l2
    +
    l, + l2

    - Instances of cons + Instances of cons

    -
    car
    +
    car

    An arbitrary data

    -
    cdr
    +
    cdr

    - Another cons list + Another cons list

    -
    s
    +
    s

    - A Forward Sequence + A Forward Sequence

    -
    N
    +
    N

    An MPL Integral Constant

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

    Semantics of an expression is defined only where it differs from, or is not - defined in Forward + defined in Forward Sequence.

    @@ -173,131 +162,100 @@ - - + +

    - - + +

    - - + +

    - - + +

    - - + + - - + + - - + + - - + +
    -

    +

    Expression -

    -
    -

    +

    Semantics -

    -
    -

    - nil() -

    -
    -

    +

    + nil() +

    Creates an empty list. -

    -
    -

    - C() -

    -
    -

    +

    + C() +

    Creates a cons with default constructed elements. -

    -
    -

    - C(car) -

    -
    -

    - Creates a cons with car +

    + 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 Forward - Sequence, s. -

    -

    + C(s) +

    + Copy constructs a cons from a Forward + Sequence, s. +

    -

    - l = - s -

    -
    -

    - Assigns to a cons, l, - from a Forward - Sequence, s. -

    -

    + l = + s +

    + Assigns to a cons, l, + from a Forward + 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_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;
     
    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html index c07e740c..7222d05a 100644 --- a/doc/html/fusion/container/conversion.html +++ b/doc/html/fusion/container/conversion.html @@ -3,10 +3,10 @@ Conversion - + - + @@ -22,22 +22,25 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    - All fusion sequences can be converted to one of the Container + All fusion sequences can be converted to one of the Container types using one of these conversion functions.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/include/convert.hpp>
     
    diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html index 740140ba..b1a32164 100644 --- a/doc/html/fusion/container/conversion/functions.html +++ b/doc/html/fusion/container/conversion/functions.html @@ -3,10 +3,10 @@ Functions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    as_list
    as_vector
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index eaaa3622..3fdc906c 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -3,10 +3,10 @@ as_list - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Convert a fusion sequence to a list. + Convert a fusion sequence to a list.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     typename result_of::as_list<Sequence>::type
    @@ -46,8 +49,8 @@
     as_list(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -56,66 +59,54 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    +

    + seq +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - - Example + + Example
    -
    as_list(make_vector('x', 123, "hello"))
    +
    as_list(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html index 8e5b0805..15fedca3 100644 --- a/doc/html/fusion/container/conversion/functions/as_map.html +++ b/doc/html/fusion/container/conversion/functions/as_map.html @@ -3,10 +3,10 @@ as_map - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    -
    -as_map -
    +
    +
    +
    +as_map +
    +
    +
    - - Description + + Description

    - Convert a fusion sequence to a map. + Convert a fusion sequence to a map.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     typename result_of::as_map<Sequence>::type
    @@ -46,8 +49,8 @@
     as_map(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -56,73 +59,61 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    +

    + seq +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - - Example + + 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/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html index fcfd963b..f4d7a457 100644 --- a/doc/html/fusion/container/conversion/functions/as_set.html +++ b/doc/html/fusion/container/conversion/functions/as_set.html @@ -3,10 +3,10 @@ as_set - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    -
    -as_set -
    +
    +
    +
    +as_set +
    +
    +
    - - Description + + Description

    - Convert a fusion sequence to a set. + Convert a fusion sequence to a set.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     typename result_of::as_set<Sequence>::type
    @@ -46,8 +49,8 @@
     as_set(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -56,70 +59,58 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    +

    + seq +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - - Example + + Example
    -
    as_set(make_vector('x', 123, "hello"))
    +
    as_set(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html index b59d43a1..a19aacdd 100644 --- a/doc/html/fusion/container/conversion/functions/as_vector.html +++ b/doc/html/fusion/container/conversion/functions/as_vector.html @@ -3,10 +3,10 @@ as_vector - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Convert a fusion sequence to a vector. + Convert a fusion sequence to a vector.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     typename result_of::as_vector<Sequence>::type
    @@ -46,8 +49,8 @@
     as_vector(Sequence const& seq);
     
    - - Parameters + + Parameters
    @@ -56,66 +59,54 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - seq -

    -
    -

    +

    + seq +

    An instance of Sequence -

    -
    -

    +

    The sequence to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - - Example + + Example
    -
    as_vector(make_list('x', 123, "hello"))
    +
    as_vector(make_list('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html index 40b36e35..6eaabfae 100644 --- a/doc/html/fusion/container/conversion/metafunctions.html +++ b/doc/html/fusion/container/conversion/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    as_list
    as_vector
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index 8435de9c..2db0e8cb 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -3,10 +3,10 @@ as_list - + - + @@ -22,27 +22,30 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the result type of as_list. + Returns the result type of as_list.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     struct as_list;
     
    - - Parameters + + Parameters
    @@ -51,67 +54,55 @@ - - + - + +

    - - - + + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A fusion Sequence -

    -
    -

    +

    + Sequence +

    + A fusion Sequence +

    The sequence type to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - - Example + + Example
    -
    result_of::as_list<vector<char, int> >::type
    +
    result_of::as_list<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html index e693b804..b168c366 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html @@ -3,10 +3,10 @@ as_map - + - + @@ -22,27 +22,30 @@
    PrevUpHomeNext
    -
    -
    -as_map -
    +
    +
    +
    +as_map +
    +
    +
    - - Description + + Description

    - Returns the result type of as_map. + Returns the result type of as_map.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     struct as_map;
     
    - - Parameters + + Parameters
    @@ -51,74 +54,62 @@ - - + - + +

    - - - + + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A fusion Sequence -

    -
    -

    +

    + Sequence +

    + A fusion Sequence +

    The sequence to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - - Example + + 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/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html index fe34db89..d379dd06 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html @@ -3,10 +3,10 @@ as_set - + - + @@ -22,27 +22,30 @@
    PrevUpHomeNext
    -
    -
    -as_set -
    +
    +
    +
    +as_set +
    +
    +
    - - Description + + Description

    - Returns the result type of as_set. + Returns the result type of as_set.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     struct as_set;
     
    - - Parameters + + Parameters
    @@ -51,71 +54,59 @@ - - + - + +

    - - - + + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A fusion Sequence -

    -
    -

    +

    + Sequence +

    + A fusion Sequence +

    The sequence to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - - Example + + Example
    -
    result_of::as_set<vector<char, int> >::type
    +
    result_of::as_set<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html index 1ecb7790..44bba097 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html @@ -3,10 +3,10 @@ as_vector - + - + @@ -22,27 +22,30 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the result type of as_vector. + Returns the result type of as_vector.

    - - Synopsis + + Synopsis
    template <typename Sequence>
     struct as_vector;
     
    - - Parameters + + Parameters
    @@ -51,67 +54,55 @@ - - + - + +

    - - - + + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Sequence -

    -
    -

    - A fusion Sequence -

    -
    -

    +

    + Sequence +

    + A fusion Sequence +

    The sequence to convert. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - - Example + + Example
    -
    result_of::as_vector<list<char, int> >::type
    +
    result_of::as_vector<list<char, int> >::type
     
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html index f58852ff..6fc3eb44 100644 --- a/doc/html/fusion/container/generation.html +++ b/doc/html/fusion/container/generation.html @@ -3,10 +3,10 @@ Generation - + - + @@ -22,21 +22,24 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    - These are the functions that you can use to generate various forms of Container from elemental values. + These are the functions that you can use to generate various forms of Container from elemental values.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/container/generation.hpp>
     #include <boost/fusion/include/generation.hpp>
     
    diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html index 410e9b4a..4a7cabfa 100644 --- a/doc/html/fusion/container/generation/functions.html +++ b/doc/html/fusion/container/generation/functions.html @@ -3,10 +3,10 @@ Functions - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    make_list
    make_cons
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index d180c4f1..0aa819b0 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -3,10 +3,10 @@ list_tie - + - + @@ -22,38 +22,41 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Constructs a tie using a list sequence. + Constructs a tie using a list sequence.

    - - Synopsis + + 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 + + Parameters
    @@ -62,66 +65,54 @@ - - + - + +

    - - - + xN +

    + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - x0, +

    + x0, x1,... - xN -

    -
    -

    - Instances of T0, T1,... TN -

    -
    -

    - The arguments to list_tie -

    -

    + Instances of T0, T1,... TN +

    + The arguments to list_tie +

    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - - Example + + Example
    int i = 123;
     double d = 123.456;
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index cf5a3c38..ae74290b 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -3,10 +3,10 @@
     
     make_cons
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,34 +22,37 @@
     
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Create a cons - from car (head) - and optional cdr (tail). + Create a cons + from car (head) + and optional cdr (tail).

    - - Synopsis + + 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 + + Parameters
    @@ -58,94 +61,76 @@ - - + - + +

    - - - + + +

    - - - + + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - car -

    -
    -

    - Instance of Car -

    -
    -

    +

    + car +

    + Instance of Car +

    The list's head -

    -
    -

    - cdr -

    -
    -

    - Instance of Cdr -

    -
    -

    +

    + cdr +

    + Instance of Cdr +

    The list's tail (optional) -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - - Example + + Example
    make_cons('x', make_cons(123))
     
    - - See + + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 60aab3b8..789da723 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -3,10 +3,10 @@ make_list - + - + @@ -22,39 +22,42 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Create a list + Create a list from one or more values.

    - - Synopsis + + 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 + + Parameters
    @@ -63,75 +66,63 @@ - - + - + +

    - - - + xN +

    + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - x0, +

    + x0, x1,... - xN -

    -
    -

    - Instances of T0, T1,... TN -

    -
    -

    - The arguments to make_list -

    -

    + Instances of T0, T1,... TN +

    + The arguments to make_list +

    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - - Example + + Example
    make_list(123, "hello", 12.5)
     
    - - See + + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 94213a43..22398ac3 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -3,10 +3,10 @@ make_map - + - + @@ -22,41 +22,44 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Create a map + Create a map from one or more key/data pairs.

    - - Synopsis + + 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_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 + 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 + + Parameters
    @@ -65,106 +68,86 @@ - - + - + +

    - - + - +

    + - - - + xN +

    + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - K0, +

    + K0, K1,... - KN -

    -
    -

    + KN +

    The key types -

    -
    -

    - Keys associated with x0, x1,... xN -

    -

    + Keys associated with x0, x1,... xN +

    -

    - x0, +

    + x0, x1,... - xN -

    -
    -

    - Instances of T0, T1,... TN -

    -
    -

    - The arguments to make_map -

    -

    + Instances of T0, T1,... TN +

    + The arguments to make_map +

    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - - Example + + Example
    -
    make_map(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"))
    +
    make_map<int, double>('X', "Men")
     
    - - See + + See also

    - boost::ref, - fusion::pair + boost::ref, + fusion::pair

    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index cd0c861b..8dbb429a 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -3,10 +3,10 @@ make_set - + - + @@ -22,39 +22,42 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Create a set + Create a set from one or more values.

    - - Synopsis + + 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_SET_SIZE - elements, where FUSION_MAX_SET_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_SET_SIZE before + The variadic function accepts 0 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_SIZE + is a user definable predefined maximum that defaults to 10. 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
     
    - - Parameters + + Parameters
    @@ -63,79 +66,67 @@ - - + - + +

    - - - + xN +

    + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - x0, +

    + x0, x1,... - xN -

    -
    -

    - Instances of T0, T1,... TN -

    -
    -

    - The arguments to make_set -

    -

    + Instances of T0, T1,... TN +

    + The arguments to make_set +

    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - - Example + + Example
    make_set(123, "hello", 12.5)
     
    - - See + + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index bd059113..f8940179 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -3,10 +3,10 @@ make_vector - + - + @@ -22,39 +22,42 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Create a vector + Create a vector from one or more values.

    - - Synopsis + + 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 + + Parameters
    @@ -63,75 +66,63 @@ - - + - + +

    - - - + xN +

    + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - x0, +

    + x0, x1,... - xN -

    -
    -

    - Instances of T0, T1,... TN -

    -
    -

    - The arguments to make_vector -

    -

    + Instances of T0, T1,... TN +

    + The arguments to make_vector +

    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - - Example + + Example
    make_vector(123, "hello", 12.5)
     
    - - See + + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 9d749875..5fe8f65e 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -3,10 +3,10 @@ map_tie - + - + @@ -22,38 +22,41 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Constructs a tie using a map sequence. + Constructs a tie using a map sequence.

    - - Synopsis + + 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<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 + 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 + + Parameters
    @@ -62,89 +65,71 @@ - - + - + +

    - - + - + +

    - - - + xN +

    + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - K0, +

    + K0, K1,... - KN -

    -
    -

    + KN +

    Any type -

    -
    -

    - The key types associated with each of the x1,x2,...,xN +

    + The key types associated with each of the x1,x2,...,xN values -

    -
    -

    - x0, +

    + x0, x1,... - xN -

    -
    -

    - Instances of T0, T1,... TN -

    -
    -

    - The arguments to map_tie -

    -

    + Instances of T0, T1,... TN +

    + The arguments to map_tie +

    - - Expression + + Expression Semantics
    map_tie<K0, K1,... KN>(x0, x1,... xN);
     

    - Return type: map<pair<K0, D0&>, pair<K1, - D1&>,... pair<KN, + 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 + Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - - Header + + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - - Example + + Example
    struct int_key;
     struct double_key;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 310ff959..510286fd 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -3,10 +3,10 @@
     
     Tiers
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,34 +22,37 @@
     
    PrevUpHomeNext
    -
    -
    -Tiers -
    +
    +
    +
    +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
    • -
    • map_tie
    • +

      Example:

      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)) - [9] + The vector_tie function creates + a vector + of type vector<int&, char&, double&>. The same result could be achieved + with the call make_vector(ref(i), ref(c), ref(a)) + [9] .

      @@ -57,7 +60,7 @@ variables. E.g.:

      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,8 +69,8 @@ when calling functions which return sequences.

      - - Ignore + + Ignore

      There is also an object called ignore which allows @@ -76,13 +79,13 @@ example:

      char c;
      -vector_tie(ignore, c) = make_vector(1, 'a');
      +vector_tie(ignore, c) = make_vector(1, 'a');
       


      -

      [9] +

      [9] see Boost.Ref - for details about ref + for details about ref

      diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 7279e1e8..6b91066c 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -3,10 +3,10 @@ vector_tie - + - + @@ -22,38 +22,41 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Constructs a tie using a vector sequence. + Constructs a tie using a vector sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -62,66 +65,54 @@ - - + - + +

      - - - + xN +

      + +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - x0, +

      + x0, x1,... - xN -

      -
      -

      - Instances of T0, T1,... TN -

      -
      -

      - The arguments to vector_tie -

      -

      + Instances of T0, T1,... TN +

      + The arguments to vector_tie +

      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/container/generation/vector_tie.hpp>
       #include <boost/fusion/include/vector_tie.hpp>
       
      - - Example + + Example
      int i = 123;
       double d = 123.456;
      diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html
      index 7616cdfd..07cf1cd7 100644
      --- a/doc/html/fusion/container/generation/metafunctions.html
      +++ b/doc/html/fusion/container/generation/metafunctions.html
      @@ -3,10 +3,10 @@
       
       MetaFunctions
       
      -
      +
       
       
      -
      +
       
       
       
      @@ -22,10 +22,13 @@
       
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      make_list
      make_cons
      diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index c74fa1d9..6e66cc72 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -3,10 +3,10 @@ list_tie - + - + @@ -22,37 +22,40 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of list_tie. + Returns the result type of list_tie.

      - - Synopsis + + 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 + 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 + + Parameters
      @@ -61,66 +64,54 @@ - - + - + +

      - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - T0, +

      + T0, T1,... - TN -

      -
      -

      + TN +

      Any type -

      -
      -

      - The arguments to list_tie -

      -

      + The arguments to list_tie +

      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/container/generation/list_tie.hpp>
       #include <boost/fusion/include/list_tie.hpp>
       
      - - Example + + Example
      result_of::list_tie<int, double>::type
       
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html index e68d831f..7bb6a9e4 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html @@ -3,10 +3,10 @@ make_cons - + - + @@ -22,27 +22,30 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of make_cons. + Returns the result type of make_cons.

      - - Synopsis + + Synopsis
      template <typename Car, typename Cdr = nil>
       struct make_cons;
       
      - - Parameters + + Parameters
      @@ -51,86 +54,68 @@ - - + - + +

      - - + - + +

      - - - + + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Car -

      -
      -

      +

      + Car +

      Any type -

      -
      -

      +

      The list's head type -

      -
      -

      - Cdr -

      -
      -

      - A cons -

      -
      -

      +

      + Cdr +

      + A cons +

      The list's tail type (optional) -

      -
      - - Expression + + 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. + 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 + Semantics: Create a cons from Car + (head) and optional Cdr (tail).

      - - Header + + Header
      #include <boost/fusion/container/generation/make_cons.hpp>
       #include <boost/fusion/include/make_cons.hpp>
       
      - - Example + + Example
      result_of::make_cons<char, result_of::make_cons<int>::type>::type
       
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html index ada2baea..76de4c11 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_list.html +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html @@ -3,10 +3,10 @@ make_list - + - + @@ -22,37 +22,40 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of make_list. + Returns the result type of make_list.

      - - Synopsis + + 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 + 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 + + Parameters
      @@ -61,67 +64,55 @@ - - + - + +

      - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - T0, +

      + T0, T1,... - TN -

      -
      -

      + TN +

      Any type -

      -
      -

      - Template arguments to make_list -

      -

      + Template arguments to make_list +

      - - Expression + + Expression Semantics
      result_of::make_list<T0, T1,... TN>::type
       

      - Return type: A list with elements of types - converted following the rules for element + 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 + + Header
      #include <boost/fusion/container/generation/make_list.hpp>
       #include <boost/fusion/include/make_list.hpp>
       
      - - Example + + Example
      result_of::make_list<int, const char(&)[7], double>::type
       
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html index e5d15e30..6486dce0 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_map.html +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html @@ -3,10 +3,10 @@ make_map - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of make_map. + Returns the result type of make_map.

      - - Synopsis + + Synopsis
      template <
           typename K0, typename K1,... typename KN
      @@ -43,18 +46,18 @@
       struct make_map;
       

      - 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 + 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 + + Parameters
      @@ -63,102 +66,84 @@ - - + - + +

      - - + - +

      + - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - K0, +

      + K0, K1,... - KN -

      -
      -

      + KN +

      Any type -

      -
      -

      - Keys associated with T0, T1,... TN -

      -

      + Keys associated with T0, T1,... TN +

      -

      - T0, +

      + T0, T1,... - TN -

      -
      -

      + TN +

      Any type -

      -
      -

      - Data associated with keys K0, K1,... KN -

      -

      + Data associated with keys K0, K1,... KN +

      - - Expression + + 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 + 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 + 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 + + Header
      #include <boost/fusion/container/generation/make_map.hpp>
       #include <boost/fusion/include/make_map.hpp>
       
      - - Example + + Example
      result_of::make_map<int, double, char, double>::type
       
      - - See + + See also

      - fusion::pair + fusion::pair

      diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index de1c8492..14956495 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -3,10 +3,10 @@ make_set - + - + @@ -22,37 +22,40 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of make_set. + Returns the result type of make_set.

      - - Synopsis + + Synopsis
      template <typename T0, typename T1,... typename TN>
       struct make_set;
       

      - The variadic function accepts 0 - to FUSION_MAX_SET_SIZE - elements, where FUSION_MAX_SET_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_SET_SIZE before + The variadic function accepts 0 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_SIZE + is a user definable predefined maximum that defaults to 10. 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
       
      - - Parameters + + Parameters
      @@ -61,71 +64,59 @@ - - + - + +

      - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - T0, +

      + T0, T1,... - TN -

      -
      -

      + TN +

      Any type -

      -
      -

      - The arguments to make_set -

      -

      + The arguments to make_set +

      - - Expression + + Expression Semantics
      result_of::make_set<T0, T1,... TN>::type
       

      - Return type: A set with elements of types converted - following the rules for element + 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 + + Header
      #include <boost/fusion/container/generation/make_set.hpp>
       #include <boost/fusion/include/make_set.hpp>
       
      - - Example + + Example
      result_of::make_set<int, char, double>::type
       
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index 2ddce229..c2a4316e 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html @@ -3,10 +3,10 @@ make_vector - + - + @@ -22,37 +22,40 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of make_vector. + Returns the result type of make_vector.

      - - Synopsis + + 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 + 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 + + Parameters
      @@ -61,67 +64,55 @@ - - + - + +

      - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - T0, +

      + T0, T1,... - TN -

      -
      -

      + TN +

      Any type -

      -
      -

      - Template arguments to make_vector -

      -

      + Template arguments to make_vector +

      - - Expression + + Expression Semantics
      result_of::make_vector<T0, T1,... TN>::type
       

      - Return type: A vector with elements of types - converted following the rules for element + 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 + + Header
      #include <boost/fusion/container/generation/make_list.hpp>
       #include <boost/fusion/include/make_list.hpp>
       
      - - Example + + Example
      result_of::make_vector<int, const char(&)[7], double>::type
       
      diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html index a1f4280b..e2ca97cc 100644 --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html @@ -3,10 +3,10 @@ map_tie - + - + @@ -22,37 +22,40 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of map_tie. + Returns the result type of map_tie.

      - - Synopsis + + 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 + 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 + + Parameters
      @@ -61,88 +64,70 @@ - - + - + +

      - - + - +

      + - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - K0, +

      + K0, K1,... - KN -

      -
      -

      + KN +

      Any type -

      -
      -

      - The key types for map_tie -

      -

      + The key types for map_tie +

      -

      - D0, +

      + D0, D1,... - DN -

      -
      -

      + DN +

      Any type -

      -
      -

      - The arguments types for map_tie -

      -

      + The arguments types for map_tie +

      - - Expression + + Expression Semantics
      result_of::map_tie<K0, K1,... KN, D0, D1,... DN>::type;
       

      - Return type: map<pair<K0, D0&>, pair<K1, - D1&>,... pair<KN, + 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 + Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

      - - Header + + Header
      #include <boost/fusion/container/generation/map_tie.hpp>
       #include <boost/fusion/include/map_tie.hpp>
       
      - - Example + + Example
      struct int_key;
       struct double_key;
      diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
      index 3c73cd32..30fa40f4 100644
      --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
      +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
      @@ -3,10 +3,10 @@
       
       vector_tie
       
      -
      +
       
       
      -
      +
       
       
       
      @@ -22,37 +22,40 @@
       
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of vector_tie. + Returns the result type of vector_tie.

      - - Synopsis + + 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 + 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 + + Parameters
      @@ -61,66 +64,54 @@ - - + - + +

      - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - T0, +

      + T0, T1,... - TN -

      -
      -

      + TN +

      Any type -

      -
      -

      - The arguments to vector_tie -

      -

      + The arguments to vector_tie +

      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/container/generation/vector_tie.hpp>
       #include <boost/fusion/include/vector_tie.hpp>
       
      - - Example + + Example
      result_of::vector_tie<int, double>::type
       
      diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html index a3a58ac3..1d61443f 100644 --- a/doc/html/fusion/container/list.html +++ b/doc/html/fusion/container/list.html @@ -3,10 +3,10 @@ list - + - + @@ -22,34 +22,38 @@
      PrevUpHomeNext
      -
      -

      -list -

      -
      - - Description -
      +
      +
      +

      +list +

      +
      +
      +

      + + Description +

      - list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector + 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). + runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

      -
      - - Header -
      +

      + + Header +

      #include <boost/fusion/container/list.hpp>
       #include <boost/fusion/include/list.hpp>
       #include <boost/fusion/container/list/list_fwd.hpp>
       #include <boost/fusion/include/list_fwd.hpp>
       
      -
      - - Synopsis -
      +

      + + Synopsis +

      template <
           typename T0 = unspecified
         , typename T1 = unspecified
      @@ -60,24 +64,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 -
      +

      + + Template parameters +

      @@ -85,78 +89,69 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Description -

      -
      -

      +

      Default -

      -
      -

      - T0...TN -

      -
      -

      +

      + T0...TN +

      Element types -

      -
      -

      +

      unspecified-type -

      -
      -
      - - Model of -
      - -
      +

      + + Model of +

      + +

      Notation

      -
      L
      +
      L

      - A list type + A list type

      -
      l
      +
      l

      - An instance of list + An instance of list

      -
      e0...en
      +
      e0...en

      Heterogeneous values

      -
      s
      +
      s

      - A Forward Sequence + A Forward Sequence

      -
      N
      +
      N

      An MPL Integral Constant

      -
      - - Expression Semantics -
      +

      + + Expression Semantics +

      Semantics of an expression is defined only where it differs from, or is not - defined in Forward + defined in Forward Sequence.

      @@ -165,104 +160,81 @@ - - + +

      - - + +

      - - + + - - + + - - + + - - + +
      -

      +

      Expression -

      -
      -

      +

      Semantics -

      -
      -

      - L() -

      -
      -

      +

      + 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 Forward - Sequence, s. -

      -

      + L(s) +

      + Copy constructs a list from a Forward + Sequence, s. +

      -

      - l = - s -

      -
      -

      - Assigns to a list, l, - from a Forward - Sequence, s. -

      -

      + l = + s +

      + Assigns to a list, l, + from a Forward + 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_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;
       
      diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html index c1450034..e10e1901 100644 --- a/doc/html/fusion/container/map.html +++ b/doc/html/fusion/container/map.html @@ -3,10 +3,10 @@ map - + - + @@ -22,36 +22,40 @@
      PrevUpHomeNext
      -
      -

      -map -

      -
      - - Description -
      +
      +
      +

      +map +

      +
      +
      +

      + + Description +

      - map is an Associative + map is an Associative Sequence of heteregenous typed data elements. Each element is a key/data - pair (see fusion::pair) + 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). + (see Overloaded Functions).

      -
      - - Header -
      +

      + + Header +

      #include <boost/fusion/container/map.hpp>
       #include <boost/fusion/include/map.hpp>
       #include <boost/fusion/container/map_fwd.hpp>
       #include <boost/fusion/include/map_fwd.hpp>
       
      -
      - - Synopsis -
      +

      + + Synopsis +

      template <
           typename T0 = unspecified
         , typename T1 = unspecified
      @@ -62,24 +66,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 -
      +

      + + Template parameters +

      @@ -87,78 +91,71 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Description -

      -
      -

      +

      Default -

      -
      -

      - T0...TN -

      -
      -

      +

      + T0...TN +

      Element types -

      -
      -

      +

      unspecified-type -

      -
      -
      - - Model of -
      -
        -
      • Associative +

        + + Model of +

        + -
        +

        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 Sequence + A Forward Sequence

        -
        - - Expression Semantics -
        +

        + + Expression Semantics +

        Semantics of an expression is defined only where it differs from, or is not - defined in Random - Access Sequence and Associative + defined in Random + Access Sequence and Associative Sequence.

        @@ -167,88 +164,70 @@ - - + +

        - - + +

        - - + + - - + + - - + +
        -

        +

        Expression -

        -
        -

        +

        Semantics -

        -
        -

        - M() -

        -
        -

        +

        + 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 Forward - Sequence s. -

        -

        + M(s) +

        + Copy constructs a map from a Forward + Sequence s. +

        -

        - m = - s -

        -
        -

        - Assigns to a map, m, - from a Forward - Sequence s. -

        -

        + m = + s +

        + Assigns to a map, m, + from a Forward + Sequence s. +

        -
        - - Example -
        +

        + + 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;
         
        diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html index 3fa2d7df..d01e5f59 100644 --- a/doc/html/fusion/container/set.html +++ b/doc/html/fusion/container/set.html @@ -3,10 +3,10 @@ set - + - + @@ -22,35 +22,39 @@
        PrevUpHomeNext
        -
        -

        -set -

        -
        - - Description -
        +
        +
        +

        +set +

        +
        +
        +

        + + Description +

        - set is an Associative + 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 + element key lookup has constant runtime complexity (see Overloaded Functions).

        -
        - - Header -
        +

        + + Header +

        #include <boost/fusion/container/set.hpp>
         #include <boost/fusion/include/set.hpp>
         #include <boost/fusion/container/set_fwd.hpp>
         #include <boost/fusion/include/set_fwd.hpp>
         
        -
        - - Synopsis -
        +

        + + Synopsis +

        template <
             typename T0 = unspecified
           , typename T1 = unspecified
        @@ -61,24 +65,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 -
        +

        + + Template parameters +

        @@ -86,78 +90,71 @@ - - + - + +

        - - + - + +

        -

        +

        Parameter -

        -
        -

        +

        Description -

        -
        -

        +

        Default -

        -
        -

        - T0...TN -

        -
        -

        +

        + T0...TN +

        Element types -

        -
        -

        +

        unspecified-type -

        -
      -
      - - Model of -
      -
        -
      • Associative +

        + + Model of +

        + -
        +

        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 Sequence + A Forward Sequence

        -
        - - Expression Semantics -
        +

        + + Expression Semantics +

        Semantics of an expression is defined only where it differs from, or is not - defined in Random - Access Sequence and Associative + defined in Random + Access Sequence and Associative Sequence.

        @@ -166,82 +163,64 @@ - - + +

        - - + +

        - - + + - - + + - - + +
        -

        +

        Expression -

        -
        -

        +

        Semantics -

        -
        -

        - S() -

        -
        -

        +

        + 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 Forward - Sequence fs. -

        -

        + S(fs) +

        + Copy constructs a set from a Forward + Sequence fs. +

        -

        - s = - fs -

        -
        -

        - Assigns to a set, s, - from a Forward - Sequence fs. -

        -

        + s = + fs +

        + Assigns to a set, s, + from a Forward + Sequence fs. +

        -
        - - Example -
        +

        + + 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/container/vector.html b/doc/html/fusion/container/vector.html index 23ddcf24..a8fbc671 100644 --- a/doc/html/fusion/container/vector.html +++ b/doc/html/fusion/container/vector.html @@ -3,10 +3,10 @@ vector - + - + @@ -22,26 +22,30 @@
        PrevUpHomeNext
        -
        -

        -vector -

        -
        - - Description -
        +
        +
        +

        +vector +

        +
        +
        +

        + + Description +

        - vector is a Random + 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 -
        +

        + + Header +

        #include <boost/fusion/container/vector.hpp>
         #include <boost/fusion/include/vector.hpp>
         #include <boost/fusion/container/vector/vector_fwd.hpp>
        @@ -59,12 +63,12 @@
         #include <boost/fusion/container/vector/vector50.hpp>
         #include <boost/fusion/include/vector50.hpp>
         
        -
        - - Synopsis -
        +

        + + Synopsis +

        - Numbered forms + Numbered forms

        struct vector0;
         
        @@ -83,7 +87,7 @@
         struct vectorN;
         

        - Variadic form + Variadic form

        template <
             typename T0 = unspecified
        @@ -100,24 +104,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 -
        +

        + + Template parameters +

        @@ -125,74 +129,65 @@ - - + - + +

        - - + - + +

        -

        +

        Parameter -

        -
        -

        +

        Description -

        -
        -

        +

        Default -

        -
        -

        - T0...TN -

        -
        -

        +

        + T0...TN +

        Element types -

        -
        -

        +

        unspecified -

        -
      -
      - - Model of -
      -
      • Random +

        + + Model of +

        + -
        +

        Notation

        -
        v
        +
        v

        - Instance of vector + Instance of vector

        -
        V
        +
        V

        - A vector type + A vector type

        -
        e0...en
        +
        e0...en

        Heterogeneous values

        -
        s
        +
        s

        - A Forward Sequence + A Forward Sequence

        -
        - - Expression Semantics -
        +

        + + Expression Semantics +

        Semantics of an expression is defined only where it differs from, or is not - defined in Random + defined in Random Access Sequence.

        @@ -201,80 +196,62 @@ - - + +

        - - + +

        - - + + - - + + - - + +
        -

        +

        Expression -

        -
        -

        +

        Semantics -

        -
        -

        - V() -

        -
        -

        +

        + V() +

        Creates a vector with default constructed elements. -

        -
        -

        - V(e0, e1,... - en) -

        -
        -

        - Creates a vector with elements e0...en. -

        -

        + V(e0, e1,... + en) +

        + Creates a vector with elements e0...en. +

        -

        - V(s) -

        -
        -

        - Copy constructs a vector from a Forward - Sequence, s. -

        -

        + V(s) +

        + Copy constructs a vector from a Forward + Sequence, s. +

        -

        - v = - s -

        -
        -

        - Assigns to a vector, v, - from a Forward - Sequence, s. -

        -

        + v = + s +

        + Assigns to a vector, v, + from a Forward + Sequence, s. +

        -
        - - Example -
        +

        + + 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/extension.html b/doc/html/fusion/extension.html index 61fcf378..d8b91114 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,11 +3,11 @@ Extension - + - - + +
        @@ -22,10 +22,13 @@
        PrevUpHomeNext
        -
        - +
        +
        + +
        +
        The Full Extension Mechanism
        Sequence Facade
        diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index 347f5d04..4b2cf8f1 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -1,12 +1,12 @@ -The Full Extension Mechanism + The Full Extension Mechanism - + - + @@ -22,36 +22,39 @@
        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 + 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 +
            +
          1. + Enable the tag dispatching mechanism used by Fusion for your sequence type
          2. -
          3. +
          4. Design an iterator type for the sequence
          5. -
          6. +
          7. Provide specialized behaviour for the intrinsic operations of the new Fusion sequence
          -
          - - Our example -
          +

          + + Our example +

          In order to illustrate enabling a new sequence type for use with Fusion, we are going to use the type: @@ -73,18 +76,19 @@

          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 + steps to enable example_struct + to serve as an Associative + Sequence as described in the Quick Start guide.

          -
          - - Enabling +

          + + Enabling Tag Dispatching -

          +

          - The Fusion extensibility mechanism uses tag + 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: @@ -94,9 +98,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 + our sequence. This is done by specializing traits::tag_of for our sequence type.

          #include <boost/fusion/support/tag_of_fwd.hpp>
          @@ -111,28 +115,28 @@
           }}}
           

          - 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:

          #include <boost/fusion/adapted/array/tag_of.hpp>
           #include <boost/fusion/include/tag_of.hpp>
           
          -
          - - Designing +

          + + 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. + 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
          @@ -152,43 +156,43 @@
           

          A quick summary of the details of our iterator:

          -
            -
          1. +
              +
            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 +
            4. + The typedefs struct_type + and index provide convenient access to information we will need later in the implementation.
            5. -
            6. - The typedef category allows - the traits::category_of +
            7. + The typedef category allows + the traits::category_of metafunction to establish the traversal category of the iterator.
            8. -
            9. - The constructor stores a reference to the example_struct +
            10. + The constructor stores a reference to the example_struct being iterated over.

            - We also need to enable tag + 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 +

            + + 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.

            template<>
            @@ -212,29 +216,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 - uses tag dispatching + 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<>
             struct deref_impl<example::example_struct_iterator_tag>
            @@ -271,16 +275,16 @@
             }
             

            - 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>
                 {};
            @@ -288,48 +292,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

        +

        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 +

      + + Implementing the remaining iterator functionality -

      +

      - Ok, now we have seen the way value_of and deref work, everything else will + 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<>
       struct next_impl<example::example_struct_iterator_tag>
      @@ -350,37 +354,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 - 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 + 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 + 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 +

      + + 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:

      template<>
      @@ -391,14 +398,14 @@
       };
       

      - 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 + 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 + get begin working so that we can get an iterator to start accessing the data in our sequence.

      template<>
      @@ -420,32 +427,33 @@
       

      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. + For our Random + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl.

      -
      - - Enabling +

      + + 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:

      template<>
      @@ -487,18 +495,18 @@
       

      Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the + 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 + 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 -
      +

      + + 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. @@ -506,8 +514,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/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 4b4c8051..10320142 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -3,10 +3,10 @@ Iterator Facade - + - + @@ -22,30 +22,33 @@
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +

      + + Description +

      - The iterator_facade + The iterator_facade template provides an intrusive mechanism for producing a conforming Fusion iterator.

      -
      - - Synopsis -
      +

      + + Synopsis +

      template<typename Derived, typename TravesalTag>
       struct iterator_facade;
       
      -
      - - Usage -
      +

      + + Usage +

      The user of iterator_facade derives his iterator type from a specialization of iterator_facade and passes the derived iterator type as the first template @@ -57,326 +60,230 @@ type.

      -

      Table 1.93. Parameters

      -
      +

      Table 1.93. Parameters

      +
      - - + +

      - - + + - - + +

      -
      -

      +

      Name -

      -
      -

      +

      Description -

      -
      -

      - iterator, It, It1, - It2 -

      -
      -

      - A type derived from iterator_facade -

      -

      + iterator, It, It1, + It2 +

      + A type derived from iterator_facade +

      -

      - N -

      -
      -

      +

      + N +

      An MPL Integral Constant -

      -
      +
      -
      -

      Table 1.94. Key Expressions

      -
      +
      +

      Table 1.94. Key Expressions

      +
      - - + - + +

      - - - + + +

      - - - + + +

      - - - + + +

      - - - + + +

      - - - + + +

      - - - + + +

      - - - + + +

      - - - + + + - - - + + + - - + - + +

      - - - + + +

      - - - + + + - - - + + + -
      -

      +

      Expression -

      -
      -

      +

      Result -

      -
      -

      +

      Default -

      -
      -

      - iterator::template value_of<It>::type -

      -
      -

      - The element stored at iterator position It -

      -
      -

      +

      + iterator::template value_of<It>::type +

      + The element stored at iterator position It +

      None -

      -
      -

      - iterator::template deref<It>::type -

      -
      -

      - The type returned when dereferencing an iterator of type It -

      -
      -

      +

      + iterator::template deref<It>::type +

      + The type returned when dereferencing an iterator of type It +

      None -

      -
      -

      - iterator::template deref<It>::call(it) -

      -
      -

      - Dereferences iterator it -

      -
      -

      +

      + iterator::template deref<It>::call(it) +

      + Dereferences iterator it +

      None -

      -
      -

      - iterator::template next<It>::type -

      -
      -

      - The type of the next element from It -

      -
      -

      +

      + iterator::template next<It>::type +

      + The type of the next element from It +

      None -

      -
      -

      - iterator::template next<It>::call(it) -

      -
      -

      - The next iterator after it -

      -
      -

      +

      + iterator::template next<It>::call(it) +

      + The next iterator after it +

      None -

      -
      -

      - iterator::template prior<It>::type -

      -
      -

      - The type of the next element from It -

      -
      -

      +

      + iterator::template prior<It>::type +

      + The type of the next element from It +

      None -

      -
      -

      - iterator::template prior<It>::call(it) -

      -
      -

      - The next iterator after it -

      -
      -

      +

      + iterator::template prior<It>::call(it) +

      + The next iterator after it +

      None -

      -
      -

      - iterator::template advance<It, N>::type -

      -
      -

      - The type of an iterator advanced N - elements from It -

      -
      -

      - Implemented in terms of next - and prior -

      -

      + iterator::template advance<It, N>::type +

      + The type of an iterator advanced N + elements from It +

      + Implemented in terms of next + and prior +

      -

      - iterator::template advance<It, N>::call(it) -

      -
      -

      - An iterator advanced N - elements from it -

      -
      -

      - Implemented in terms of next - and prior -

      -

      + iterator::template advance<It, N>::call(it) +

      + An iterator advanced N + elements from it +

      + Implemented in terms of next + and prior +

      -

      - iterator::template distance<It1, It2>::type -

      -
      -

      - The distance between iterators of type It1 - and It2 as an MPL +

      + iterator::template distance<It1, It2>::type +

      + The distance between iterators of type It1 + and It2 as an MPL Integral Constant -

      -
      -

      +

      None -

      -
      -

      - iterator::template distance<It1, It2>::call(it1, it2) -

      -
      -

      - The distance between iterator it1 - and it2 -

      -
      -

      +

      + iterator::template distance<It1, It2>::call(it1, it2) +

      + The distance between iterator it1 + and it2 +

      None -

      -
      -

      - iterator::template equal_to<It1, It2>::type -

      -
      -

      - The distance between iterators of type It1 - and It2 -

      -
      -

      - boost::same_type<It1, It2>::type -

      -

      + iterator::template equal_to<It1, It2>::type +

      + The distance between iterators of type It1 + and It2 +

      + boost::same_type<It1, It2>::type +

      -

      - iterator::template equal_to<It1, It2>::call(it1, it2) -

      -
      -

      - The distance between iterators it1 - and it2 -

      -
      -

      - boost::same_type<It1, It2>::type() -

      -

      + iterator::template equal_to<It1, It2>::call(it1, it2) +

      + The distance between iterators it1 + and it2 +

      + boost::same_type<It1, It2>::type() +

      +
      -
      - - Header -
      +

      + + Header +

      #include <boost/fusion/iterator/iterator_facade.hpp>
       #include <boost/fusion/include/iterator_facade.hpp>
       
      -
      - - Example -
      +

      + + Example +

      - A full working example using iterator_facade is provided in triple.cpp + A full working example using iterator_facade is provided in triple.cpp in the extension examples.

      diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index f10ccd8a..753df321 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -3,10 +3,10 @@ Sequence Facade - + - + @@ -22,36 +22,39 @@
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +

      + + Description +

      - The sequence_facade + The sequence_facade template provides an intrusive mechanism for producing a conforming Fusion iterator.

      -
      - - Synopsis -
      +

      + + Synopsis +

      template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
       struct sequence_facade;
       
      -
      - - Usage -
      +

      + + Usage +

      - The user of sequence_facade derives his sequence - type from a specialization of sequence_facade and passes the derived + The user of sequence_facade derives his sequence + type from a specialization of sequence_facade and passes the derived sequence type as the first template parameter. The second template parameter should be the traversal category of the sequence being implemented. The 3rd - parameter should be set to mpl::true_ + parameter should be set to mpl::true_ if the sequence is a view.

      @@ -59,202 +62,150 @@ type.

      -

      Table 1.91. Parameters

      -
      +

      Table 1.91. Parameters

      +
      - - + +

      - - + + - - + +

      -
      -

      +

      Name -

      -
      -

      +

      Description -

      -
      -

      - sequence, Seq -

      -
      -

      - A type derived from sequence_facade -

      -

      + sequence, Seq +

      + A type derived from sequence_facade +

      -

      - N -

      -
      -

      +

      + N +

      An MPL Integral Constant -

      -
      +
      -
      -

      Table 1.92. Key Expressions

      -
      +
      +

      Table 1.92. Key Expressions

      +
      - - + +

      - - + + - - + + - - + + - - + + - - + +

      - - + + - - + + - - + + - - + + -
      -

      +

      Expression -

      -
      -

      +

      Result -

      -
      -

      - sequence::template begin<Seq>::type -

      -
      -

      - The type of an iterator to the beginning of a sequence of type Seq -

      -

      + sequence::template begin<Seq>::type +

      + The type of an iterator to the beginning of a sequence of type Seq +

      -

      - sequence::template begin<Seq>::call(seq) -

      -
      -

      - An iterator to the beginning of sequence seq -

      -

      + sequence::template begin<Seq>::call(seq) +

      + An iterator to the beginning of sequence seq +

      -

      - sequence::template end<Seq>::type -

      -
      -

      - The type of an iterator to the end of a sequence of type Seq -

      -

      + sequence::template end<Seq>::type +

      + The type of an iterator to the end of a sequence of type Seq +

      -

      - sequence::template end<Seq>::call(seq) -

      -
      -

      - An iterator to the end of sequence seq -

      -

      + sequence::template end<Seq>::call(seq) +

      + An iterator to the end of sequence seq +

      -

      - sequence::template size<Seq>::type -

      -
      -

      - The size of a sequence of type Seq +

      + sequence::template size<Seq>::type +

      + The size of a sequence of type Seq as an MPL Integral Constant -

      -
      -

      - sequence::template size<Seq>::call(seq) -

      -
      -

      - The size of sequence seq -

      -

      + sequence::template size<Seq>::call(seq) +

      + The size of sequence seq +

      -

      - sequence::template at<Seq, N>::type -

      -
      -

      - The type of element N - in a sequence of type Seq -

      -

      + sequence::template at<Seq, N>::type +

      + The type of element N + in a sequence of type Seq +

      -

      - sequence::template at<Seq, N>::call(seq) -

      -
      -

      - Element N in sequence - seq -

      -

      + sequence::template at<Seq, N>::call(seq) +

      + Element N in sequence + seq +

      -

      - sequence::template value_at<Sequence, N>::type -

      -
      -

      - The type of the Nth - element in a sequence of type Seq -

      -

      + sequence::template value_at<Sequence, N>::type +

      + The type of the Nth + element in a sequence of type Seq +

      +
      -
      - - Include -
      +

      + + Include +

      #include <boost/fusion/sequence/sequence_facade.hpp>
       #include <boost/fusion/include/sequence_facade.hpp>
       
      -
      - - Example -
      +

      + + Example +

      - A full working example using sequence_facade is provided in triple.cpp + A full working example using sequence_facade is provided in triple.cpp in the extension examples.

      diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index b5aa1a98..2ed0930b 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -3,10 +3,10 @@ Functional - + - + @@ -22,10 +22,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      Concepts
      @@ -62,17 +65,17 @@ Components to call functions and function objects and to make Fusion code callable through a function object interface.

      -

      - - Header -

      +

      + + Header +

      #include <boost/fusion/functional.hpp>
       
      -

      - - Fused and unfused +

      + + Fused and unfused forms -

      +

      What is a function call?

      @@ -82,31 +85,31 @@ 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 + 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 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 +

      + + 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 @@ -119,8 +122,9 @@

      Transforming an unfused function into its fused counterpart allows n-ary calls - from an algorithm that invokes an unary Polymorphic - Function Object with Sequence + from an algorithm that invokes an unary Polymorphic + Function Object with Sequence arguments.

      @@ -132,11 +136,11 @@

      Constructors can be called applying Boost.Functional/Factory.

      -

      - - Making +

      + + 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 diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index 967cf3e2..c6fb7deb 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -1,12 +1,12 @@ -Adapters + Adapters - + - + @@ -22,10 +22,13 @@

      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      fused
      fused_procedure
      diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index e89cd756..2f968aae 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -3,10 +3,10 @@ fused - + - - + + @@ -22,55 +22,61 @@
      PrevUpHomeNext
      -
      -

      -fused -

      -
      - - Description -
      +
      +
      +

      +fused +

      +
      +
      +
      + + Description +

      - An unary Polymorphic Function - Object adapter template for Deferred - Callable Object target functions. It takes a Forward + 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 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 -
      +
      + + Header +
      #include <boost/fusion/functional/adapter/fused.hpp>
       
      -
      - - Synopsis -
      +
      + + Synopsis +
      template <typename Function>
       class fused;
       
      -
      - - Template +
      + + Template parameters -
      +
      @@ -78,154 +84,131 @@ - - + - + +

      - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Description -

      -
      -

      +

      Default -

      -
      -

      - Function -

      -
      -

      - A Deferred +

      + Function +

      + A Deferred Callable Object -

      -
      -

      -

      -

      +

      -
      - - Model of -
      -
      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
       #include <boost/fusion/include/make_fused_procedure.hpp>
       
      - - Example + + 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 + + See also
      - diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index a048845a..ee7de825 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -1,12 +1,14 @@ -make_unfused + + make_unfused - + - + @@ -22,32 +24,38 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Creates a unfused adapter for a given, - unary Polymorphic Function - Object. The usual element + Creates a unfused adapter for a given, + unary Polymorphic Function + Object. The usual element conversion is applied to the target function.

      - - Synopsis + + Synopsis
      template <typename F>
      -inline typename make_unfused<F>::type
      +inline typename make_unfused<F>::type
       make_unfused(F const & f);
       
      - - Parameters + + Parameters
      @@ -56,64 +64,53 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - f -

      -
      -

      - Model of Polymorphic +

      + f +

      + Model of Polymorphic Function Object -

      -
      -

      +

      The function to transform. -

      -
      - - Expression + + Expression Semantics
      make_unfused(f);
       

      - Return type: A specialization of unfused. + Return type: A specialization of unfused.

      - Semantics: Returns a unfused adapter for f. + Semantics: Returns a unfused adapter for f.

      - - Header + + Header
      #include <boost/fusion/functional/generation/make_unfused.hpp>
       #include <boost/fusion/include/make_unfused.hpp>
       
      - - Example + + Example
      struct fused_incrementer
       {
      @@ -126,7 +123,7 @@
           template <class Seq>
           void operator()(Seq const & s) const
           {
      -        for_each(s,++boost::lambda::_1);
      +        for_each(s,++boost::lambda::_1);
           }
       };
       
      @@ -138,14 +135,15 @@
       }
       
      - - See + + See also
      - diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 8c20672d..5e91f690 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -3,11 +3,13 @@ Metafunctions - + - - + +
      @@ -22,10 +24,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      make_fused
      diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index e0b4125d..990f1691 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -1,13 +1,15 @@ -make_fused + + make_fused - + - - + +
      @@ -22,28 +24,33 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Returns the result type of make_fused. + Returns the result type of make_fused.

      - - Header + + Header
      #include <boost/fusion/functional/generation/make_fused.hpp>
       #include <boost/fusion/include/make_fused.hpp>
       
      - - Synopsis + + Synopsis
      namespace result_of
       {
      @@ -55,11 +62,12 @@
       }
       
      - - See + + 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 94c70f83..0e7413bd 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -1,13 +1,16 @@ -make_fused_function_object + + make_fused_function_object - + - - + +
      @@ -22,28 +25,33 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Returns the result type of make_fused_function_object. + Returns the result type of make_fused_function_object.

      - - Header + + Header
      #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
       #include <boost/fusion/include/make_fused_function_object.hpp>
       
      - - Synopsis + + Synopsis
      namespace result_of
       {
      @@ -55,11 +63,12 @@
       }
       
      - - See + + 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 3d1e02bb..3b31682a 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -1,13 +1,16 @@ -make_fused_procedure + + make_fused_procedure - + - - + +
      @@ -22,28 +25,33 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Returns the result type of make_fused_procedure. + Returns the result type of make_fused_procedure.

      - - Header + + Header
      #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
       #include <boost/fusion/include/make_fused_procedure.hpp>
       
      - - Synopsis + + Synopsis
      namespace result_of
       {
      @@ -55,11 +63,12 @@
       }
       
      - - See + + See also
      - +
      diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index d35c2ddc..f005d8ab 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -1,12 +1,14 @@ -make_unfused + + make_unfused - + - + @@ -22,28 +24,33 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Returns the result type of make_unfused. + Returns the result type of make_unfused.

      - - Header + + Header
      #include <boost/fusion/functional/generation/make_unfused.hpp>
       #include <boost/fusion/include/make_unfused.hpp>
       
      - - Synopsis + + Synopsis
      namespace result_of
       {
      @@ -55,11 +62,12 @@
       }
       
      - - See + + See also
      - +
      diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 6a2c639e..57b36bfe 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -3,10 +3,11 @@ Invocation - + - + @@ -22,10 +23,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      Functions
      Metafunctions
      diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index b67a0d39..de44d69e 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -3,10 +3,10 @@ Functions - + - + @@ -22,10 +22,13 @@
      PrevUpHomeNext
      -
      @@ -22,17 +23,21 @@ -
      -
      -invoke -
      +
      +
      +
      +invoke +
      +
      +
      - - Description + + Description

      - Calls a Deferred - Callable Object with the arguments from a Sequence. + Calls a Deferred + Callable Object with the arguments from a Sequence.

      The first template parameter can be specialized explicitly to avoid copying @@ -41,34 +46,34 @@

      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).

      Constructors can be called applying Boost.Functional/Factory.

      - - Synopsis + + Synopsis
      template<
           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 + + Parameters
      @@ -77,101 +82,88 @@ - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - f -

      -
      -

      - A Deferred +

      + f +

      + A Deferred Callable Object -

      -
      -

      +

      The function to call. -

      -
      -

      - s -

      -
      -

      - A Forward +

      + s +

      + A Forward Sequence -

      -
      -

      +

      The arguments. -

      -
      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/functional/invocation/invoke.hpp>
       
      - - Example + + 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 + + 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 ff2e8ed6..2ef57612 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -1,12 +1,14 @@ -invoke_function_object + + invoke_function_object - + - + @@ -22,18 +24,23 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Calls a Polymorphic Function - Object with the arguments from a Sequence. + Calls a Polymorphic Function + Object with the arguments from a Sequence.

      The first template parameter can be specialized explicitly to avoid copying @@ -43,26 +50,28 @@ Constructors can be called applying Boost.Functional/Factory.

      - - Synopsis + + Synopsis
      template<
           typename Function,
           class Sequence
           >
      -typename result_of::invoke_function_object<Function, Sequence>::type
      +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
      +typename result_of::invoke_function_object<Function, Sequence const>::type
       invoke_function_object(Function f, Sequence const & s);
       
      - - Parameters + + Parameters
      @@ -71,86 +80,70 @@ - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - f -

      -
      -

      - Model of Polymorphic +

      + f +

      + Model of Polymorphic Function Object -

      -
      -

      +

      The function object to call. -

      -
      -

      - s -

      -
      -

      - Model of Forward +

      + s +

      + Model of Forward Sequence -

      -
      -

      +

      The arguments. -

      -
      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
       
      - - Example + + Example
      struct sub
       {
      @@ -171,20 +164,23 @@
       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 + + 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 22821053..a76d070e 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -1,13 +1,15 @@ -invoke_procedure + + invoke_procedure - + - - + +
      @@ -22,18 +24,22 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Calls a Callable - Object with the arguments from a Sequence. + Calls a Callable + Object with the arguments from a Sequence. The result of the call is ignored.

      @@ -43,8 +49,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 @@ -52,26 +58,28 @@ isn't implemented).

      - - Synopsis + + Synopsis
      template<
           typename Function,
           class Sequence
           >
      -typename result_of::invoke_procedure<Function, Sequence>::type
      +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
      +typename result_of::invoke_procedure<Function, Sequence const>::type
       invoke_procedure(Function f, Sequence const & s);
       
      - - Parameters + + Parameters
      @@ -80,102 +88,88 @@ - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - f -

      -
      -

      - Model of Callable +

      + f +

      + Model of Callable Object -

      -
      -

      +

      The function to call. -

      -
      -

      - s -

      -
      -

      - Model of Forward +

      + s +

      + Model of Forward Sequence -

      -
      -

      +

      The arguments. -

      -
      - - Expression + + Expression Semantics
      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 + + Header
      #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
       
      - - Example + + 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 + + See also
      - diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 35c77925..e7acd676 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -3,11 +3,12 @@ Limits - + - - + +
      @@ -22,32 +23,35 @@
      PrevUpHomeNext
      -
      -

      -Limits -

      -
      - - Header -
      +
      +
      +

      +Limits +

      +
      +
      +
      + + Header +
      #include <boost/fusion/functional/invocation/limits.hpp>
       
      -
      - - Macros -
      +
      + + Macros +

      The following macros can be defined to change the maximum arity. The default is 6.

      -
      @@ -22,20 +23,23 @@ -
      -
      -invoke -
      +
      +
      +
      +invoke +
      +
      +
      - - Description + + Description

      - Returns the result type of invoke. + Returns the result type of invoke.

      - - Synopsis + + Synopsis
      namespace result_of
       {
      @@ -50,13 +54,13 @@
       }
       
      - - See + + 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 2ea6cdfb..dd615fe4 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -1,12 +1,14 @@ -invoke_function_object + + invoke_function_object - + - + @@ -22,21 +24,26 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Returns the result type of invoke_function_object. + Returns the result type of invoke_function_object.

      - - Synopsis + + Synopsis
      namespace result_of
       {
      @@ -51,13 +58,14 @@
       }
       
      - - See + + 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 b8db4987..e4d7a6e6 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -1,13 +1,15 @@ -invoke_procedure + + invoke_procedure - + - - + +
      @@ -22,21 +24,26 @@
      PrevUpHomeNext
      -
      -
      - - Description + + Description

      - Returns the result type of invoke_procedure. + Returns the result type of invoke_procedure.

      - - Synopsis + + Synopsis
      namespace result_of
       {
      @@ -51,13 +58,14 @@
       }
       
      - - See + + See also
      -
      diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 8913f34b..6ddd26c0 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,10 +3,10 @@ Introduction - + - + @@ -22,17 +22,20 @@
      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, + hold a specific type. A vector<int> + can only hold ints. A list<X> can + only hold elements of type X, and so on.

      @@ -42,8 +45,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 @@ -52,7 +55,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 @@ -90,23 +93,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.

      @@ -117,7 +120,7 @@ sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you wish to work solely on types - [1] + [1] . In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence @@ -132,10 +135,10 @@



      -

      [1] +

      [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation - is finished, you can instantiate a fusion sequence (see Conversion) + is finished, you can instantiate a fusion sequence (see Conversion) for the runtime part.

      diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index edbf22b2..c1fe41d3 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -3,10 +3,10 @@ Iterator - + - + @@ -22,10 +22,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      Concepts
      @@ -72,12 +75,12 @@ iterators are a fundamental concept in Fusion. As with MPL and STL iterators describe positions, and provide access to data within an underlying - Sequence. + Sequence.

      -

      - - Header -

      +

      + + Header +

      #include <boost/fusion/iterator.hpp>
       #include <boost/fusion/include/iterator.hpp>
       
      diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html index 6f521bd5..f128002f 100644 --- a/doc/html/fusion/iterator/concepts.html +++ b/doc/html/fusion/iterator/concepts.html @@ -3,11 +3,12 @@ Concepts - + - - + +
      @@ -22,10 +23,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      Forward Iterator
      @@ -35,11 +39,16 @@ Access Iterator

      - 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 + 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.

      diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 981795fb..ec43505a 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -1,13 +1,16 @@ -Bidirectional Iterator +Bidirectional + Iterator - + - - + +
      @@ -22,56 +25,62 @@
      PrevUpHomeNext
      -
      - +
      + + Description +

      - A Bidirectional Iterator traverses a Sequence + A Bidirectional Iterator traverses a Sequence allowing movement in either direction one element at a time.

      -
      +

      Notation

      -
      i
      +
      i

      A Bidirectional Iterator

      -
      I
      +
      I

      A Bidirectional Iterator type

      -
      M
      +
      M

      An MPL integral constant

      -
      N
      +
      N

      An integral constant

      -
      - - Refinement +
      + + Refinement of -
      +

      - Forward Iterator + Forward Iterator

      -
      - - Expression +
      + + Expression requirements -
      +

      - In addition to the requirements defined in Forward + In addition to the requirements defined in Forward Iterator, the following expressions must be valid:

      @@ -81,140 +90,107 @@ - - + - + +

      - - + - + +

      - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Expression -

      -
      -

      +

      Return type -

      -
      -

      +

      Runtime Complexity -

      -
      -

      - next(i) -

      -
      -

      - Bidirectional +

      + next(i) +

      + Bidirectional Iterator -

      -
      -

      +

      Constant -

      -
      -

      - prior(i) -

      -
      -

      - Bidirectional +

      + prior(i) +

      + Bidirectional Iterator -

      -
      -

      +

      Constant -

      -
      -

      - advance_c<N>(i) -

      -
      -

      - Bidirectional +

      + advance_c<N>(i) +

      + Bidirectional Iterator -

      -
      -

      +

      Constant -

      -
      -

      - advance<M>(i) -

      -
      -

      - Bidirectional +

      + advance<M>(i) +

      + Bidirectional Iterator -

      -
      -

      +

      Constant -

      -
      -
      - - Meta +
      + + Meta Expressions -
      +
      - - + +

      - - + +

      -

      +

      Expression -

      -
      -

      +

      Compile Time Complexity -

      -
      -

      - result_of::prior<I>::type -

      -
      -

      +

      + result_of::prior<I>::type +

      Amortized constant time -

      -
      -
      - - Expression +
      + + Expression Semantics -
      +

      The semantics of an expression are defined only where they differ from, - or are not defined in Forward + or are not defined in Forward Iterator

      @@ -223,74 +199,69 @@ - - + +

      - - + +
      -

      +

      Expression -

      -
      -

      +

      Semantics -

      -
      -

      - prior(i) -

      -
      -

      - An iterator to the element preceding i -

      -

      + prior(i) +

      + An iterator to the element preceding i +

      -
      - - Invariants -
      +
      + + Invariants +

      - In addition to the invariants of Forward + In addition to the invariants of Forward Iterator, the following invariants always hold:

      -
      -
      - - Meta +
      + + Meta Expressions -
      +
      - - + +

      - - + +

      - - + +

      - - + +

      - - + +

      - - + +

      - - + +

      - - + +

      -

      +

      Expression -

      -
      -

      +

      Compile Time Complexity -

      -
      -

      - 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 +
      + + Expression Semantics -
      +
      - - + +

      - - + + - - + +

      - - + +

      - - + +

      - - + + - - + + - - + + - - + +
      -

      +

      Expression -

      -
      -

      +

      Semantics -

      -
      -

      - next(i) -

      -
      -

      - An iterator to the element following i -

      -

      + next(i) +

      + An iterator to the element following i +

      -

      - i == - j -

      -
      -

      +

      + i == + j +

      Iterator equality comparison -

      -
      -

      - i != - j -

      -
      -

      +

      + i != + j +

      Iterator inequality comparison -

      -
      -

      - advance_c<N>(i) -

      -
      -

      - An iterator n elements after i +

      + 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 -
      +
      + + Invariants +

      The following invariants always hold:

      -
      diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html index a6c19e9d..cbae5a92 100644 --- a/doc/html/fusion/iterator/functions/next.html +++ b/doc/html/fusion/iterator/functions/next.html @@ -3,10 +3,10 @@ next - + - + @@ -22,103 +22,95 @@
      PrevUpHomeNext
      -
      -

      -next -

      -
      - - Description -
      +
      +
      +

      +next +

      +
      +
      +
      + + Description +

      Moves an iterator 1 position forwards.

      -
      - - Synopsis -
      +
      + + 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

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - i -

      -
      -

      - Model of Forward +

      + i +

      + Model of Forward Iterator -

      -
      -

      +

      Operation's argument -

      -
      +
      -
      - - Expression +
      + + Expression Semantics -
      +
      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 -
      +
      + + Header +
      #include <boost/fusion/iterator/next.hpp>
       #include <boost/fusion/include/next.hpp>
       
      -
      - - Example -
      -
      typedef vector<int,int,int> vec;
      +
      + + 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);
      +assert(deref(begin(v)) == 1);
      +assert(deref(next(begin(v))) == 2);
      +assert(deref(next(next(begin(v)))) == 3);
       
      diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html index a1794c6b..82538126 100644 --- a/doc/html/fusion/iterator/functions/prior.html +++ b/doc/html/fusion/iterator/functions/prior.html @@ -3,10 +3,10 @@ prior - + - + @@ -22,102 +22,94 @@
      PrevUpHomeNext
      -
      -

      -prior -

      -
      - - Description -
      +
      +
      +

      +prior +

      +
      +
      +
      + + Description +

      Moves an iterator 1 position backwards.

      -
      - - Synopsis -
      +
      + + 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

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - i -

      -
      -

      - Model of Bidirectional +

      + i +

      + Model of Bidirectional Iterator -

      -
      -

      +

      Operation's argument -

      -
      +
      -
      - - Expression +
      + + 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 -
      +
      + + Header +
      #include <boost/fusion/iterator/prior.hpp>
       #include <boost/fusion/include/prior.hpp>
       
      -
      - - Example -
      -
      typedef vector<int,int> vec;
      +
      + + Example +
      +
      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/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html index be481821..8d1fb1fd 100644 --- a/doc/html/fusion/iterator/metafunctions.html +++ b/doc/html/fusion/iterator/metafunctions.html @@ -3,10 +3,11 @@ Metafunctions - + - + @@ -22,10 +23,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      value_of
      deref
      diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index 83f9fcdc..1ba7988b 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -3,10 +3,10 @@ advance - + - + @@ -22,21 +22,24 @@
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +
      + + Description +

      Moves an iterator a specified distance.

      -
      - - Synopsis -
      +
      + + Synopsis +
      template<
           typename I,
           typename M
      @@ -47,105 +50,89 @@
       };
       
      -

      Table 1.17. Parameters

      -
      +

      Table 1.17. Parameters

      +
      - - + - + +

      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I -

      -
      -

      - Model of Forward +

      + I +

      + Model of Forward Iterator -

      -
      -

      +

      Iterator to move relative to -

      -
      -

      - M -

      -
      -

      +

      + M +

      Model of MPL Integral Constant -

      -
      -

      +

      Number of positions to move -

      -
      +
      -
      - - Expression +
      + + 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 Bidirectional - Iterator then M + Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional + Iterator then M may be negative.

      -
      - - Header -
      +
      + + Header +
      #include <boost/fusion/iterator/advance.hpp>
       #include <boost/fusion/include/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;
      +
      + + 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>));
      +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
       
      diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html index f2c47ebc..b2812187 100644 --- a/doc/html/fusion/iterator/metafunctions/advance_c.html +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html @@ -3,10 +3,10 @@ advance_c - + - + @@ -22,21 +22,24 @@
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +
      + + Description +

      Moves an iterator by a specified distance.

      -
      - - Synopsis -
      +
      + + Synopsis +
      template<
           typename I,
           int N
      @@ -47,104 +50,88 @@
       };
       
      -

      Table 1.18. Parameters

      -
      +

      Table 1.18. Parameters

      +
      - - + - + +

      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I -

      -
      -

      - Model of Forward +

      + I +

      + Model of Forward Iterator -

      -
      -

      +

      Iterator to move relative to -

      -
      -

      - N -

      -
      -

      +

      + N +

      Integer constant -

      -
      -

      +

      Number of positions to move -

      -
      +
      -
      - - Expression +
      + + 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 Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + 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 -
      +
      + + Header +
      #include <boost/fusion/iterator/advance.hpp>
       #include <boost/fusion/include/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;
      +
      + + 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>));
      +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
       
      diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html index 00b759df..51c2b998 100644 --- a/doc/html/fusion/iterator/metafunctions/deref.html +++ b/doc/html/fusion/iterator/metafunctions/deref.html @@ -3,10 +3,10 @@ deref - + - + @@ -22,21 +22,24 @@
      PrevUpHomeNext
      -
      -

      -deref -

      -
      - - Description -
      +
      +
      +

      +deref +

      +
      +
      +
      + + Description +

      Returns the type that will be returned by dereferencing an iterator.

      -
      - - Synposis -
      +
      + + Synposis +
      template<
           typename I
           >
      @@ -46,85 +49,74 @@
       };
       
      -

      Table 1.12. Parameters

      -
      +

      Table 1.12. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I -

      -
      -

      - Model of Forward +

      + I +

      + Model of Forward Iterator -

      -
      -

      +

      Operation's argument -

      -
      +
      -
      - - Expression +
      + + 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 -
      +
      + + Header +
      #include <boost/fusion/iterator/deref.hpp>
       #include <boost/fusion/include/deref.hpp>
       
      -
      - - Example -
      -
      typedef vector<int,int&> vec;
      +
      + + 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<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/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html index 31b11479..6d070176 100644 --- a/doc/html/fusion/iterator/metafunctions/distance.html +++ b/doc/html/fusion/iterator/metafunctions/distance.html @@ -3,10 +3,10 @@ distance - + - + @@ -22,21 +22,24 @@
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +
      + + Description +

      Returns the distance between two iterators.

      -
      - - Synopsis -
      +
      + + Synopsis +
      template<
           typename I,
           typename J
      @@ -47,82 +50,71 @@
       };
       
      -

      Table 1.16. Parameters

      -
      +

      Table 1.16. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I, J -

      -
      -

      - Models of Forward +

      + I, J +

      + Models of Forward Iterator into the same sequence -

      -
      -

      +

      The start and end points of the distance to be measured -

      -
      +
      -
      - - Expression +
      + + 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 -
      +
      + + Header +
      #include <boost/fusion/iterator/distance.hpp>
       #include <boost/fusion/include/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;
      +
      + + 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);
       
      diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html index bf8a178a..419c5abc 100644 --- a/doc/html/fusion/iterator/metafunctions/equal_to.html +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html @@ -3,10 +3,10 @@ equal_to - + - + @@ -22,23 +22,26 @@
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +
      + + Description +

      Returns a true-valued MPL - Integral Constant if I - and J are equal. + Integral Constant if I + and J are equal.

      -
      - - Synopsis -
      +
      + + Synopsis +
      template<
           typename I,
           typename J
      @@ -49,81 +52,69 @@
       };
       
      -

      Table 1.15. Parameters

      -
      +

      Table 1.15. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I, J -

      -
      -

      +

      + I, J +

      Any fusion iterators -

      -
      -

      +

      Operation's arguments -

      -
      +
      -
      - - Expression +
      + + 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 -
      +
      + + Header +
      #include <boost/fusion/iterator/equal_to.hpp>
       #include <boost/fusion/include/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>));
      +
      + + 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>));
       
      diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html index 56e9d907..c5d8abf4 100644 --- a/doc/html/fusion/iterator/metafunctions/next.html +++ b/doc/html/fusion/iterator/metafunctions/next.html @@ -3,10 +3,10 @@ next - + - + @@ -22,21 +22,24 @@
      PrevUpHomeNext
      -
      -

      -next -

      -
      - - Description -
      +
      +
      +

      +next +

      +
      +
      +
      + + Description +

      Returns the type of the next iterator in a sequence.

      -
      - - Synposis -
      +
      + + Synposis +
      template<
           typename I
           >
      @@ -46,80 +49,69 @@
       };
       
      -

      Table 1.13. Parameters

      -
      +

      Table 1.13. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I -

      -
      -

      - Model of Forward +

      + I +

      + Model of Forward Iterator -

      -
      -

      +

      Operation's argument -

      -
      +
      -
      - - Expression +
      + + 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 -
      +
      + + Header +
      #include <boost/fusion/iterator/next.hpp>
       #include <boost/fusion/include/next.hpp>
       
      -
      - - Example -
      -
      typedef vector<int,double> vec;
      -typedef result_of::next<result_of::begin<vec>::type>::type second;
      +
      + + 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>));
      +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
       
      diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html index 1ad91922..23b46481 100644 --- a/doc/html/fusion/iterator/metafunctions/prior.html +++ b/doc/html/fusion/iterator/metafunctions/prior.html @@ -3,10 +3,10 @@ prior - + - + @@ -22,21 +22,24 @@
      PrevUpHomeNext
      -
      -

      -prior -

      -
      - - Description -
      +
      +
      +

      +prior +

      +
      +
      +
      + + Description +

      Returns the type of the previous iterator in a sequence.

      -
      - - Synopsis -
      +
      + + Synopsis +
      template<
           typename I
           >
      @@ -46,83 +49,72 @@
       };
       
      -

      Table 1.14. Parameters

      -
      +

      Table 1.14. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I -

      -
      -

      - Model of Bidirectional +

      + I +

      + Model of Bidirectional Iterator -

      -
      -

      +

      Operation's argument -

      -
      +
      -
      - - Expression +
      + + 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 -
      +
      + + Header +
      #include <boost/fusion/iterator/prior.hpp>
       #include <boost/fusion/include/prior.hpp>
       
      -
      - - Example -
      -
      typedef vector<int,double> vec;
      -typedef result_of::next<result_of::begin<vec>::type>::type second;
      +
      + + 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>));
      +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/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html index a9611130..18d8d8a1 100644 --- a/doc/html/fusion/iterator/metafunctions/value_of.html +++ b/doc/html/fusion/iterator/metafunctions/value_of.html @@ -3,10 +3,10 @@ value_of - + - + @@ -22,21 +22,24 @@
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +
      + + Description +

      Returns the type stored at the position of an iterator.

      -
      - - Synopsis -
      +
      + + Synopsis +
      template<
           typename I
           >
      @@ -46,83 +49,72 @@
       };
       
      -

      Table 1.11. Parameters

      -
      +

      Table 1.11. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - I -

      -
      -

      - Model of Forward +

      + I +

      + Model of Forward Iterator -

      -
      -

      +

      Operation's argument -

      -
    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
    #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/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;
    +
    + + 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&>));
    +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/iterator/operator.html b/doc/html/fusion/iterator/operator.html index 8094cc2a..ebc0f2c0 100644 --- a/doc/html/fusion/iterator/operator.html +++ b/doc/html/fusion/iterator/operator.html @@ -3,11 +3,12 @@ Operator - + - - + +
    @@ -22,10 +23,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    Operator *
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index 08f0ccc3..e58e17d5 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -1,13 +1,16 @@ -Operator == + Operator + == - + - - + +
    @@ -22,22 +25,26 @@
    PrevUpHomeNext
    -
    - +
    + + Description +

    Compares 2 iterators for equality.

    -
    - - Synopsis -
    +
    + + Synopsis +
    template<
         typename I,
         typename J
    @@ -45,68 +52,56 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    -
    +

    Table 1.9. Parameters

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - i, j -

    -
    -

    +

    + i, j +

    Any fusion iterators -

    -
    -

    +

    Operation's arguments -

    -
    +
    -
    - - Expression +
    + + Expression Semantics -
    +
    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 -
    +
    + + Header +
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html index 3c35818e..83600171 100644 --- a/doc/html/fusion/iterator/operator/operator_inequality.html +++ b/doc/html/fusion/iterator/operator/operator_inequality.html @@ -1,12 +1,14 @@ -Operator != + Operator + != - + - + @@ -22,22 +24,26 @@
    PrevUpHomeNext
    -
    - +
    + + Description +

    Compares 2 iterators for inequality.

    -
    - - Synopsis -
    +
    + + Synopsis +
    template<
         typename I,
         typename J
    @@ -45,66 +51,54 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    -
    +

    Table 1.10. Parameters

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - i, j -

    -
    -

    +

    + i, j +

    Any fusion iterators -

    -
    -

    +

    Operation's arguments -

    -
    +
    -
    - - Expression +
    + + 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 -
    +
    + + Header +
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html index 36299dca..bcbb00d1 100644 --- a/doc/html/fusion/iterator/operator/operator_unary_star.html +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html @@ -1,13 +1,15 @@ -Operator * + Operator + * - + - - + + @@ -22,104 +24,97 @@
    PrevUpHomeNext
    -
    - +
    + + Description +

    Dereferences an iterator.

    -
    - - Synopsis -
    +
    + + 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

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - i -

    -
    -

    - Model of Forward +

    + i +

    + Model of Forward Iterator -

    -
    -

    +

    Operation's argument -

    -
    +
    -
    - - Expression +
    + + Expression Semantics -
    +
    *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 -
    +
    + + Header +
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    -
    - - Example -
    -
    typedef vector<int,int&> vec;
    +
    + + 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);
    +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 522e3fc6..a713a936 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -3,10 +3,11 @@ Notes - + - + @@ -22,54 +23,58 @@
    PrevUpHomeNext
    -
    -

    -Notes -

    -

    - - Recursive Inlined +

    - An interesting peculiarity of functions like at when applied to a Forward - Sequence like list + 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 -

    +

    + + 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 -

    +

    + + 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. +
        +
      1. A type for which an appropriate template specialization is required
      2. -
      3. +
      4. A metafunction that associates the type with a tag type
      5. -
      6. +
      7. A template that is specialized for the tag type

      - For example, the fusion result_of::begin metafunction + For example, the fusion result_of::begin metafunction is implemented as follows:

      template <typename Sequence>
      @@ -84,26 +89,26 @@
       

      In the case:

      -
        -
      1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl +
          +
        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 +
        4. +traits::tag_of is the metafunction that associates + Sequence with an appropriate tag
        5. -
        6. -result_of::begin_impl is the template which is specialized +
        7. +result_of::begin_impl is the template which is specialized to provide an implementation for each tag type
        -

        - - Extensibility -

        +

        + + Extensibility +

        Unlike MPL, there is no extensibe sequence concept in fusion. This does not mean that Fusion @@ -111,66 +116,66 @@ 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. + 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 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 + 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 + 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 -

        +

        + + 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 - [10] + [10] :

        -
        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 @@ -178,35 +183,35 @@

        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 -

        +

        + + 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: @@ -215,11 +220,11 @@ 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&>
        +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 @@ -227,11 +232,11 @@



        -

        [10] +

        [10] Note that the type of a string literal is an array of const characters, - not const char*. To get make_list to create a list with an element of a non-const - array type one must use the ref - wrapper (see boost::ref). + 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 8177d5c5..ea3a451d 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,10 +3,10 @@ Organization - + - + @@ -22,10 +22,13 @@
        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 @@ -34,29 +37,29 @@

        The library is organized in three layers:

        -

        - - Layers -

        +

        + + Layers +

        - fusion_org + fusion_org

        - The entire library is found in the "boost/fusion" + 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" + there exists "boost/fusion/support.hpp" in the same directory as "boost/fusion/support". Everything, except those found inside "detail" directories, is public.

        - There is also a "boost/fusion/include/" + There is also a "boost/fusion/include/" directory that contains all the headers to all the components and modules. If you are unsure where to find a specific component or module, or don't want to fuss with hierarchy and nesting, use this. @@ -65,133 +68,133 @@ The library is header-only. There is no need to build object files to link against.

        -

        - - Directory -

        -
          -
        • +

          + + Directory +

          +
            +
          • tuple
          • -
          • +
          • algorithm -
              -
            • +
                +
              • iteration
              • -
              • +
              • query
              • -
              • +
              • transformation
            • -
            • +
            • adapted -
                -
              • +
                  +
                • array
                • -
                • +
                • mpl
                • -
                • +
                • boost::tuple
                • -
                • +
                • std_pair
                • -
                • +
                • struct
                • -
                • +
                • variant
              • -
              • +
              • view -
                  -
                • +
                    +
                  • filter_view
                  • -
                  • +
                  • iterator_range
                  • -
                  • +
                  • joint_view
                  • -
                  • +
                  • reverse_view
                  • -
                  • +
                  • single_view
                  • -
                  • +
                  • transform_view
                  • -
                  • +
                  • zip_view
                • -
                • +
                • container -
                    -
                  • +
                      +
                    • deque
                    • -
                    • +
                    • list
                    • -
                    • +
                    • map
                    • -
                    • +
                    • set
                    • -
                    • +
                    • vector
                    • -
                    • +
                    • generation
                  • -
                  • +
                  • mpl
                  • -
                  • +
                  • functional
                  • -
                  • +
                  • sequence -
                      -
                    • +
                        +
                      • comparison
                      • -
                      • +
                      • intrinsic
                      • -
                      • +
                      • io
                    • -
                    • +
                    • iterator
                    • -
                    • +
                    • support
                    -

                    - - Example -

                    +

                    + + 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

                    @@ -201,13 +204,13 @@ #include <boost/fusion/include/list.hpp>

        - The first includes all containers The second includes only list - [4] + The first includes all containers The second includes only list + [4] .



        -

        [4] +

        [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

        diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index d7b5dbe8..077f198e 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,10 +3,10 @@ Preface - + - + @@ -22,15 +22,18 @@
        PrevUpHomeNext
        -
        - +
        +
        + +
        +

        - “Algorithms + Data Structures = Programs.” + “Algorithms + Data Structures = Programs.”

        @@ -39,15 +42,15 @@

        - --Niklaus Wirth + --Niklaus Wirth

        -

        - - Description -

        +

        + + Description +

        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, @@ -62,10 +65,10 @@ It is named "fusion" because the library is a "fusion" of compile time metaprogramming with runtime programming.

        -

        - - Motivation -

        +

        + + Motivation +

        Tuples are powerful beasts. After having developed two significant projects (Spirit and Phoenix) @@ -88,121 +91,91 @@ had an adhoc collection of tuple manipulation and traversal routines. It was an instant AHA! moment.

        -

        - - How to use this manual -

        +

        + + 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 1.1. Icons

        -
    +

    Table 1.1. Icons

    +
    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Icon -

    -
    -

    +

    Name -

    -
    -

    +

    Meaning -

    -
    -

    - note -

    -
    -

    +

    + note +

    Note -

    -
    -

    +

    Information provided is auxiliary but will give the reader a deeper insight into a specific topic. May be skipped. -

    -
    -

    - alert -

    -
    -

    +

    + alert +

    Alert -

    -
    -

    +

    Information provided is of utmost importance. -

    -
    -

    - caution -

    -
    -

    +

    + caution +

    Caution -

    -
    -

    +

    A mild warning. -

    -
    -

    - tip -

    -
    -

    +

    + 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.

    -

    - - Support -

    +

    + + Support +

    Please direct all questions to Spirit's mailing list. You can subscribe to the Spirit diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 9f72ccdb..61c148ec 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,10 +3,10 @@ Quick Start - + - + @@ -22,47 +22,50 @@

    -
    - +
    +
    + +
    +

    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) - [2] + For starters, we shall include all of Fusion's Sequence(s) + [2] :

    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     

    - Let's begin with a vector - [3] + Let's begin with a vector + [3] :

    -
    vector<int, char, std::string> stuff(1, 'x', "howdy");
    -int i = at_c<0>(stuff);
    -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 +

    + + Print the vector as XML -

    +

    First, let's include the algorithms:

    @@ -89,38 +92,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 - print just about any Fusion Sequence. + for_each is generic. With + print_xml, you can use it to + print just about any Fusion Sequence.

    -

    - - Print only pointers -

    +

    + + 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:

    #include <boost/type_traits/is_pointer.hpp>
    @@ -131,37 +134,37 @@
     
    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 -

    +

    + + Associative tuples +

    Ok, moving on...

    - Apart from vector, + 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 + its own characteristics. We have list, set, map, plus a multitude of views that provide various ways to present the sequences.

    - Fusion's map + Fusion's map associate types with elements. It can be used as a cleverer replacement of - the struct. Example: + the struct. Example:

    namespace fields
     {
    @@ -169,31 +172,31 @@
         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:

    struct saver
    @@ -208,19 +211,19 @@
     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 -

    +

    + + 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, @@ -229,14 +232,14 @@



    -

    [2] +

    [2] There are finer grained header files available if you wish to have more - control over which components to include (see section Orgainization + control over which components to include (see section Orgainization for details).

    -

    [3] - Unless otherwise noted, components are in namespace boost::fusion. - For the sake of simplicity, code in this quick start implies using directives for the fusion components +

    [3] + Unless otherwise noted, components are in namespace boost::fusion. + For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using.

    diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index 301b3513..f2ae59a4 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,10 +3,10 @@ References - + - + @@ -21,36 +21,39 @@
    PrevUpHome
    -
    - -
      -
    1. +
      +
      + +
      +
      +
        +
      1. New Iterator Concepts, David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01.
      2. -
      3. +
      4. The Boost Tuple Library, Jaakko Jarvi, 2001.
      5. -
      6. +
      7. Spirit Parser Library, Joel de Guzman, 2001-2006.
      8. -
      9. +
      10. The Boost MPL Library, Aleksey Gurtovoy and David Abrahams, 2002-2004.
      11. -
      12. +
      13. Boost Array, Nicolai Josuttis, 2002-2004.
      14. -
      15. +
      16. Standard Template Library Programmer's Guide, Hewlett-Packard Company, 1994.
      17. -
      18. +
      19. Boost.Ref, Jaakko Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002.
      20. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index c4122959..ecd22443 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -3,10 +3,10 @@ Sequence - + - + @@ -22,10 +22,13 @@
        PrevUpHomeNext
        -
        - +
        +
        + +
        +
        Concepts
        @@ -52,17 +55,17 @@

        Like MPL, the Sequence is a fundamental concept in Fusion. A Sequence may or may not actually - store or contain data. Container are - sequences that hold data. Views, on the + store or contain data. Container 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 + Sequence have an associated Iterator type that can be used to iterate through the Sequence's elements.

        -

        - - Header -

        +

        + + Header +

        #include <boost/fusion/sequence.hpp>
         #include <boost/fusion/include/sequence.hpp>
         
        diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html index 6e0609e5..7cff49ef 100644 --- a/doc/html/fusion/sequence/concepts.html +++ b/doc/html/fusion/sequence/concepts.html @@ -3,11 +3,12 @@ Concepts - + - - + +
    @@ -22,10 +23,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    Forward Sequence
    @@ -39,25 +43,31 @@

    Fusion Sequences are organized into a hierarchy of concepts.

    -
    - - Traversal -
    +

    + + 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 + 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 -
    +

    + + Associativity +

    - The Associative + The Associative Sequence concept is orthogonal to traversal. An Associative Sequence allows efficient retrieval of elements based on keys.

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 32cfa958..1c4f7d02 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -1,12 +1,14 @@ -Associative Sequence +Associative + Sequence - + - + @@ -22,15 +24,19 @@
    PrevUpHomeNext
    -
    - +
    + + Description +

    An Associative Sequence allows efficient retrieval of elements based on keys. Like associative sequences in MPL, @@ -43,36 +49,36 @@ 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
    +
    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 +
    + + Valid Expressions -
    +

    For any Associative Sequence the following expressions must be valid:

    @@ -84,236 +90,173 @@
    - - + - + - + +

    - - + - - + + +

    - - + - - + + +

    - - + - + - + +

    -

    +

    Expression -

    -
    -

    +

    Return type -

    -
    -

    +

    Type Requirements -

    -
    -

    +

    Runtime Complexity -

    -
    -

    - 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) - = o -

    -
    -

    +

    + at_key<K>(s) + = o +

    Any type -

    -
    -

    - 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. -

    -
    -

    +

    Constant -

    -
    -
    - - Result +
    + + Result Type Expressions -
    +
    - - + +

    - - + +

    - - + +

    - - + +

    -

    +

    Expression -

    -
    -

    +

    Compile Time Complexity -

    -
    -

    - 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 -

    -
    - +
    + + 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/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 244e27e3..7df699ee 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -1,13 +1,16 @@ -Bidirectional Sequence +Bidirectional + Sequence - + - - + +
    @@ -22,56 +25,64 @@
    PrevUpHomeNext
    -
    - +
    + + Description +

    - A Bidirectional Sequence is a Forward - Sequence whose iterators model Bidirectional + A Bidirectional Sequence is a Forward + Sequence whose iterators model Bidirectional Iterator.

    -
    - - Refinement +
    + + Refinement of -
    +

    - Forward Sequence + Forward Sequence

    -
    +

    Notation

    -
    s
    +
    s

    A Forward Sequence

    -
    S
    +
    S

    A Forward Sequence type

    -
    o
    +
    o

    An arbitrary object

    -
    e
    +
    e

    A Sequence element

    -
    - - Valid +
    + + Valid Expressions -
    +

    - In addition to the requirements defined in Forward + In addition to the requirements defined in Forward Sequence, for any Bidirectional Sequence the following must be met:

    @@ -82,190 +93,137 @@ - - + - + - + +

    - - + - - + + +

    - - + - - + + +

    - - + - - + + +

    - - + - + - + +

    -

    +

    Expression -

    -
    -

    +

    Return type -

    -
    -

    +

    Type Requirements -

    -
    -

    +

    Runtime Complexity -

    -
    -

    - begin(s) -

    -
    -

    - Bidirectional +

    + begin(s) +

    + Bidirectional Iterator -

    -
    -

    -

    -
    -

    +

    +

    Constant -

    -
    -

    - end(s) -

    -
    -

    - Bidirectional +

    + end(s) +

    + Bidirectional Iterator -

    -
    -

    -

    -
    -

    +

    +

    Constant -

    -
    -

    - back(s) -

    -
    -

    +

    + back(s) +

    Any type -

    -
    -

    -

    -
    -

    +

    +

    Constant -

    -
    -

    - back(s) - = o -

    -
    -

    +

    + back(s) + = o +

    Any type -

    -
    -

    - 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. -

    -
    -

    +

    Constant -

    -
    -
    - - Result +
    + + Result Type Expressions -
    +
    - - + +

    - - + +

    - - + +

    - - + +

    -

    +

    Expression -

    -
    -

    +

    Compile Time Complexity -

    -
    -

    - 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 +
    + + Expression Semantics -
    +

    The semantics of an expression are defined only where they differ from, - or are not defined in Forward + or are not defined in Forward Sequence.

    @@ -274,49 +232,41 @@ - - + +

    - - + +
    -

    +

    Expression -

    -
    -

    +

    Semantics -

    -
    -

    - back(s) -

    -
    -

    - The last element in the sequence; see back. -

    -

    + back(s) +

    + The last element in the sequence; see back. +

    -
    - - Models -
    -
      -
    • std::pair
    • -
    • boost::array
    • -
    • vector
    • -
    • reverse_view
    • -
    • -iterator_range +
      + + Models +
      +
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 7eae6fa9..75785533 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -1,13 +1,15 @@ -Forward Sequence +Forward + Sequence - + - - + + @@ -22,15 +24,19 @@
      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. @@ -38,32 +44,32 @@ 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
      +
      s

      A Forward Sequence

      -
      S
      +
      S

      A Forward Sequence type

      -
      o
      +
      o

      An arbitrary object

      -
      e
      +
      e

      A Sequence element

      -
      - - Valid +
      + + Valid Expressions -
      +

      For any Forward Sequence the following expressions must be valid:

      @@ -75,383 +81,281 @@
      - - + - + - + +

      - - + - - + + +

      - - + - - + + +

      - - + - - + + +

      - - + - - + + +

      - - + - - + + +

      - - + - + - + +

      -

      +

      Expression -

      -
      -

      +

      Return type -

      -
      -

      +

      Type Requirements -

      -
      -

      +

      Runtime Complexity -

      -
      -

      - begin(s) -

      -
      -

      - Forward +

      + begin(s) +

      + Forward Iterator -

      -
      -

      -

      -
      -

      +

      +

      Constant -

      -
      -

      - end(s) -

      -
      -

      - Forward +

      + 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) - = o -

      -
      -

      +

      + front(s) + = o +

      Any type -

      -
      -

      - 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. -

      -
      -

      +

      Constant -

      -
    -
    - - Result +
    + + Result Type Expressions -
    +
    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    -

    +

    Expression -

    -
    -

    +

    Compile Time Complexity -

    -
    -

    - 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 +
    + + 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 -
    +
    + + Invariants +

    For any Forward Sequence s the following invariants always hold:

    -
    -
    - - Result +
    + + Result Type Expressions -
    +
    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    -

    +

    Expression -

    -
    -

    +

    Compile Time Complexity -

    -
    -

    - 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 -

    -
    - +
    + + Expression Semantics -
    +

    The semantics of an expression are defined only where they differ from, - or are not defined in Bidirectional + or are not defined in Bidirectional Sequence.

    @@ -306,49 +257,41 @@ - - + +

    - - + +
    -

    +

    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 -
    -
      -
    • std::pair
    • -
    • boost::array
    • -
    • vector
    • -
    • reverse_view
    • -
    • -iterator_range +
      + + Models +
      +
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 3556b04f..50577a23 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -3,10 +3,11 @@ Intrinsic - + - + @@ -22,34 +23,37 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +

      - Intrinsic form the essential interface of every Fusion Sequence. + Intrinsic 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] + Intrinsic functions, unlike Algorithms, + are not generic across the full Sequence + repertoire. They need to be implemented for each Fusion Sequence + [5] .

      -
      - - Header -
      +

      + + Header +

      #include <boost/fusion/sequence/intrinsic.hpp>
       #include <boost/fusion/include/intrinsic.hpp>
       


      -

      [5] +

      [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

      diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index 192d7ed5..e2b94ae0 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -3,10 +3,10 @@ Functions - + - + @@ -22,10 +22,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      begin
      end
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 9b082f85..a71a663e 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -3,10 +3,10 @@ at - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -
      -at -
      +
      +
      +
      +at +
      +
      +
      - - Description + + Description

      Returns the N-th element from the beginning of the sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -56,99 +59,82 @@ - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Random +

      + seq +

      + Model of Random Access Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      -

      - N -

      -
      -

      +

      + N +

      An MPL Integral Constant -

      -
      -

      +

      An index from the beginning of the sequence. -

      -
      - - Expression + + 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 + 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 + + Header
      #include <boost/fusion/sequence/intrinsic/at.hpp>
       #include <boost/fusion/include/at.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html index 672b860f..71e1f788 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html @@ -3,10 +3,10 @@ at_c - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -
      -at_c -
      +
      +
      +
      +at_c +
      +
      +
      - - Description + + Description

      Returns the N-th element from the beginning of the sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -56,99 +59,82 @@ - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Random +

      + seq +

      + Model of Random Access Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      -

      - N -

      -
      -

      +

      + N +

      An integral constant -

      -
      -

      +

      An index from the beginning of the sequence. -

      -
      - - Expression + + 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 + 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 + + Header
      #include <boost/fusion/sequence/intrinsic/at_c.hpp>
       #include <boost/fusion/include/at_c.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html index ce74b346..1843dfaa 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html @@ -3,10 +3,10 @@ at_key - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -
      -at_key -
      +
      +
      +
      +at_key +
      +
      +
      - - Description + + Description

      Returns the element associated with a Key from the sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -56,95 +59,78 @@ - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Associative +

      + seq +

      + Model of Associative Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      -

      - Key -

      -
      -

      +

      + Key +

      Any type -

      -
      -

      +

      The queried key. -

      -
      - - Expression + + 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 + 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 + + Header
      #include <boost/fusion/sequence/intrinsic/at_key.hpp>
       #include <boost/fusion/include/at_key.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html index 7fedb3db..6a90422e 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/back.html +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html @@ -3,10 +3,10 @@ back - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -
      -back -
      +
      +
      +
      +back +
      +
      +
      - - Description + + Description

      Returns the last element in the sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -56,76 +59,65 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Bidirectional +

      + seq +

      + Model of Bidirectional Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      - - Expression + + 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 + 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 + + Header
      #include <boost/fusion/sequence/intrinsic/back.hpp>
       #include <boost/fusion/include/back.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html index 3d8627f4..4d30a547 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html @@ -3,10 +3,10 @@ begin - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -
      -begin -
      +
      +
      +
      +begin +
      +
      +
      - - Description + + Description

      Returns an iterator pointing to the first element in the sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -56,77 +59,72 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Forward +

      + seq +

      + Model of Forward Sequence -

      -
      -

      +

      The sequence we wish to get an iterator from. -

      -
      - - Expression + + 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 + 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 + Semantics: Returns an iterator pointing to the first element in the sequence.

      - - Header + + Header
      #include <boost/fusion/sequence/intrinsic/begin.hpp>
       #include <boost/fusion/include/begin.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html index accf602b..5c410a05 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html @@ -3,10 +3,10 @@ empty - + - + @@ -22,30 +22,33 @@
      PrevUpHomeNext
      -
      -
      -empty -
      +
      +
      +
      +empty +
      +
      +
      - - Description + + 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 + + Synopsis
      template <typename Sequence>
      -typename result_of::empty<Sequence>::type
      +typename result_of::empty<Sequence>::type
       empty(Sequence const& seq);
       
      - - Parameters + + Parameters
      @@ -54,67 +57,56 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Forward +

      + seq +

      + Model of Forward Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/sequence/intrinsic/empty.hpp>
       #include <boost/fusion/include/empty.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html index 1a002a1b..1bcac953 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/end.html +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html @@ -3,10 +3,10 @@ end - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -
      -end -
      +
      +
      +
      +end +
      +
      +
      - - Description + + Description

      Returns an iterator pointing to one element past the end of the sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -56,77 +59,72 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Forward +

      + seq +

      + Model of Forward Sequence -

      -
      -

      +

      The sequence we wish to get an iterator from. -

      -
      - - Expression + + 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 + 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 + Semantics: Returns an iterator pointing to one element past the end of the sequence.

      - - Header + + Header
      #include <boost/fusion/sequence/intrinsic/end.hpp>
       #include <boost/fusion/include/end.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html index a485719f..78b58256 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/front.html +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html @@ -3,10 +3,10 @@ front - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -
      -front -
      +
      +
      +
      +front +
      +
      +
      - - Description + + Description

      Returns the first element in the sequence.

      - - Synopsis + + 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 + + Parameters
      @@ -56,76 +59,65 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Forward +

      + seq +

      + Model of Forward Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      - - Expression + + 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 + 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 + + Header
      #include <boost/fusion/sequence/intrinsic/front.hpp>
       #include <boost/fusion/include/front.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html index 1630c313..b2bae525 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html @@ -3,10 +3,10 @@ has_key - + - + @@ -22,31 +22,34 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + 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 + + 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 + + Parameters
      @@ -55,86 +58,69 @@ - - + - + +

      - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Associative +

      + seq +

      + Model of Associative Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      -

      - Key -

      -
      -

      +

      + Key +

      Any type -

      -
      -

      +

      The queried key. -

      -
      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/sequence/intrinsic/has_key.hpp>
       #include <boost/fusion/include/has_key.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html index a7275245..b83dce43 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/size.html +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html @@ -3,10 +3,10 @@ size - + - + @@ -22,29 +22,32 @@
      PrevUpHomeNext
      -
      -
      -size -
      +
      +
      +
      +size +
      +
      +
      - - Description + + Description

      - Returns a type convertible to int + Returns a type convertible to int that evaluates the number of elements in the sequence.

      - - Synopsis + + Synopsis
      template <typename Sequence>
      -typename result_of::size<Sequence>::type
      +typename result_of::size<Sequence>::type
       size(Sequence const& seq);
       
      - - Parameters + + Parameters
      @@ -53,67 +56,56 @@ - - + - + +

      - - + - + +

      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq -

      -
      -

      - Model of Forward +

      + seq +

      + Model of Forward Sequence -

      -
      -

      +

      The sequence we wish to investigate. -

      -
      - - Expression + + Expression Semantics
      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 + + Header
      #include <boost/fusion/sequence/intrinsic/size.hpp>
       #include <boost/fusion/include/size.hpp>
       
      - - Example + + 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/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html index 846e11c1..85d277c2 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html @@ -3,10 +3,10 @@ swap - + - + @@ -22,27 +22,30 @@
      PrevUpHomeNext
      -
      -
      -swap -
      +
      +
      +
      +swap +
      +
      +
      - - Description + + Description

      Performs an element by element swap of the elements in 2 sequences.

      - - Synopsis + + Synopsis
      template<typename Seq1, typename Seq2>
       void swap(Seq1& seq1, Seq2& seq2);
       
      - - Parameters + + Parameters
      @@ -51,68 +54,57 @@ - - + - + +

      - - + - + +

      -

      +

      Parameters -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - seq1, seq2 -

      -
      -

      - Models of Forward +

      + seq1, seq2 +

      + Models of Forward Sequence -

      -
      -

      +

      The sequences whos elements we wish to swap. -

      -
      - - Expression + + Expression Semantics
      swap(seq1, seq2);
       

      - Return type: void + Return type: void

      - Precondition: size(seq1) == size(seq2) + Precondition: size(seq1) == size(seq2)

      - Semantics: Calls swap(a1, b1) for corresponding elements in seq1 and seq2. + Semantics: Calls swap(a1, b1) for corresponding elements in seq1 and seq2.

      /sequence/intrinsic/swap.hpp>

      - - Example + + Example
      -
      vector<int, std::string> v1(1, "hello"), v2(2, "world");
      +
      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"));
      +assert(v1 == make_vector(2, "world"));
      +assert(v2 == make_vector(1, "hello"));
       
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html index 5867b7fe..8166d000 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html @@ -3,10 +3,10 @@ Metafunctions - + - + @@ -22,10 +22,13 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      begin
      end
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index 99bea1fd..c6409c32 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -3,10 +3,10 @@ at - + - + @@ -22,22 +22,25 @@
      PrevUpHomeNext
      -
      -
      -at -
      +
      +
      +
      +at +
      +
      +
      - - Description + + Description

      - Returns the result type of at - [6] + Returns the result type of at + [6] .

      - - Synopsis + + Synopsis
      template<
           typename Seq,
      @@ -48,101 +51,84 @@
       };
       
      -

      Table 1.25. Parameters

      -
      +

      Table 1.25. Parameters

      +
      - - + - + +

      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      -

      - N -

      -
      -

      +

      + N +

      An MPL Integral Constant -

      -
      -

      +

      Index of element -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/at.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 83f57d64..33968e9b 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -3,10 +3,10 @@ at_c - + - + @@ -22,22 +22,25 @@
      PrevUpHomeNext
      -
      -
      -at_c -
      +
      +
      +
      +at_c +
      +
      +
      - - Description + + Description

      - Returns the result type of at_c - [7] + Returns the result type of at_c + [7] .

      - - Synopsis + + Synopsis
      template<
           typename Seq,
      @@ -48,100 +51,83 @@
       };
       
      -

      Table 1.26. Parameters

      -
      +

      Table 1.26. Parameters

      +
      - - + - + +

      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      -

      - M -

      -
      -

      +

      + M +

      Positive integer index -

      -
      -

      +

      Index of element -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/at.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 018be677..4d39311c 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -3,10 +3,10 @@ at_key - + - + @@ -22,22 +22,25 @@
      PrevUpHomeNext
      -
      -
      -at_key -
      +
      +
      +
      +at_key +
      +
      +
      - - Description + + Description

      - Returns the result type of at_key - [8] + Returns the result type of at_key + [8] .

      - - Synopsis + + Synopsis
      template<
           typename Seq,
      @@ -48,102 +51,85 @@
       };
       
      -

      Table 1.30. Parameters

      -
      +

      Table 1.30. Parameters

      +
      - - + - + +

      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      -

      - Key -

      -
      -

      +

      + Key +

      Any type -

      -
      -

      +

      Key type -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/at_key.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index cc97fec5..f8750874 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -3,10 +3,10 @@ back - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      -
      -back -
      +
      +
      +
      +back +
      +
      +
      - - Description + + Description

      - Returns the result type of back. + Returns the result type of back.

      - - Synopsis + + Synopsis
      template<typename Seq>
       struct back
      @@ -44,73 +47,62 @@
       };
       
      -

      Table 1.23. Parameters

      -
      +

      Table 1.23. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/back.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html index 86bbb9d2..ed242471 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html @@ -3,10 +3,10 @@ begin - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      -
      -begin -
      +
      +
      +
      +begin +
      +
      +
      - - Description + + Description

      - Returns the result type of begin. + Returns the result type of begin.

      - - Synopsis + + Synopsis
      template<typename Seq>
       struct begin
      @@ -44,75 +47,64 @@
       };
       
      -

      Table 1.19. Parameters

      -
      +

      Table 1.19. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/begin.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html index c40d5389..614d9b33 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html @@ -3,10 +3,10 @@ empty - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      -
      -empty -
      +
      +
      +
      +empty +
      +
      +
      - - Description + + Description

      - Returns the result type of empty. + Returns the result type of empty.

      - - Synopsis + + Synopsis
      template<typename Seq>
       struct empty
      @@ -44,78 +47,67 @@
       };
       
      -

      Table 1.21. Parameters

      -
      +

      Table 1.21. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/empty.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html index d47b7db9..132a7bcc 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html @@ -3,10 +3,10 @@ end - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      -
      -end -
      +
      +
      +
      +end +
      +
      +
      - - Description + + Description

      - Returns the result type of end. + Returns the result type of end.

      - - Synopsis + + Synopsis
      template<typename Seq>
       struct end
      @@ -44,75 +47,64 @@
       };
       
      -

      Table 1.20. Parameters

      -
      +

      Table 1.20. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/end.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html index e67c3bf1..1490b953 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html @@ -3,10 +3,10 @@ front - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      -
      -front -
      +
      +
      +
      +front +
      +
      +
      - - Description + + Description

      - Returns the result type of front. + Returns the result type of front.

      - - Synopsis + + Synopsis
      template<typename Seq>
       struct front
      @@ -44,74 +47,63 @@
       };
       
      -

      Table 1.22. Parameters

      -
      +

      Table 1.22. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/front.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html index 68a1a669..ddb91f51 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html @@ -3,10 +3,10 @@ has_key - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      - +
      +
      + +
      +
      - - Description + + Description

      - Returns the result type of has_key. + Returns the result type of has_key.

      - - Synopsis + + Synopsis
      template<
           typename Seq,
      @@ -46,96 +49,79 @@
       };
       
      -

      Table 1.29. Parameters

      -
      +

      Table 1.29. Parameters

      +
      - - + - + +

      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
      -

      - Key -

      -
      -

      +

      + Key +

      Any type -

      -
      -

      +

      Key type -

      -
      +
      -
      - - Expression +
      + + Expression Semantics
      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.

      /sequence/intrinsic/has_key.hpp>

      - - Example + + 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/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html index 4267ca0b..0d379b65 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html @@ -3,10 +3,10 @@ size - + - + @@ -22,20 +22,23 @@
      PrevUpHomeNext
      -
      -
      -size -
      +
      +
      +
      +size +
      +
      +
      - - Description + + Description

      - Returns the result type of size. + Returns the result type of size.

      - - Synopsis + + Synopsis
      template<typename Seq>
       struct size
      @@ -44,74 +47,63 @@
       };
       
      -

      Table 1.24. Parameters

      -
      +

      Table 1.24. Parameters

      +
      - - + - + +

      - - + - + +

      -
      -

      +

      Parameter -

      -
      -

      +

      Requirement -

      -
      -

      +

      Description -

      -
      -

      - Seq -

      -
      -

      - A model of Forward +

      + Seq +

      + A model of Forward Sequence -

      -
      -

      +

      Argument sequence -

      -
    +
    -
    - - Expression +
    + + Expression Semantics
    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.

    /sequence/intrinsic/size.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html index 8c843266..3d52d217 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html @@ -3,10 +3,10 @@ swap - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    -
    -swap -
    +
    +
    +
    +swap +
    +
    +
    - - Description + + Description

    Returns the return type of swap.

    - - Synopsis + + Synopsis
    template<typename Seq1, typename Seq2>
     struct swap
    @@ -44,62 +47,51 @@
     };
     
    -

    Table 1.32. Parameters

    -
    +

    Table 1.32. Parameters

    +
    - - + - + +

    - - + - + +

    -
    -

    +

    Parameters -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Seq1, Seq2 -

    -
    -

    - Models of Forward +

    + Seq1, Seq2 +

    + Models of Forward Sequence -

    -
    -

    +

    The sequences being swapped -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    result_of::swap<Seq1, Seq2>::type
     

    - Return type: void. + Return type: void.

    - Semantics: Always returns void. + Semantics: Always returns void.

    /sequence/intrinsic/swap.hpp> diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index 9d77c556..5a8b0d69 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html @@ -3,10 +3,10 @@ value_at - + - + @@ -22,20 +22,23 @@

    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the actual type at a given index from the Sequence. + Returns the actual type at a given index from the Sequence.

    - - Synopsis + + Synopsis
    template<
         typename Seq,
    @@ -46,93 +49,76 @@
     };
     
    -

    Table 1.27. Parameters

    -
    +

    Table 1.27. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Seq -

    -
    -

    - A model of Forward +

    + Seq +

    + A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    - N -

    -
    -

    +

    + N +

    An MPL Integral Constant -

    -
    -

    +

    Index of element -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    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.

    /sequence/intrinsic/value_at.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html index 19596cc3..1697ff5c 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html @@ -3,10 +3,10 @@ value_at_c - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the actual type at a given index from the Sequence. + Returns the actual type at a given index from the Sequence.

    - - Synopsis + + Synopsis
    template<
         typename Seq,
    @@ -46,92 +49,75 @@
     };
     
    -

    Table 1.28. Parameters

    -
    +

    Table 1.28. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Seq -

    -
    -

    - A model of Forward +

    + Seq +

    + A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    - M -

    -
    -

    +

    + M +

    Positive integer index -

    -
    -

    +

    Index of element -

    -
    +
    -
    - - Expression +
    + + Expression Semantics
    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.

    /sequence/intrinsic/value_at.hpp>

    - - Example + + 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/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html index 2e86a594..28e784ec 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html @@ -3,10 +3,10 @@ value_at_key - + - + @@ -22,20 +22,23 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    - - Description + + Description

    - Returns the actual element type associated with a Key from the Sequence. + Returns the actual element type associated with a Key from the Sequence.

    - - Synopsis + + Synopsis
    template<
         typename Seq,
    @@ -46,93 +49,76 @@
     };
     
    -

    Table 1.31. Parameters

    -
    +

    Table 1.31. Parameters

    +
    - - + - + +

    - - + - + +

    - - + - + +

    -
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - Seq -

    -
    -

    - A model of Forward +

    + Seq +

    + A model of Forward Sequence -

    -
    -

    +

    Argument sequence -

    -
    -

    - Key -

    -
    -

    +

    + Key +

    Any type -

    -
    -

    +

    Key type -

    -
    + -
    - - Expression +
    + + Expression Semantics
    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.

    /sequence/intrinsic/value_at_key.hpp>

    - - Example + + 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/sequence/operator.html b/doc/html/fusion/sequence/operator.html index b5c33368..6c3f0e63 100644 --- a/doc/html/fusion/sequence/operator.html +++ b/doc/html/fusion/sequence/operator.html @@ -3,10 +3,10 @@ Operator - + - + @@ -22,16 +22,19 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    - These operators, like the Algorithms, + These operators, like the Algorithms, work generically on all Fusion sequences. All conforming Fusion sequences automatically get these operators for free.

    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index 76e2f9d7..6d7fa800 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -3,10 +3,10 @@ Comparison - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +

    - 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 -
    +
    + + Header +
    #include <boost/fusion/sequence/comparison.hpp>
     #include <boost/fusion/include/comparison.hpp>
     
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html index fded29fb..9a6f2d60 100644 --- a/doc/html/fusion/sequence/operator/comparison/equal.html +++ b/doc/html/fusion/sequence/operator/comparison/equal.html @@ -3,11 +3,12 @@ equal - + - - + +
    @@ -22,28 +23,31 @@
    PrevUpHomeNext
    -
    -
    -equal -
    +
    +
    +
    +equal +
    +
    +
    - - Description + + Description

    Compare two sequences for equality.

    - - Synopsis + + Synopsis
    template <typename Seq1, typename Seq2>
     bool
     operator==(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -52,59 +56,47 @@ - - + - + +

    - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - a, - b -

    -
    -

    - Instances of Sequence -

    -
    -

    - Sequence(s) to compare -

    -

    + a, + b +

    + Instances of Sequence +

    + Sequence(s) to compare +

    - - Expression + + Expression Semantics
    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.

    @@ -112,29 +104,29 @@ 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 + + Header
    #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - - Example + + 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/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html index 3d65efc2..da0e1ae3 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html @@ -1,13 +1,16 @@ -greater than +greater + than - + - - + + @@ -22,25 +25,29 @@
    PrevUpHomeNext
    -
    -

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
    template <typename Seq1, typename Seq2>
     bool
     operator>(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -49,59 +56,47 @@ - - + - + +

    - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - a, - b -

    -
    -

    - Instances of Sequence -

    -
    -

    - Sequence(s) to compare -

    -

    + a, + b +

    + Instances of Sequence +

    + Sequence(s) to compare +

    - - Expression + + Expression Semantics
    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.

    @@ -109,22 +104,22 @@ compile time error.

    - Semantics: Returns b < a. + Semantics: Returns b < a.

    - - Header + + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html index f8e46421..64541c98 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html @@ -1,12 +1,14 @@ -greater than equal +greater + than equal - + - + @@ -22,25 +24,29 @@
    PrevUpHomeNext
    -
    -

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
    template <typename Seq1, typename Seq2>
     bool
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -49,59 +55,47 @@ - - + - + +

    - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - a, - b -

    -
    -

    - Instances of Sequence -

    -
    -

    - Sequence(s) to compare -

    -

    + a, + b +

    + Instances of Sequence +

    + Sequence(s) to compare +

    - - Expression + + Expression Semantics
    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.

    @@ -109,22 +103,22 @@ compile time error.

    - Semantics: Returns !(a < b). + Semantics: Returns !(a < b).

    - - Header + + Header
    #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html index 9adf5b5f..65e36053 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html @@ -1,13 +1,16 @@ -less than +less + than - + - - + + @@ -22,25 +25,29 @@
    PrevUpHomeNext
    -
    -

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
    template <typename Seq1, typename Seq2>
     bool
     operator<(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -49,59 +56,47 @@ - - + - + +

    - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - a, - b -

    -
    -

    - Instances of Sequence -

    -
    -

    - Sequence(s) to compare -

    -

    + a, + b +

    + Instances of Sequence +

    + Sequence(s) to compare +

    - - Expression + + Expression Semantics
    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.

    @@ -109,24 +104,24 @@ compile time error.

    - Semantics: Returns the lexicographical - comparison of between a - and b. + Semantics: Returns the lexicographical + comparison of between a + and b.

    - - Header + + Header
    #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - - Example + + 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/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html index 66303246..d81c9247 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html @@ -1,13 +1,16 @@ -less than equal +less + than equal - + - - + + @@ -22,25 +25,29 @@
    PrevUpHomeNext
    -
    -

    Lexicographically compare two sequences.

    - - Synopsis + + Synopsis
    template <typename Seq1, typename Seq2>
     bool
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -49,59 +56,47 @@ - - + - + +

    - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - a, - b -

    -
    -

    - Instances of Sequence -

    -
    -

    - Sequence(s) to compare -

    -

    + a, + b +

    + Instances of Sequence +

    + Sequence(s) to compare +

    - - Expression + + Expression Semantics
    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.

    @@ -109,22 +104,22 @@ compile time error.

    - Semantics: Returns !(b < a). + Semantics: Returns !(b < a).

    - - Header + + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - - Example + + 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/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html index f16d4ab1..43bf5c9f 100644 --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html @@ -1,13 +1,15 @@ -not equal +not + equal - + - - + + @@ -22,25 +24,29 @@
    PrevUpHomeNext
    -
    -

    Compare two sequences for inequality.

    - - Synopsis + + Synopsis
    template <typename Seq1, typename Seq2>
     bool
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - - Parameters + + Parameters
    @@ -49,59 +55,47 @@ - - + - + +

    - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - a, - b -

    -
    -

    - Instances of Sequence -

    -
    -

    - Sequence(s) to compare -

    -

    + a, + b +

    + Instances of Sequence +

    + Sequence(s) to compare +

    - - Expression + + Expression Semantics
    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.

    @@ -109,24 +103,24 @@ compile time error.

    - Semantics: + Semantics:

    Returns !(a == b).

    - - Header + + Header
    #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - - Example + + 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/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index f6e009c7..575313ab 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -3,10 +3,10 @@
     
     I/O
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,58 +22,61 @@
     
    PrevUpHomeNext
    -
    -

    -I/O -

    +
    +
    +

    +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 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<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 + outputs the vector as: (1.0 2 Howdy folks!)

    The library defines three manipulators for changing the default behavior:

    -
    +

    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 +85,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:

    (1 2 3) [4:5]
    @@ -95,27 +98,27 @@
     

    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(':');
     std::cin >> j;
     

    - reads the data into the vector(s) i - and 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 + 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 -
    +
    + + Header +
    #include <boost/fusion/sequence/io.hpp>
     #include <boost/fusion/include/io.hpp>
     
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html index 16637f05..10be1c26 100644 --- a/doc/html/fusion/sequence/operator/i_o/in.html +++ b/doc/html/fusion/sequence/operator/i_o/in.html @@ -3,10 +3,10 @@ in - + - + @@ -22,29 +22,32 @@
    PrevUpHomeNext
    -
    -
    -in -
    +
    +
    +
    +in +
    +
    +
    - - Description + + Description

    - Read a Sequence from an input + Read a Sequence from an input stream.

    - - Synopsis + + Synopsis
    template <typename IStream, typename Sequence>
     IStream&
     operator>>(IStream& is, Sequence& seq);
     
    - - Parameters + + Parameters
    @@ -53,86 +56,68 @@ - - + - + +

    - - + - + +

    - - - + + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    is -

    -
    -

    +

    An input stream. -

    -
    -

    +

    Stream to extract information from. -

    -
    -

    +

    seq -

    -
    -

    - A Sequence. -

    -
    -

    +

    + A Sequence. +

    The sequence to read. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - - Example + + Example
    -
    vector<int, std::string, char> v;
    +
    vector<int, std::string, char> v;
     std::cin >> v;
     
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html index ff79fdd6..277292c9 100644 --- a/doc/html/fusion/sequence/operator/i_o/out.html +++ b/doc/html/fusion/sequence/operator/i_o/out.html @@ -3,10 +3,10 @@ out - + - + @@ -22,29 +22,32 @@
    PrevUpHomeNext
    -
    -
    -out -
    +
    +
    +
    +out +
    +
    +
    - - Description + + Description

    - Write a Sequence to an output + Write a Sequence to an output stream.

    - - Synopsis + + Synopsis
    template <typename OStream, typename Sequence>
     OStream&
     operator<<(OStream& os, Sequence& seq);
     
    - - Parameters + + Parameters
    @@ -53,86 +56,68 @@ - - + - + +

    - - + - + +

    - - - + + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    +

    os -

    -
    -

    +

    An output stream. -

    -
    -

    +

    Stream to write information to. -

    -
    -

    +

    seq -

    -
    -

    - A Sequence. -

    -
    -

    +

    + A Sequence. +

    The sequence to write. -

    -
    - - Expression + + Expression Semantics
    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 + + Header
    #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - - Example + + 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/support.html b/doc/html/fusion/support.html index 329f1cf0..7b36fd9c 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,10 +3,10 @@ Support - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +
    + +
    +
    is_sequence
    is_view
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 8402b285..232c6eda 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,10 +3,10 @@ category_of - + - + @@ -22,24 +22,27 @@
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    +
    + +
    +
    +

    + + Description +

    A metafunction that establishes the conceptual classification of a particular - Sequence or Iterator - (see Iterator Concepts and - Sequence Concepts). + Sequence or Iterator + (see Iterator Concepts and + Sequence Concepts).

    -
    - - Synopsis -
    +

    + + Synopsis +

    namespace traits
     {
         template <typename T>
    @@ -49,10 +52,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -60,49 +63,37 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type to query. -

    -
    -
    - - Expression +

    + + Expression Semantics -

    +
    typedef traits::category_of<T>::type category;
     

    - Return type: + Return type:

    For Iterators, the return type is derived from one of: @@ -153,23 +144,23 @@ }}

    - Semantics: Establishes the conceptual classification - of a particular Sequence or Iterator. + Semantics: Establishes the conceptual classification + of a particular Sequence or Iterator.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    -
    - - Example -
    +

    + + 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 e0241734..c7bb56ad 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -3,10 +3,10 @@ deduce - + - + @@ -22,34 +22,37 @@
    PrevUpHomeNext
    -
    -

    -deduce -

    -
    - - Description -
    +
    +
    +

    +deduce +

    +
    +
    +

    + + Description +

    - Metafunction to apply element + 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). + 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 -
    +

    + + Header +

    #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

    namespace traits
     {
         template <typename T>
    @@ -59,10 +62,10 @@
         };
     }
     
    -
    - - Example -
    +

    + + Example +

    template <typename T>
     struct holder
     {
    @@ -79,11 +82,11 @@
         return holder<T>(a);
     }
     
    -
    - - See also -
    - +

    + + See also +

    +
    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index dfaec85e..91e5103d 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,10 +3,10 @@ deduce_sequence - + - + @@ -22,32 +22,37 @@
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    +
    + +
    +
    +

    + + Description +

    - Applies element - conversion to each element in a Forward - Sequence. The resulting type is a Random + 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 -
    +

    + + Header +

    #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

    namespace traits
     {
         template <class Sequence>
    @@ -57,10 +62,10 @@
         };
     }
     
    -
    - - Example -
    +

    + + Example +

    template <class Seq>
     struct holder
     {
    @@ -72,18 +77,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 -
    - +

    + + See also +

    +
    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index cefb2073..6d1a85e1 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,10 +3,10 @@ is_sequence - + - + @@ -22,25 +22,28 @@
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    +
    + +
    +
    +

    + + 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 -
    +

    + + Synopsis +

    namespace traits
     {
         template <typename T>
    @@ -50,10 +53,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -61,74 +64,62 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type to query. -

    -
    -
    - - Expression +

    + + Expression Semantics -

    +
    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 -
    +

    + + Header +

    #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    -
    - - Example -
    +

    + + 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 5a9e1fb1..4f935e6f 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -3,10 +3,10 @@ is_view - + - + @@ -22,28 +22,31 @@
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    +
    + +
    +
    +

    + + 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 -
    +

    + + Synopsis +

    namespace traits
     {
         template <typename T>
    @@ -53,10 +56,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -64,74 +67,62 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type to query. -

    -
    -
    - - Expression Semantics -
    +

    + + 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 -
    +

    + + Header +

    #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    -
    - - Example -
    +

    + + 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;
    +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 d488d98b..29681901 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -3,10 +3,10 @@ pair - + - + @@ -22,25 +22,28 @@
    PrevUpHomeNext
    -
    -

    -pair -

    -
    - - Description -
    +
    +
    +

    +pair +

    +
    +
    +

    + + 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 -
    +

    + + Synopsis +

    template <typename First, typename Second>
     struct pair;
     
    @@ -60,276 +63,212 @@
     typename result_of::make_pair<First,Second>::type
     make_pair(Second const &);
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    - - + +

    - - + +

    - - + +

    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    First -

    -
    -

    +

    The first type. This is purely a type. No data is held. -

    -
    -

    +

    Second -

    -
    -

    +

    The second type. This contains data. -

    -
    -
    +

    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 -
    +

    + + Expression Semantics +

    - - + +

    - - + + - - + + - - + +

    - - + + - - + + - - + + - - + + - - +

    + - - + + - - + + - - + +

    - - + +

    -

    +

    Expression -

    -
    -

    +

    Semantics -

    -
    -

    - P::first_type -

    -
    -

    - The 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_type -

    -
    -

    - The 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() -

    -
    -

    +

    + 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.second -

    -
    -

    - Get the data from p1. -

    -

    + p.second +

    + Get the data from p1. +

    -

    - p = - p2 -

    -
    -

    - Assigns 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 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. -

    -

    + o << + p +

    + Output p to output + stream, o. +

    -

    - i >> - p -

    -
    -

    - Input p from input - stream, i. -

    -

    + i >> + p +

    + Input p from input + stream, i. +

    -

    - p == - p2 -

    -
    -

    +

    + p == + p2 +

    Tests two pairs for equality. -

    -
    -

    - p != - p2 -

    -
    -

    +

    + p != + p2 +

    Tests two pairs for inequality. -

    -
    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    -
    - - Example -
    +

    + + Example +

    pair<int, char> p('X');
     std::cout << p << std::endl;
     std::cout << make_pair<int>('X') << std::endl;
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 1d324467..0883b982 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -3,10 +3,10 @@
     
     tag_of
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,28 +22,31 @@
     
    PrevUpHomeNext
    -
    -

    -tag_of -

    -
    - - Description -
    +
    +
    +

    +tag_of +

    +
    +
    +

    + + Description +

    All conforming Fusion sequences and iterators have an associated tag type. - The purpose of the tag is to enable tag - dispatching from Intrinsic + 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.

    -
    - - Synopsis -
    +

    + + Synopsis +

    namespace traits
     {
         template<typename Sequence>
    @@ -53,10 +56,10 @@
         };
     }
     
    -
    - - Parameters -
    +

    + + Parameters +

    @@ -64,68 +67,56 @@ - - + - + +

    - - + - + +

    -

    +

    Parameter -

    -
    -

    +

    Requirement -

    -
    -

    +

    Description -

    -
    -

    - T -

    -
    -

    +

    + T +

    Any type -

    -
    -

    +

    The type to query. -

    -
    -
    - - Expression Semantics -
    +

    + + 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 -
    +

    + + Header +

    #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/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;
    +

    + + 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;
     
     BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
     BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
    diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html
    index 85f69cb8..9abb1754 100644
    --- a/doc/html/fusion/tuple.html
    +++ b/doc/html/fusion/tuple.html
    @@ -3,10 +3,10 @@
     
     Tuple
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,10 +22,13 @@
     
    PrevUpHomeNext
    -
    -

    -Tuple -

    +
    +
    +

    +Tuple +

    +
    +
    Class template tuple
    @@ -44,12 +47,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/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 663aec85..702ce257 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -3,10 +3,10 @@ Class template tuple - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    - +
    +

    Fusion's implementation of the TR1 - Tuple is also a fusion Forward + 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 + Currently tuple is basically a synonym for vector, although this may be changed in future releases of fusion.

    -
    - - Synopsis -
    +

    + + Synopsis +

    template<
         typename T1 = unspecified,
         typename T2 = unspecified,
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 90fb7d32..343d67bf 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -3,11 +3,12 @@
     
     Construction
     
    -
    +
     
     
    -
    -
    +
    +
     
     
     
    @@ -22,14 +23,17 @@
     
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    +
    + +
    +
    +
    + + Description +

    The TR1 Tuple type provides a default constructor, a constructor that takes @@ -37,34 +41,34 @@ copy constructor. The details of the various constructors are described in this section.

    -
    - - Specification -
    -
    +
    + + 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 + The type of the ith element of a tuple

    -
    Pi
    +
    Pi

    - The type of the ith + The type of the ith parameter

    @@ -72,45 +76,45 @@
    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/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 60288b37..109030be 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -1,13 +1,16 @@ -Element access +Element + access - + - - + +
    @@ -22,59 +25,63 @@
    PrevUpHomeNext
    -
    - +
    + + 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 -
    +
    + + Specification +
    template<int I, T>
     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/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html index f1c5cd78..1ac49290 100644 --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html @@ -1,12 +1,14 @@ -Relational operators +Relational + operators - + - + @@ -22,47 +24,51 @@
    PrevUpHomeNext
    -
    - +
    + + Description +

    The TR1 Tuple provides the standard boolean relational operators.

    -
    - - Specification -
    -
    +
    + + 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 + The type of the ith element of a tuple

    -
    Pi
    +
    Pi

    - The type of the ith + The type of the ith parameter

    @@ -74,19 +80,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,
              typename U1, typename U2, ..., typename UN>
    @@ -95,16 +105,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,
              typename U1, typename U2, ..., typename UN>
    @@ -113,14 +125,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,
              typename U1, typename U2, ..., typename UN>
    @@ -129,14 +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,
              typename U1, typename U2, ..., typename UN>
    @@ -145,15 +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,
              typename U1, typename U2, ..., typename UN>
    @@ -162,14 +180,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/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 5125a226..91851959 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -1,13 +1,15 @@ -Tuple creation functions +Tuple + creation functions - + - - + +
    @@ -22,44 +24,48 @@
    PrevUpHomeNext
    -
    - +
    + + 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 -
    +
    + + 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. + 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/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html index dda1f7aa..24589a52 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html @@ -1,13 +1,16 @@ -Tuple helper classes +Tuple + helper classes - + - - + +
    @@ -22,51 +25,55 @@
    PrevUpHomeNext
    -
    - +
    + + Description +

    The TR1 Tuple provides 2 helper traits, for compile time access to the tuple size, and the element types.

    -
    - - Specification -
    +
    + + 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.

    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html index 0c0d0512..c7604ff7 100644 --- a/doc/html/fusion/tuple/pairs.html +++ b/doc/html/fusion/tuple/pairs.html @@ -3,10 +3,11 @@ Pairs - + - + @@ -22,49 +23,52 @@
    PrevUpHomeNext
    -
    -

    -Pairs -

    -
    - - Description -
    +
    +
    +

    +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 -
    +

    + + 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

    template<int I, typename T1, typename T2>
    @@ -74,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/fusion/view.html b/doc/html/fusion/view.html index 2dfa641a..0f332aea 100644 --- a/doc/html/fusion/view.html +++ b/doc/html/fusion/view.html @@ -3,10 +3,10 @@ View - + - + @@ -22,10 +22,13 @@
    PrevUpHomeNext
    -
    -

    -View -

    +
    +
    +

    +View +

    +
    +
    single_view
    filter_view
    @@ -45,10 +48,10 @@ sequence(s) are actually accessed. Views' lazy nature make them very cheap to copy and be passed around by value.

    -

    - - Header -

    +

    + + Header +

    #include <boost/fusion/view.hpp>
     #include <boost/fusion/include/view.hpp>
     
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html index f52663ac..7256cf97 100644 --- a/doc/html/fusion/view/filter_view.html +++ b/doc/html/fusion/view/filter_view.html @@ -3,10 +3,10 @@ filter_view - + - + @@ -22,39 +22,42 @@
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    +
    + +
    +
    +

    + + 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 -
    +

    + + Header +

    #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

    template <typename Sequence, typename Pred>
     struct filter_view;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -62,88 +65,74 @@ - - + - + +

    - - + - +

    + - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    - Sequence -

    -
    -

    - A Forward +

    + Sequence +

    + A Forward Sequence -

    -
    -

    -

    -

    +

    -

    - Pred -

    -
    -

    - Unary Metafunction returning an mpl::bool_ -

    -
    -

    -

    -

    + Pred +

    + Unary Metafunction returning an mpl::bool_ +

    +

    -
    - - Model of -
    - -
    +

    + + Model of +

    + +

    Notation

    -
    F
    +
    F

    - A filter_view type + A filter_view type

    -
    f, - f2
    +
    f, + f2

    - Instances of filter_view + Instances of filter_view

    -
    s
    +
    s

    - A Forward Sequence + A Forward Sequence

    -
    - - Expression Semantics -
    +

    + + Expression Semantics +

    Semantics of an expression is defined only where it differs from, or is not - defined in Forward + defined in Forward Sequence.

    @@ -152,71 +141,55 @@ - - + +

    - - + + - - + + - - + +
    -

    +

    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 -
    +

    + + Example +

    using boost::mpl::_;
     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/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 259037b1..dab5178b 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -3,10 +3,10 @@
     
     iterator_range
     
    -
    +
     
     
    -
    +
     
     
     
    @@ -22,36 +22,39 @@
     
    PrevUpHomeNext
    -
    - -
    - - Description -
    +
    +
    + +
    +
    +

    + + Description +

    - iterator_range presents a + iterator_range presents a sub-range of its underlying sequence delimited by a pair of iterators.

    -
    - - Header -
    +

    + + Header +

    #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    -
    - - Synopsis -
    +

    + + Synopsis +

    template <typename First, typename Last>
     struct iterator_range;
     
    -
    - - Template parameters -
    +

    + + Template parameters +

    @@ -59,99 +62,85 @@ - - + - + +

    - - - + + + - - - + + +
    -

    +

    Parameter -

    -
    -

    +

    Description -

    -
    -

    +

    Default -

    -
    -

    - First -

    -
    -

    - A fusion Iterator -

    -
    -

    -

    -

    + First +

    + A fusion Iterator +

    +

    -

    - Last -

    -
    -

    - A fusion Iterator -

    -
    -

    -

    -

    + Last +

    + A fusion Iterator +

    +

    -
    - - Model of -
    -
    • -Forward Sequence, - Bidirectional - Sequence or Random +

      + + Model of +

      +
      -
      +

      Notation

      -
      IR
      +
      IR

      - An iterator_range type + An iterator_range type

      -
      f
      +
      f

      - An instance of First + An instance of First

      -
      l
      +
      l

      - An instance of Last + An instance of Last

      -
      ir, - ir2
      +
      ir, + ir2

      - Instances of iterator_range + Instances of iterator_range

      -
      - - Expression +

      + + Expression Semantics -

      +

      Semantics of an expression is defined only where it differs from, or is not - defined in Forward + defined in Forward Sequence.

      @@ -160,76 +149,60 @@ - - + +

      - - + + - - + + - - + +
      -

      +

      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 -
      +

      + + 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/view/joint_view.html b/doc/html/fusion/view/joint_view.html
      index bf3a51ea..4ec643f8 100644
      --- a/doc/html/fusion/view/joint_view.html
      +++ b/doc/html/fusion/view/joint_view.html
      @@ -3,10 +3,10 @@
       
       joint_view
       
      -
      +
       
       
      -
      +
       
       
       
      @@ -22,36 +22,39 @@
       
      PrevUpHomeNext
      -
      - -
      - - Description -
      +
      +
      + +
      +
      +

      + + Description +

      - joint_view presents a view + joint_view presents a view which is a concatenation of two sequences.

      -
      - - Header -
      +

      + + Header +

      #include <boost/fusion/view/joint_view.hpp>
       #include <boost/fusion/include/joint_view.hpp>
       
      -
      - - Synopsis -
      +

      + + Synopsis +

      template <typename Sequence1, typename Sequence2>
       struct joint_view;
       
      -
      - - Template parameters -
      +

      + + Template parameters +

      @@ -59,93 +62,79 @@ - - + - + +

      - - + - +

      + - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Description -

      -
      -

      +

      Default -

      -
      -

      - Sequence1 -

      -
      -

      - A Forward +

      + Sequence1 +

      + A Forward Sequence -

      -
      -

      -

      -

      +

      -

      - Sequence2 -

      -
      -

      - A Forward +

      + Sequence2 +

      + A Forward Sequence -

      -
      -

      -

      -

      +

      -
      - - Model of -
      - -
      +

      + + Model of +

      + +

      Notation

      -
      JV
      +
      JV

      - A joint_view type + A joint_view type

      -
      s1
      +
      s1

      - An instance of Sequence1 + An instance of Sequence1

      -
      s2
      +
      s2

      - An instance of Sequence2 + An instance of Sequence2

      -
      jv, - jv2
      +
      jv, + jv2

      - Instances of joint_view + Instances of joint_view

      -
      - - Expression Semantics -
      +

      + + Expression Semantics +

      Semantics of an expression is defined only where it differs from, or is not - defined in Forward + defined in Forward Sequence.

      @@ -154,72 +143,56 @@ - - + +

      - - + + - - + + - - + +
      -

      +

      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 -
      -
      vector<int, char> v1(3, 'x');
      -vector<std::string, int> v2("hello", 123);
      +

      + + Example +

      +
      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/view/nview.html b/doc/html/fusion/view/nview.html index 1d2684f3..c571a6ef 100644 --- a/doc/html/fusion/view/nview.html +++ b/doc/html/fusion/view/nview.html @@ -3,10 +3,10 @@ nview - + - + @@ -22,32 +22,35 @@
      PrevUpHomeNext
      -
      -

      -nview -

      -
      - - Description -
      +
      +
      +

      +nview +

      +
      +
      +

      + + Description +

      - nview presents a view which - iterates over a given Sequence in - a specified order. An nview - is constructed from an arbitrary Sequence + nview presents a view which + iterates over a given Sequence in + a specified order. An nview + is constructed from an arbitrary Sequence and a list of indicies specifying the elements to iterate over.

      -
      - - Header -
      +

      + + Header +

      #include <boost/fusion/view/nview.hpp>
       #include <boost/fusion/include/nview.hpp>
       
      -
      - - Synopsis -
      +

      + + Synopsis +

      template <typename Sequence, typename Indicies>
       struct nview;
       
      @@ -55,10 +58,10 @@
       typename result_of::nview<Sequence, I1, I2, ...>::type
       as_nview(Sequence& s);
       
      -
      - - Template parameters -
      +

      + + Template parameters +

      @@ -66,110 +69,89 @@ - - + - + +

      - - + - +

      + - - + - +

      + - - + - +

      +
      -

      +

      Parameter -

      -
      -

      +

      Description -

      -
      -

      +

      Default -

      -
      -

      - Sequence -

      -
      -

      - An arbitrary Fusion Forward +

      + Sequence +

      + An arbitrary Fusion Forward Sequence -

      -
      -

      -

      -

      +

      -

      - Indicies -

      -
      -

      - A mpl::vector_c<int, ...> holding the indicies defining +

      + Indicies +

      + A mpl::vector_c<int, ...> holding the indicies defining the required iteration order. -

      -
      -

      -

      -

      +

      -

      - I1, I2, I3... -

      -
      -

      +

      + I1, I2, I3... +

      A list of integers specifying the required iteration order. -

      -
      -

      - INT_MAX for I2, I3... -

      -

      + INT_MAX for I2, I3... +

      -
      - - Model of -
      -
      • -Random - Access Sequence (see Sequence +

        + + Model of +

        + -
        +

        Notation

        -
        NV
        +
        NV

        - A nview type + A nview type

        -
        s
        +
        s

        - An instance of Sequences + An instance of Sequences

        -
        nv1, - nv2
        +
        nv1, + nv2

        - Instances of NV + Instances of NV

        -
        - - Expression Semantics -
        +

        + + Expression Semantics +

        Semantics of an expression is defined only where it differs from, or is not - defined in Random + defined in Random Access Sequence.

        @@ -178,72 +160,56 @@ - - + +

        - - + +

        - - + + - - + +
        -

        +

        Expression -

        -
        -

        +

        Semantics -

        -
        -

        - NV(s) -

        -
        -

        - Creates an nview +

        + NV(s) +

        + Creates an nview given a sequence and a list of indicies. -

        -
        -

        - NV(nv1) -

        -
        -

        - Copy constructs an nview - from another nview, - nv1. -

        -

        + NV(nv1) +

        + Copy constructs an nview + from another nview, + nv1. +

        -

        - nv1 = - nv2 -

        -
        -

        - Assigns to an nview, - nv1, from another - nview, nv2. -

        -

        + nv1 = + nv2 +

        + Assigns to an nview, + nv1, from another + nview, nv2. +

        - The nview internally stores - a Fusion vector - of references to the elements of the original Fusion Sequence + The nview internally stores + a Fusion vector + of references to the elements of the original Fusion Sequence

        -
        - - Example -
        -
        typedef vector<int, char, double> vec;
        +

        + + Example +

        +
        typedef vector<int, char, double> vec;
         typedef mpl::vector_c<int, 2, 1, 0, 2, 0> indicies;
         
         vec v1(1, 'c', 2.0);
        diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
        index dacdc1da..61d7a51a 100644
        --- a/doc/html/fusion/view/reverse_view.html
        +++ b/doc/html/fusion/view/reverse_view.html
        @@ -3,10 +3,10 @@
         
         reverse_view
         
        -
        +
         
         
        -
        +
         
         
         
        @@ -22,33 +22,36 @@
         
        PrevUpHomeNext
        -
        - +
        +
        + +
        +

        - reverse_view presents a reversed + 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 -
        +

        + + Header +

        #include <boost/fusion/view/reverse_view.hpp>
         #include <boost/fusion/include/reverse_view.hpp>
         
        -
        - - Synopsis -
        +

        + + Synopsis +

        template <typename Sequence>
         struct reverse_view;
         
        -
        - - Template parameters -
        +

        + + Template parameters +

        @@ -56,72 +59,63 @@ - - + - + +

        - - + - +

        +
        -

        +

        Parameter -

        -
        -

        +

        Description -

        -
        -

        +

        Default -

        -
        -

        - Sequence -

        -
        -

        - A Bidirectional +

        + Sequence +

        + A Bidirectional Sequence -

        -
        -

        -

        -

        +

        -
        - - Model of -
        -
        • Bidirectional +

          + + Model of +

          + -
          +

          Notation

          -
          RV
          +
          RV

          - A reverse_view type + A reverse_view type

          -
          s
          +
          s

          - An instance of Sequence + An instance of Sequence

          -
          rv, - rv2
          +
          rv, + rv2

          - Instances of reverse_view + Instances of reverse_view

          -
          - - Expression +

          + + Expression Semantics -

          +

          Semantics of an expression is defined only where it differs from, or is not - defined in Bidirectional + defined in Bidirectional Sequence.

          @@ -130,67 +124,51 @@ - - + +

          - - + + - - + + - - + +
          -

          +

          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 -
          -
          typedef vector<int, short, double> vector_type;
          +

          + + Example +

          +
          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/view/single_view.html b/doc/html/fusion/view/single_view.html
          index 9153a177..71f85da0 100644
          --- a/doc/html/fusion/view/single_view.html
          +++ b/doc/html/fusion/view/single_view.html
          @@ -3,10 +3,10 @@
           
           single_view
           
          -
          +
           
           
          -
          +
           
           
           
          @@ -22,32 +22,35 @@
           
          PrevUpHomeNext
          -
          - +
          +
          + +
          +

          - single_view is a view into + single_view is a view into a value as a single element sequence.

          -
          - - Header -
          +

          + + Header +

          #include <boost/fusion/view/single_view.hpp>
           #include <boost/fusion/include/single_view.hpp>
           
          -
          - - Synopsis -
          +

          + + Synopsis +

          template <typename T>
           struct single_view;
           
          -
          - - Template parameters -
          +

          + + Template parameters +

          @@ -55,69 +58,59 @@ - - + - + +

          - - + - +

          +
          -

          +

          Parameter -

          -
          -

          +

          Description -

          -
          -

          +

          Default -

          -
          -

          - T -

          -
          -

          +

          + T +

          Any type -

          -
          -

          -

          -

          +

          -
          - - Model of -
          - -
          +

          + + Model of +

          + +

          Notation

          -
          S
          +
          S

          - A single_view type + A single_view type

          -
          s, - s2
          +
          s, + s2

          - Instances of single_view + Instances of single_view

          -
          x
          +
          x

          - An instance of T + An instance of T

          -
          - - Expression Semantics -
          +

          + + Expression Semantics +

          Semantics of an expression is defined only where it differs from, or is not - defined in Forward + defined in Forward Sequence.

          @@ -126,66 +119,50 @@ - - + +

          - - + + - - + + - - + +
          -

          +

          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 -
          +

          + + Example +

          single_view<int> view(3);
           std::cout << view << std::endl;
           
          diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html index 36cd83c9..94501c95 100644 --- a/doc/html/fusion/view/transform_view.html +++ b/doc/html/fusion/view/transform_view.html @@ -3,10 +3,10 @@ transform_view - + - + @@ -22,46 +22,49 @@
          PrevUpHomeNext
          -
          - +
          +
          + +
          +

          - The unary version of 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 + 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 + or function pointer. The transform_view + inherits the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence or sequences.

          -
          - - Header -
          +

          + + Header +

          #include <boost/fusion/view/transform_view.hpp>
           #include <boost/fusion/include/transform_view.hpp>
           
          -
          - - Synopsis -
          +

          + + Synopsis +

          - Unary Version + Unary Version

          template <typename Sequence, typename F1>
           struct transform_view;
           

          - Binary Version + Binary Version

          template <typename Sequence1, typename Sequence2, typename F2>
           struct transform_view;
           
          -
          - - Template parameters -
          +

          + + Template parameters +

          @@ -69,181 +72,154 @@ - - + - + +

          - - + - +

          + - - + - +

          + - - + - +

          + - - + - +

          + - - + - +

          +
          -

          +

          Parameter -

          -
          -

          +

          Description -

          -
          -

          +

          Default -

          -
          -

          - Sequence -

          -
          -

          - A Forward +

          + Sequence +

          + A Forward Sequence -

          -
          -

          -

          -

          +

          -

          - Sequence1 -

          -
          -

          - A Forward +

          + Sequence1 +

          + A Forward Sequence -

          -
          -

          -

          -

          +

          -

          - Sequence2 -

          -
          -

          - A Forward +

          + Sequence2 +

          + A Forward Sequence -

          -
          -

          -

          -

          +

          -

          - F1 -

          -
          -

          - 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 +

          + F1 +

          + 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 +

          + 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. -

          -
          -

          -

          -

          +

          -
          - - Model of -
          -
          • -Forward Sequence, - Bidirectional - Sequence or Random +

            + + Model of +

            +
            -
            +

            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

            -
            f1
            +
            f1

            - An instance of F1 + An instance of F1

            -
            f2
            +
            f2

            - An instance of F2 + An instance of F2

            -
            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 +

            + + 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) + defined in Forward + Sequence, Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence or sequences.

            @@ -252,83 +228,63 @@ - - + +

            - - + + - - + + - - + + - - + +
            -

            +

            Expression -

            -
            -

            +

            Semantics -

            -
            -

            - UTV(s, f1) -

            -
            -

            - Creates a unary transform_view - given sequence, s - and unary function object or function pointer, f1. -

            -

            + 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. -

            -

            + 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(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 -
            +

            + + Example +

            struct square
             {
                 template<typename Sig>
            @@ -346,7 +302,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/view/zip_view.html b/doc/html/fusion/view/zip_view.html
            index 653cc549..c9204f7f 100644
            --- a/doc/html/fusion/view/zip_view.html
            +++ b/doc/html/fusion/view/zip_view.html
            @@ -3,10 +3,10 @@
             
             zip_view
             
            -
            +
             
             
            -
            +
             
             
             
            @@ -22,39 +22,42 @@
             
            PrevUpHomeNext
            -
            - -
            - - Description -
            +
            +
            + +
            +
            +

            + + 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 + 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 -
            +

            + + Header +

            #include <boost/fusion/view/zip_view.hpp>
             #include <boost/fusion/include/zip_view.hpp>
             
            -
            - - Synopsis -
            +

            + + Synopsis +

            template <typename Sequences>
             struct zip_view;
             
            -
            - - Template parameters -
            +

            + + Template parameters +

            @@ -62,77 +65,70 @@ - - + - + +

            - - + - +

            +
            -

            +

            Parameter -

            -
            -

            +

            Description -

            -
            -

            +

            Default -

            -
            -

            - Sequences -

            -
            -

            - A Forward +

            + Sequences +

            + A Forward Sequence of references to other Fusion _sequence_s -

            -
            -

            -

            -

            +

            -
            - - Model of -
            -
            • -Forward Sequence, - Bidirectional - Sequence or Random +

              + + Model of +

              +
              -
              +

              Notation

              -
              ZV
              +
              ZV

              - A zip_view type + A zip_view type

              -
              s
              +
              s

              - An instance of Sequences + An instance of Sequences

              -
              zv1, - zv2
              +
              zv1, + zv2

              - Instances of ZV + Instances of ZV

              -
              - - Expression Semantics -
              +

              + + Expression Semantics +

              Semantics of an expression is defined only where it differs from, or is not - defined in Forward + defined in Forward Sequence.

              @@ -141,71 +137,55 @@ - - + +

              - - + +

              - - + + - - + +
              -

              +

              Expression -

              -
              -

              +

              Semantics -

              -
              -

              - ZV(s) -

              -
              -

              - Creates a zip_view +

              + 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 -
              -
              typedef vector<int,int> vec1;
              -typedef vector<char,char> vec2;
              +

              + + Example +

              +
              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/index.html b/doc/html/index.html index 83e07fad..d329753f 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Fusion 2.0 - + @@ -18,8 +18,9 @@
              Next
              -
              -
              +
              +
              +

              Chapter 1. Fusion 2.0

              @@ -33,13 +34,13 @@

              -
              -

              +

              Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -

              -
              -
              +

              +
              +
              +

              Table of Contents

              @@ -241,7 +242,7 @@
              - +

              Last revised: September 29, 2009 at 14:44:20 GMT

              Last revised: October 11, 2009 at 16:05:02 GMT


              diff --git a/test/sequence/nview.cpp b/test/sequence/nview.cpp index b8729cea..e8110f79 100644 --- a/test/sequence/nview.cpp +++ b/test/sequence/nview.cpp @@ -28,48 +28,48 @@ BOOST_FUSION_ADAPT_STRUCT( (double, double_) ); -using namespace boost::fusion; +namespace fusion = boost::fusion; template -bool check_size(Sequence& s, int seqsize) +bool check_size(Sequence const& s, int seqsize) { - return size(s) == seqsize; + return fusion::size(s) == seqsize; } template -bool check_deref_begin(Sequence& s, T val) +bool check_deref_begin(Sequence const& s, T val) { - return deref(begin(s)) == val; + return fusion::deref(fusion::begin(s)) == val; } template -bool check_deref_next(Sequence& s, T val) +bool check_deref_next(Sequence const& s, T val) { - return deref(next(begin(s))) == val; + return fusion::deref(fusion::next(fusion::begin(s))) == val; } template -bool check_deref_advance(Sequence& s, T val) +bool check_deref_advance(Sequence const& s, T val) { - return deref(advance_c(begin(s))) == val; + return fusion::deref(fusion::advance_c(fusion::begin(s))) == val; } template -bool check_deref_prior(Sequence& s, T val) +bool check_deref_prior(Sequence const& s, T val) { - return deref(prior(end(s))) == val; + return fusion::deref(fusion::prior(fusion::end(s))) == val; } template -bool check_at(Sequence& s, T val) +bool check_at(Sequence const& s, T val) { - return at_c(s) == val; + return fusion::at_c(s) == val; } template -bool check_distance(Sequence& s, int val) +bool check_distance(Sequence const& s, int val) { - return distance(begin(s), end(s)) == val; + return fusion::distance(fusion::begin(s), fusion::end(s)) == val; } int main() @@ -79,6 +79,8 @@ int main() t.string_ = "test"; t.double_ = 2.0; + using fusion::as_nview; + // check size() { BOOST_TEST(check_size(as_nview<0>(t), 1)); diff --git a/test/sequence/test_deduce_sequence.cpp b/test/sequence/test_deduce_sequence.cpp new file mode 100644 index 00000000..d137cd30 --- /dev/null +++ b/test/sequence/test_deduce_sequence.cpp @@ -0,0 +1,16 @@ + +#include +#include + +typedef boost::fusion::traits::deduce_sequence < + +boost::mpl::vector + +>::type seq1_t; + + +typedef boost::fusion::traits::deduce_sequence < + +boost::fusion::vector + +>::type seq2_t; From b22e2b64da8c9dc61b134d477e9b0d25cf4c8bbd Mon Sep 17 00:00:00 2001 From: "Troy D. Straszheim" Date: Sat, 17 Oct 2009 01:10:45 +0000 Subject: [PATCH 26/82] rm cmake from the release branch before it goes out broken. Policy dictates that you never commit to release, you commit to trunk and merge to release. [SVN r56941] --- CMakeLists.txt | 29 ----------------------------- module.cmake | 1 - 2 files changed, 30 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 module.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 2a91cc15..00000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -# -# Copyright Troy D. Straszheim -# -# Distributed under the Boost Software License, Version 1.0. -# See http://www.boost.org/LICENSE_1_0.txt -# -#---------------------------------------------------------------------------- -# This file was automatically generated from the original CMakeLists.txt file -# Add a variable to hold the headers for the library -set (lib_headers - fusion -) - -# Add a library target to the build system -boost_library_project( - fusion - # SRCDIRS - # TESTDIRS - HEADERS ${lib_headers} - # DOCDIRS - DESCRIPTION "Library for working with tuples, including various containers, algorithms, etc." - MODULARIZED - AUTHORS "Joel de Guzman " - "Dan Marsden " - "Tobias Schwinger " - # MAINTAINERS -) - - diff --git a/module.cmake b/module.cmake deleted file mode 100644 index fa210eb3..00000000 --- a/module.cmake +++ /dev/null @@ -1 +0,0 @@ -boost_module (fusion DEPENDS function_types) \ No newline at end of file From b605617c4f6fefea3b0e0a1c552806c514228e50 Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Tue, 10 Nov 2009 02:37:19 +0000 Subject: [PATCH 27/82] Fusion: merged fixes for MSVC warnings from trunk [SVN r57533] --- include/boost/fusion/adapted/struct/struct_iterator.hpp | 4 ++++ include/boost/fusion/container/list/cons_iterator.hpp | 6 +++++- include/boost/fusion/container/vector/detail/vector_n.hpp | 6 +++--- include/boost/fusion/sequence/io/detail/in.hpp | 4 ++-- include/boost/fusion/sequence/io/detail/manip.hpp | 4 ++++ include/boost/fusion/sequence/io/detail/out.hpp | 4 ++-- include/boost/fusion/view/filter_view/filter_view.hpp | 4 ++++ include/boost/fusion/view/nview/nview_iterator.hpp | 4 ++++ .../boost/fusion/view/transform_view/transform_view.hpp | 4 ++++ .../view/transform_view/transform_view_iterator.hpp | 8 ++++++++ 10 files changed, 40 insertions(+), 8 deletions(-) diff --git a/include/boost/fusion/adapted/struct/struct_iterator.hpp b/include/boost/fusion/adapted/struct/struct_iterator.hpp index f2eb7ea9..fe26aa33 100644 --- a/include/boost/fusion/adapted/struct/struct_iterator.hpp +++ b/include/boost/fusion/adapted/struct/struct_iterator.hpp @@ -95,6 +95,10 @@ namespace boost { namespace fusion return type(); } }; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + struct_iterator& operator= (struct_iterator const&); }; }} diff --git a/include/boost/fusion/container/list/cons_iterator.hpp b/include/boost/fusion/container/list/cons_iterator.hpp index 7ef034e3..9d67a649 100644 --- a/include/boost/fusion/container/list/cons_iterator.hpp +++ b/include/boost/fusion/container/list/cons_iterator.hpp @@ -34,11 +34,15 @@ namespace boost { namespace fusion typedef cons_iterator_identity< typename add_const::type> identity; - + explicit cons_iterator(cons_type& cons) : cons(cons) {} cons_type& cons; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + cons_iterator& operator= (cons_iterator const&); }; struct nil_iterator : iterator_base diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp index 2d9ac128..ea314ac2 100644 --- a/include/boost/fusion/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n.hpp @@ -105,7 +105,7 @@ BOOST_PP_CAT(vector, N)( Sequence const& seq #if (N == 1) - , typename disable_if >::type* dummy = 0 + , typename disable_if >::type* /*dummy*/ = 0 #endif ) : base_type(base_type::init_from_sequence(seq)) {} @@ -133,14 +133,14 @@ template typename add_reference::type>::type - at_impl(I i) + at_impl(I) { return this->at_impl(mpl::int_()); } template typename add_reference::type>::type>::type - at_impl(I i) const + at_impl(I) const { return this->at_impl(mpl::int_()); } diff --git a/include/boost/fusion/sequence/io/detail/in.hpp b/include/boost/fusion/sequence/io/detail/in.hpp index cd772514..b0620284 100644 --- a/include/boost/fusion/sequence/io/detail/in.hpp +++ b/include/boost/fusion/sequence/io/detail/in.hpp @@ -35,7 +35,7 @@ namespace boost { namespace fusion { namespace detail template static void - read(IS& is, char const* delim, mpl::true_) + read(IS&, char const*, mpl::true_) { } }; @@ -44,7 +44,7 @@ namespace boost { namespace fusion { namespace detail { template static void - call(IS& is, First const&, Last const&, mpl::true_) + call(IS&, First const&, Last const&, mpl::true_) { } diff --git a/include/boost/fusion/sequence/io/detail/manip.hpp b/include/boost/fusion/sequence/io/detail/manip.hpp index dd9a5265..988f8bc2 100644 --- a/include/boost/fusion/sequence/io/detail/manip.hpp +++ b/include/boost/fusion/sequence/io/detail/manip.hpp @@ -146,6 +146,10 @@ namespace boost { namespace fusion } Stream& stream; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + string_ios_manip& operator= (string_ios_manip const&); }; } // detail diff --git a/include/boost/fusion/sequence/io/detail/out.hpp b/include/boost/fusion/sequence/io/detail/out.hpp index c8ab2085..6d0c28a7 100644 --- a/include/boost/fusion/sequence/io/detail/out.hpp +++ b/include/boost/fusion/sequence/io/detail/out.hpp @@ -35,7 +35,7 @@ namespace boost { namespace fusion { namespace detail template static void - print(OS& os, char const* delim, mpl::true_) + print(OS&, char const*, mpl::true_) { } }; @@ -44,7 +44,7 @@ namespace boost { namespace fusion { namespace detail { template static void - call(OS& os, First const&, Last const&, mpl::true_) + call(OS&, First const&, Last const&, mpl::true_) { } diff --git a/include/boost/fusion/view/filter_view/filter_view.hpp b/include/boost/fusion/view/filter_view/filter_view.hpp index a34747e6..c3e63fdb 100644 --- a/include/boost/fusion/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/view/filter_view/filter_view.hpp @@ -43,6 +43,10 @@ namespace boost { namespace fusion first_type first() const { return fusion::begin(seq); } last_type last() const { return fusion::end(seq); } typename mpl::if_, Sequence, Sequence&>::type seq; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + filter_view& operator= (filter_view const&); }; }} diff --git a/include/boost/fusion/view/nview/nview_iterator.hpp b/include/boost/fusion/view/nview/nview_iterator.hpp index 60895093..4fc06a85 100644 --- a/include/boost/fusion/view/nview/nview_iterator.hpp +++ b/include/boost/fusion/view/nview/nview_iterator.hpp @@ -45,6 +45,10 @@ namespace boost { namespace fusion : seq(seq) {} Sequence& seq; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + nview_iterator& operator= (nview_iterator const&); }; }} diff --git a/include/boost/fusion/view/transform_view/transform_view.hpp b/include/boost/fusion/view/transform_view/transform_view.hpp index fcf876a0..78b6560e 100644 --- a/include/boost/fusion/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/view/transform_view/transform_view.hpp @@ -99,6 +99,10 @@ namespace boost { namespace fusion last_type last() const { return fusion::end(seq); } typename mpl::if_, Sequence, Sequence&>::type seq; transform_type f; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + transform_view& operator= (transform_view const&); }; }} 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 bb4b6afd..fde67323 100644 --- a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -39,6 +39,10 @@ namespace boost { namespace fusion first_type first; transform_type f; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + transform_view_iterator& operator= (transform_view_iterator const&); }; // Binary Version @@ -62,6 +66,10 @@ namespace boost { namespace fusion first1_type first1; first2_type first2; transform_type f; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + transform_view_iterator2& operator= (transform_view_iterator2 const&); }; }} From cda74605fc40f8d23f775f5fd39bd243a4c2dbfc Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Fri, 1 Jan 2010 22:00:21 +0000 Subject: [PATCH 28/82] fusion: merge of associative iterators/views and the new fold interface [SVN r58618] --- changelist.txt | 7 +- doc/algorithm.qbk | 211 +++++++++++----- doc/changelog.qbk | 6 +- doc/extension.qbk | 36 +-- doc/fusion.qbk | 6 +- doc/html/fusion/acknowledgements.html | 4 + doc/html/fusion/adapted.html | 11 + doc/html/fusion/adapted/adapt_assoc.html | 43 ++++ doc/html/fusion/adapted/adapt_struct.html | 43 ++++ doc/html/fusion/adapted/boost__array.html | 33 +++ doc/html/fusion/adapted/boost__tuple.html | 30 +++ doc/html/fusion/adapted/mpl_sequence.html | 35 +++ doc/html/fusion/adapted/std__pair.html | 33 +++ doc/html/fusion/algorithm.html | 25 ++ doc/html/fusion/algorithm/iteration.html | 11 + .../fusion/algorithm/iteration/functions.html | 4 + .../iteration/functions/accumulate.html | 225 ++++++++++++++++- .../algorithm/iteration/functions/fold.html | 222 ++++++++++++++++- .../iteration/functions/for_each.html | 168 ++++++++++++- .../algorithm/iteration/metafunctions.html | 4 + .../iteration/metafunctions/accumulate.html | 162 +++++++++++- .../iteration/metafunctions/fold.html | 162 +++++++++++- .../iteration/metafunctions/for_each.html | 143 ++++++++++- doc/html/fusion/algorithm/query.html | 11 + .../fusion/algorithm/query/functions.html | 4 + .../fusion/algorithm/query/functions/all.html | 168 ++++++++++++- .../fusion/algorithm/query/functions/any.html | 168 ++++++++++++- .../algorithm/query/functions/count.html | 168 ++++++++++++- .../algorithm/query/functions/count_if.html | 168 ++++++++++++- .../algorithm/query/functions/find.html | 168 ++++++++++++- .../algorithm/query/functions/find_if.html | 154 +++++++++++- .../algorithm/query/functions/none.html | 168 ++++++++++++- .../fusion/algorithm/query/metafunctions.html | 4 + .../algorithm/query/metafunctions/all.html | 143 ++++++++++- .../algorithm/query/metafunctions/any.html | 143 ++++++++++- .../algorithm/query/metafunctions/count.html | 143 ++++++++++- .../query/metafunctions/count_if.html | 143 ++++++++++- .../algorithm/query/metafunctions/find.html | 148 ++++++++++- .../query/metafunctions/find_if.html | 148 ++++++++++- .../algorithm/query/metafunctions/none.html | 143 ++++++++++- doc/html/fusion/algorithm/transformation.html | 11 + .../algorithm/transformation/functions.html | 4 + .../transformation/functions/clear.html | 168 ++++++++++++- .../transformation/functions/erase.html | 200 ++++++++++++++- .../transformation/functions/erase_key.html | 192 +++++++++++++- .../transformation/functions/filter.html | 184 +++++++++++++- .../transformation/functions/filter_if.html | 184 +++++++++++++- .../transformation/functions/insert.html | 187 +++++++++++++- .../functions/insert_range.html | 184 +++++++++++++- .../transformation/functions/join.html | 187 +++++++++++++- .../transformation/functions/pop_back.html | 184 +++++++++++++- .../transformation/functions/pop_front.html | 184 +++++++++++++- .../transformation/functions/push_back.html | 184 +++++++++++++- .../transformation/functions/push_front.html | 184 +++++++++++++- .../transformation/functions/remove.html | 184 +++++++++++++- .../transformation/functions/remove_if.html | 184 +++++++++++++- .../transformation/functions/replace.html | 168 ++++++++++++- .../transformation/functions/replace_if.html | 168 ++++++++++++- .../transformation/functions/reverse.html | 189 +++++++++++++- .../transformation/functions/transform.html | 218 +++++++++++++++- .../transformation/functions/zip.html | 168 ++++++++++++- .../transformation/metafunctions.html | 4 + .../transformation/metafunctions/clear.html | 143 ++++++++++- .../transformation/metafunctions/erase.html | 159 +++++++++++- .../metafunctions/erase_key.html | 160 +++++++++++- .../transformation/metafunctions/filter.html | 159 +++++++++++- .../metafunctions/filter_if.html | 159 +++++++++++- .../transformation/metafunctions/insert.html | 159 +++++++++++- .../metafunctions/insert_range.html | 159 +++++++++++- .../transformation/metafunctions/join.html | 154 +++++++++++- .../metafunctions/pop_back.html | 161 +++++++++++- .../metafunctions/pop_front.html | 144 ++++++++++- .../metafunctions/push_back.html | 144 ++++++++++- .../metafunctions/push_front.html | 144 ++++++++++- .../transformation/metafunctions/remove.html | 159 +++++++++++- .../metafunctions/remove_if.html | 159 +++++++++++- .../transformation/metafunctions/replace.html | 143 ++++++++++- .../metafunctions/replace_if.html | 143 ++++++++++- .../transformation/metafunctions/reverse.html | 164 +++++++++++- .../metafunctions/transform.html | 234 +++++++++++++++++- .../transformation/metafunctions/zip.html | 137 +++++++++- doc/html/fusion/change_log.html | 4 + doc/html/fusion/container.html | 11 + doc/html/fusion/container/cons.html | 61 +++++ doc/html/fusion/container/conversion.html | 11 + .../container/conversion/functions.html | 4 + .../conversion/functions/as_list.html | 162 +++++++++++- .../conversion/functions/as_map.html | 162 +++++++++++- .../conversion/functions/as_set.html | 162 +++++++++++- .../conversion/functions/as_vector.html | 162 +++++++++++- .../container/conversion/metafunctions.html | 4 + .../conversion/metafunctions/as_list.html | 162 +++++++++++- .../conversion/metafunctions/as_map.html | 162 +++++++++++- .../conversion/metafunctions/as_set.html | 162 +++++++++++- .../conversion/metafunctions/as_vector.html | 162 +++++++++++- doc/html/fusion/container/generation.html | 11 + .../container/generation/functions.html | 4 + .../generation/functions/list_tie.html | 162 +++++++++++- .../generation/functions/make_cons.html | 187 +++++++++++++- .../generation/functions/make_list.html | 187 +++++++++++++- .../generation/functions/make_map.html | 187 +++++++++++++- .../generation/functions/make_set.html | 187 +++++++++++++- .../generation/functions/make_vector.html | 187 +++++++++++++- .../generation/functions/map_tie.html | 162 +++++++++++- .../container/generation/functions/tiers.html | 69 +++++- .../generation/functions/vector_tie.html | 162 +++++++++++- .../container/generation/metafunctions.html | 4 + .../generation/metafunctions/list_tie.html | 162 +++++++++++- .../generation/metafunctions/make_cons.html | 162 +++++++++++- .../generation/metafunctions/make_list.html | 162 +++++++++++- .../generation/metafunctions/make_map.html | 187 +++++++++++++- .../generation/metafunctions/make_set.html | 162 +++++++++++- .../generation/metafunctions/make_vector.html | 162 +++++++++++- .../generation/metafunctions/map_tie.html | 162 +++++++++++- .../generation/metafunctions/vector_tie.html | 162 +++++++++++- doc/html/fusion/container/list.html | 61 +++++ doc/html/fusion/container/map.html | 59 +++++ doc/html/fusion/container/set.html | 59 +++++ doc/html/fusion/container/vector.html | 58 +++++ doc/html/fusion/extension.html | 4 + doc/html/fusion/extension/ext_full.html | 98 +++++++- .../fusion/extension/iterator_facade.html | 152 +++++++++++- .../fusion/extension/sequence_facade.html | 82 +++++- doc/html/fusion/functional.html | 29 +++ doc/html/fusion/functional/adapters.html | 4 + .../fusion/functional/adapters/fused.html | 72 ++++++ .../adapters/fused_function_object.html | 60 +++++ .../functional/adapters/fused_procedure.html | 60 +++++ .../fusion/functional/adapters/limits.html | 22 ++ .../fusion/functional/adapters/unfused.html | 67 +++++ .../functional/adapters/unfused_typed.html | 67 +++++ doc/html/fusion/functional/concepts.html | 4 + .../fusion/functional/concepts/callable.html | 31 +++ .../functional/concepts/def_callable.html | 41 +++ doc/html/fusion/functional/concepts/poly.html | 40 +++ .../functional/concepts/reg_callable.html | 40 +++ doc/html/fusion/functional/generation.html | 4 + .../functional/generation/functions.html | 4 + .../generation/functions/mk_fused.html | 187 +++++++++++++- .../generation/functions/mk_fused_fobj.html | 187 +++++++++++++- .../generation/functions/mk_fused_proc.html | 187 +++++++++++++- .../generation/functions/mk_unfused.html | 187 +++++++++++++- .../functional/generation/metafunctions.html | 4 + .../generation/metafunctions/mk_fused.html | 112 ++++++++- .../metafunctions/mk_fused_fobj.html | 112 ++++++++- .../metafunctions/mk_fused_proc.html | 112 ++++++++- .../generation/metafunctions/mk_unfused.html | 112 ++++++++- doc/html/fusion/functional/invocation.html | 4 + .../functional/invocation/functions.html | 4 + .../invocation/functions/invoke.html | 187 +++++++++++++- .../invocation/functions/invoke_fobj.html | 187 +++++++++++++- .../invocation/functions/invoke_proc.html | 187 +++++++++++++- .../fusion/functional/invocation/limits.html | 22 ++ .../functional/invocation/metafunctions.html | 4 + .../invocation/metafunctions/invoke.html | 87 ++++++- .../invocation/metafunctions/invoke_fobj.html | 87 ++++++- .../invocation/metafunctions/invoke_proc.html | 87 ++++++- doc/html/fusion/introduction.html | 61 ++++- doc/html/fusion/iterator.html | 17 ++ doc/html/fusion/iterator/concepts.html | 12 +- .../concepts/associative_iterator.html | 228 +++++++++++++++++ .../concepts/bidirectional_iterator.html | 53 ++++ .../iterator/concepts/forward_iterator.html | 47 ++++ .../concepts/random_access_iterator.html | 46 +++- doc/html/fusion/iterator/functions.html | 13 +- .../fusion/iterator/functions/advance.html | 76 +++++- .../fusion/iterator/functions/advance_c.html | 82 +++++- doc/html/fusion/iterator/functions/deref.html | 76 +++++- .../fusion/iterator/functions/deref_data.html | 138 +++++++++++ .../fusion/iterator/functions/distance.html | 76 +++++- doc/html/fusion/iterator/functions/next.html | 76 +++++- doc/html/fusion/iterator/functions/prior.html | 76 +++++- doc/html/fusion/iterator/metafunctions.html | 7 + .../iterator/metafunctions/advance.html | 79 +++++- .../iterator/metafunctions/advance_c.html | 85 ++++++- .../fusion/iterator/metafunctions/deref.html | 76 +++++- .../iterator/metafunctions/deref_data.html | 139 +++++++++++ .../iterator/metafunctions/distance.html | 80 +++++- .../iterator/metafunctions/equal_to.html | 80 +++++- .../fusion/iterator/metafunctions/key_of.html | 139 +++++++++++ .../fusion/iterator/metafunctions/next.html | 77 +++++- .../fusion/iterator/metafunctions/prior.html | 77 +++++- .../iterator/metafunctions/value_of.html | 79 +++++- .../iterator/metafunctions/value_of_data.html | 140 +++++++++++ doc/html/fusion/iterator/operator.html | 13 +- .../iterator/operator/operator_equality.html | 65 ++++- .../operator/operator_inequality.html | 65 ++++- .../operator/operator_unary_star.html | 73 +++++- doc/html/fusion/notes.html | 106 +++++++- doc/html/fusion/organization.html | 65 ++++- doc/html/fusion/preface.html | 67 ++++- doc/html/fusion/quick_start.html | 100 +++++++- doc/html/fusion/references.html | 4 + doc/html/fusion/sequence.html | 19 +- doc/html/fusion/sequence/concepts.html | 18 ++ .../concepts/associative_sequence.html | 50 +++- .../concepts/bidirectional_sequence.html | 50 ++++ .../sequence/concepts/forward_sequence.html | 59 +++++ .../concepts/random_access_sequence.html | 53 ++++ doc/html/fusion/sequence/intrinsic.html | 50 +++- .../fusion/sequence/intrinsic/functions.html | 4 + .../sequence/intrinsic/functions/at.html | 162 +++++++++++- .../sequence/intrinsic/functions/at_c.html | 162 +++++++++++- .../sequence/intrinsic/functions/at_key.html | 162 +++++++++++- .../sequence/intrinsic/functions/back.html | 162 +++++++++++- .../sequence/intrinsic/functions/begin.html | 186 +++++++++++++- .../sequence/intrinsic/functions/empty.html | 162 +++++++++++- .../sequence/intrinsic/functions/end.html | 186 +++++++++++++- .../sequence/intrinsic/functions/front.html | 162 +++++++++++- .../sequence/intrinsic/functions/has_key.html | 162 +++++++++++- .../sequence/intrinsic/functions/size.html | 162 +++++++++++- .../sequence/intrinsic/functions/swap.html | 137 +++++++++- .../sequence/intrinsic/metafunctions.html | 4 + .../sequence/intrinsic/metafunctions/at.html | 161 +++++++++++- .../intrinsic/metafunctions/at_c.html | 161 +++++++++++- .../intrinsic/metafunctions/at_key.html | 161 +++++++++++- .../intrinsic/metafunctions/back.html | 128 +++++++++- .../intrinsic/metafunctions/begin.html | 152 +++++++++++- .../intrinsic/metafunctions/empty.html | 128 +++++++++- .../sequence/intrinsic/metafunctions/end.html | 152 +++++++++++- .../intrinsic/metafunctions/front.html | 128 +++++++++- .../intrinsic/metafunctions/has_key.html | 128 +++++++++- .../intrinsic/metafunctions/size.html | 128 +++++++++- .../intrinsic/metafunctions/swap.html | 103 +++++++- .../intrinsic/metafunctions/value_at.html | 128 +++++++++- .../intrinsic/metafunctions/value_at_c.html | 128 +++++++++- .../intrinsic/metafunctions/value_at_key.html | 128 +++++++++- doc/html/fusion/sequence/operator.html | 4 + .../fusion/sequence/operator/comparison.html | 11 + .../sequence/operator/comparison/equal.html | 162 +++++++++++- .../operator/comparison/greater_than.html | 137 +++++++++- .../comparison/greater_than_equal.html | 137 +++++++++- .../operator/comparison/less_than.html | 137 +++++++++- .../operator/comparison/less_than_equal.html | 137 +++++++++- .../operator/comparison/not_equal.html | 137 +++++++++- doc/html/fusion/sequence/operator/i_o.html | 11 + doc/html/fusion/sequence/operator/i_o/in.html | 162 +++++++++++- .../fusion/sequence/operator/i_o/out.html | 162 +++++++++++- doc/html/fusion/support.html | 4 + doc/html/fusion/support/category_of.html | 73 ++++-- doc/html/fusion/support/deduce.html | 44 ++++ doc/html/fusion/support/deduce_sequence.html | 44 ++++ doc/html/fusion/support/is_sequence.html | 49 ++++ doc/html/fusion/support/is_view.html | 50 ++++ doc/html/fusion/support/pair.html | 53 +++- doc/html/fusion/support/tag_of.html | 54 ++++ doc/html/fusion/tuple.html | 4 + .../fusion/tuple/class_template_tuple.html | 11 + .../class_template_tuple/construction.html | 23 ++ .../class_template_tuple/element_access.html | 19 ++ .../relational_operators.html | 20 ++ .../tuple_creation_functions.html | 19 ++ .../tuple_helper_classes.html | 19 ++ doc/html/fusion/tuple/pairs.html | 22 ++ doc/html/fusion/view.html | 11 + doc/html/fusion/view/filter_view.html | 71 ++++++ doc/html/fusion/view/iterator_range.html | 75 +++++- doc/html/fusion/view/joint_view.html | 74 ++++++ doc/html/fusion/view/nview.html | 61 +++++ doc/html/fusion/view/reverse_view.html | 70 ++++++ doc/html/fusion/view/single_view.html | 48 ++++ doc/html/fusion/view/transform_view.html | 49 ++++ doc/html/fusion/view/zip_view.html | 63 +++++ doc/html/index.html | 56 ++++- doc/iterator.qbk | 198 ++++++++++++++- doc/sequence.qbk | 110 ++++++-- doc/support.qbk | 25 +- doc/view.qbk | 15 +- example/extension/detail/category_of_impl.hpp | 2 +- example/extension/detail/deref_data_impl.hpp | 30 +++ example/extension/detail/key_of_impl.hpp | 42 ++++ .../extension/detail/value_of_data_impl.hpp | 30 +++ example/extension/example_struct_iterator.hpp | 12 +- example/extension/test_example.cpp | 3 + example/performance/accumulate.cpp | 4 +- example/performance/inner_product2.cpp | 4 +- include/boost/fusion/adapted/array/tag_of.hpp | 19 ++ .../fusion/adapted/boost_tuple/tag_of.hpp | 51 ++++ .../adapted/class/adapt_assoc_class.hpp | 94 ------- .../fusion/adapted/class/adapt_class.hpp | 104 -------- .../fusion/adapted/class/class_iterator.hpp | 105 -------- .../fusion/adapted/class/detail/at_impl.hpp | 70 ------ .../adapted/class/detail/at_key_impl.hpp | 54 ---- .../adapted/class/detail/begin_impl.hpp | 40 --- .../adapted/class/detail/category_of_impl.hpp | 35 --- include/boost/fusion/adapted/std_pair.hpp | 91 ++++--- .../boost/fusion/adapted/std_pair/tag_of.hpp | 19 ++ .../adapted/struct/adapt_assoc_struct.hpp | 19 ++ .../fusion/adapted/struct/adapt_struct.hpp | 19 ++ .../boost/fusion/adapted/struct/extension.hpp | 87 ++++--- .../algorithm/iteration/detail/fold.hpp | 98 ++++---- .../algorithm/query/detail/assoc_find.hpp | 35 --- .../fusion/algorithm/query/detail/find_if.hpp | 26 +- include/boost/fusion/algorithm/query/find.hpp | 35 ++- .../boost/fusion/algorithm/query/find_if.hpp | 35 ++- .../algorithm/transformation/erase_key.hpp | 11 +- .../boost/fusion/container/deque/deque.hpp | 1 + .../container/map/detail/at_key_impl.hpp | 49 ---- .../container/map/detail/begin_impl.hpp | 69 +++--- .../container/map/detail/deref_data_impl.hpp | 48 ++++ .../container/map/detail/deref_impl.hpp | 45 ++++ .../fusion/container/map/detail/end_impl.hpp | 66 +++-- .../container/map/detail/key_of_impl.hpp | 32 +++ .../container/map/detail/lookup_key.hpp | 99 -------- .../container/map/detail/map_lookup.hpp | 128 ---------- .../map/detail/value_at_key_impl.hpp | 33 --- .../map/detail/value_of_data_impl.hpp | 32 +++ .../container/map/detail/value_of_impl.hpp | 39 +++ include/boost/fusion/container/map/map.hpp | 12 +- .../boost/fusion/container/map/map_fwd.hpp | 2 + .../container/set/detail/at_key_impl.hpp | 49 ---- .../container/set/detail/begin_impl.hpp | 69 +++--- .../container/set/detail/deref_data_impl.hpp | 24 ++ .../container/set/detail/deref_impl.hpp | 45 ++++ .../fusion/container/set/detail/end_impl.hpp | 66 +++-- .../container/set/detail/key_of_impl.hpp | 24 ++ .../container/set/detail/lookup_key.hpp | 93 ------- .../container/set/detail/set_lookup.hpp | 128 ---------- .../set/detail/value_at_key_impl.hpp | 35 --- .../set/detail/value_of_data_impl.hpp | 24 ++ .../container/set/detail/value_of_impl.hpp | 34 +++ include/boost/fusion/container/set/set.hpp | 12 +- .../boost/fusion/container/set/set_fwd.hpp | 2 + include/boost/fusion/include/deref_data.hpp | 13 + include/boost/fusion/include/key_of.hpp | 13 + .../boost/fusion/include/value_of_data.hpp | 13 + .../boost/fusion/iterator/basic_iterator.hpp | 136 ++++++++++ include/boost/fusion/iterator/deref_data.hpp | 49 ++++ .../boost/fusion/iterator/iterator_facade.hpp | 3 +- include/boost/fusion/iterator/key_of.hpp | 42 ++++ .../boost/fusion/iterator/value_of_data.hpp | 42 ++++ .../fusion/sequence/intrinsic/at_key.hpp | 21 +- .../fusion/sequence/intrinsic/ext_/size_s.hpp | 4 +- .../fusion/sequence/intrinsic/has_key.hpp | 16 +- .../sequence/intrinsic/value_at_key.hpp | 10 +- include/boost/fusion/support/category_of.hpp | 4 +- .../view/detail/strictest_traversal.hpp | 4 +- .../fusion/view/ext_/segmented_iterator.hpp | 56 +++-- .../view/filter_view/detail/begin_impl.hpp | 5 +- .../filter_view/detail/deref_data_impl.hpp | 37 +++ .../view/filter_view/detail/end_impl.hpp | 5 +- .../view/filter_view/detail/key_of_impl.hpp | 28 +++ .../view/filter_view/detail/next_impl.hpp | 21 +- .../filter_view/detail/value_of_data_impl.hpp | 28 +++ .../fusion/view/filter_view/filter_view.hpp | 12 +- .../view/filter_view/filter_view_iterator.hpp | 28 ++- .../view/iterator_range/iterator_range.hpp | 1 - .../view/joint_view/detail/begin_impl.hpp | 5 +- .../joint_view/detail/deref_data_impl.hpp | 37 +++ .../view/joint_view/detail/key_of_impl.hpp | 28 +++ .../view/joint_view/detail/next_impl.hpp | 5 +- .../joint_view/detail/value_of_data_impl.hpp | 28 +++ .../fusion/view/joint_view/joint_view.hpp | 14 +- .../view/joint_view/joint_view_iterator.hpp | 9 +- .../view/reverse_view/detail/at_impl.hpp | 41 +++ .../reverse_view/detail/deref_data_impl.hpp | 37 +++ .../view/reverse_view/detail/key_of_impl.hpp | 28 +++ .../reverse_view/detail/value_at_impl.hpp | 33 +++ .../detail/value_of_data_impl.hpp | 28 +++ .../fusion/view/reverse_view/reverse_view.hpp | 6 + .../reverse_view/reverse_view_iterator.hpp | 3 + test/algorithm/erase_key.cpp | 4 +- test/algorithm/fold.cpp | 36 +-- test/compile_time/fold.cpp | 2 +- test/functional/make_unfused.cpp | 2 +- test/functional/unfused.cpp | 2 +- test/functional/unfused_typed.cpp | 4 +- test/sequence/adapt_assoc_struct.cpp | 11 + test/sequence/adapt_struct.cpp | 12 + test/sequence/array.cpp | 7 + test/sequence/as_set.cpp | 2 +- test/sequence/boost_tuple.cpp | 9 + test/sequence/filter_view.cpp | 39 +-- test/sequence/iterator_range.cpp | 33 +++ test/sequence/joint_view.cpp | 45 +++- test/sequence/map.cpp | 16 ++ test/sequence/reverse_view.cpp | 23 ++ test/sequence/set.cpp | 18 +- test/sequence/std_pair.cpp | 9 + 379 files changed, 28481 insertions(+), 2185 deletions(-) create mode 100644 doc/html/fusion/iterator/concepts/associative_iterator.html create mode 100644 doc/html/fusion/iterator/functions/deref_data.html create mode 100644 doc/html/fusion/iterator/metafunctions/deref_data.html create mode 100644 doc/html/fusion/iterator/metafunctions/key_of.html create mode 100644 doc/html/fusion/iterator/metafunctions/value_of_data.html create mode 100644 example/extension/detail/deref_data_impl.hpp create mode 100644 example/extension/detail/key_of_impl.hpp create mode 100644 example/extension/detail/value_of_data_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/adapt_assoc_class.hpp delete mode 100644 include/boost/fusion/adapted/class/adapt_class.hpp delete mode 100644 include/boost/fusion/adapted/class/class_iterator.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/at_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/at_key_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/begin_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/category_of_impl.hpp delete mode 100644 include/boost/fusion/algorithm/query/detail/assoc_find.hpp delete mode 100644 include/boost/fusion/container/map/detail/at_key_impl.hpp create mode 100644 include/boost/fusion/container/map/detail/deref_data_impl.hpp create mode 100644 include/boost/fusion/container/map/detail/deref_impl.hpp create mode 100644 include/boost/fusion/container/map/detail/key_of_impl.hpp delete mode 100644 include/boost/fusion/container/map/detail/lookup_key.hpp delete mode 100644 include/boost/fusion/container/map/detail/map_lookup.hpp delete mode 100644 include/boost/fusion/container/map/detail/value_at_key_impl.hpp create mode 100644 include/boost/fusion/container/map/detail/value_of_data_impl.hpp create mode 100644 include/boost/fusion/container/map/detail/value_of_impl.hpp delete mode 100644 include/boost/fusion/container/set/detail/at_key_impl.hpp create mode 100644 include/boost/fusion/container/set/detail/deref_data_impl.hpp create mode 100644 include/boost/fusion/container/set/detail/deref_impl.hpp create mode 100644 include/boost/fusion/container/set/detail/key_of_impl.hpp delete mode 100644 include/boost/fusion/container/set/detail/lookup_key.hpp delete mode 100644 include/boost/fusion/container/set/detail/set_lookup.hpp delete mode 100644 include/boost/fusion/container/set/detail/value_at_key_impl.hpp create mode 100644 include/boost/fusion/container/set/detail/value_of_data_impl.hpp create mode 100644 include/boost/fusion/container/set/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/include/deref_data.hpp create mode 100644 include/boost/fusion/include/key_of.hpp create mode 100644 include/boost/fusion/include/value_of_data.hpp create mode 100644 include/boost/fusion/iterator/basic_iterator.hpp create mode 100644 include/boost/fusion/iterator/deref_data.hpp create mode 100644 include/boost/fusion/iterator/key_of.hpp create mode 100644 include/boost/fusion/iterator/value_of_data.hpp mode change 100755 => 100644 include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp create mode 100644 include/boost/fusion/view/filter_view/detail/deref_data_impl.hpp create mode 100644 include/boost/fusion/view/filter_view/detail/key_of_impl.hpp create mode 100644 include/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp create mode 100644 include/boost/fusion/view/joint_view/detail/deref_data_impl.hpp create mode 100644 include/boost/fusion/view/joint_view/detail/key_of_impl.hpp create mode 100644 include/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp create mode 100644 include/boost/fusion/view/reverse_view/detail/at_impl.hpp create mode 100644 include/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp create mode 100644 include/boost/fusion/view/reverse_view/detail/key_of_impl.hpp create mode 100644 include/boost/fusion/view/reverse_view/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp diff --git a/changelist.txt b/changelist.txt index eb272413..3e7712b2 100644 --- a/changelist.txt +++ b/changelist.txt @@ -3,5 +3,8 @@ Interface Changes - June 12, 2009: vector0 is now vector0<> as per Boost Trac Ticket #1608 to follow MPL more closely. - September 24, 2009: added nview and friends - - +- October 12, 2009: the accumulator is the first argument to the functor of + fold and accumulate. Fixes Boost Trac Ticket #2355. +- October 30, 2009: Added support for associative iterators & views. + Renamed associative_sequence_tag to associative_tag. Fixes Boost Trac + Ticket #3473. diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk index cfaf92b7..3fa194b2 100644 --- a/doc/algorithm.qbk +++ b/doc/algorithm.qbk @@ -62,7 +62,7 @@ a sequence repeatedly applying an operation to its elements. [section fold] [heading Description] -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. +For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, fold returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`. [heading Synopsis] template< @@ -75,9 +75,9 @@ For a sequence `Seq`, initial state, and binary function object or function poin [table Parameters [[Parameter][Requirement][Description]] - [[`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]] + [[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]] [[`initial_state`][Any type][Initial state]] - [[`f`][`__boost_result_of_call__::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`][Operation's argument]] + [[`f`][`__boost_result_of_call__::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]] ] [heading Expression Semantics] @@ -85,7 +85,7 @@ For a sequence `Seq`, initial state, and binary function object or function poin [*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(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `f`. @@ -101,7 +101,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. typedef std::string result_type; template - std::string operator()(const T& t, const std::string& str) const + std::string operator()(const std::string& str, const T& t) const { return str + boost::lexical_cast(t); } @@ -115,7 +115,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. [section accumulate] [heading Description] -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. +For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, accumulate returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`. [heading Synopsis] template< @@ -128,9 +128,9 @@ For a sequence `Seq`, initial state, and binary function object or function poin [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]] + [[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]] [[`initial_state`][Any type][Initial state]] - [[`f`][`__boost_result_of_call__::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`][Operation's argument]] + [[`f`][`__boost_result_of_call__::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]] ] [heading Expression Semantics] @@ -138,7 +138,7 @@ For a sequence `Seq`, initial state, and binary function object or function poin [*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(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `f`. @@ -154,7 +154,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. typedef std::string result_type; template - std::string operator()(const T& t, const std::string& str) const + std::string operator()(const std::string& str, const T& t) const { return str + boost::lexical_cast(t); } @@ -238,7 +238,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`] [`__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]] + [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]] ] [heading Expression Semantics] @@ -278,7 +278,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`] [`__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]] + [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]] ] [heading Expression Semantics] @@ -583,8 +583,8 @@ or `__end__(seq)` if there is no such element. [heading Complexity] Linear. At most `__result_of_size__::value` comparisons. - -/algorithm/query/find_if.hpp> +#include +#include [heading Example] const __vector__ vec(1.0,2); @@ -795,7 +795,7 @@ Constant. [section find] [heading Description] -Returns the result type of `find`, given the sequence and search types. +Returns the result type of __find__, given the sequence and search types. [heading Synopsis] template< @@ -833,7 +833,7 @@ Linear, at most `__result_of_size__::value` comparisons. [section find_if] [heading Description] -Returns the result type of `find_if` given the sequence and predicate types. +Returns the result type of __find_if__ given the sequence and predicate types. [heading Synopsis] template< @@ -983,7 +983,10 @@ For a given sequence, filter returns a new sequences containing only the element [heading Expression Semantics] __filter__(seq); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence containing all the elements of `seq` of type `T`. Equivalent to `__filter_if__ >(seq)`. @@ -1024,7 +1027,10 @@ only the elements with types for which a given __mpl_lambda_expression__ evaluat [heading Expression Semantics] __filter_if__(seq); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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. @@ -1225,7 +1231,10 @@ Returns a new sequence, with all the elements of the original sequence, except t [heading Expression Semantics] __remove__(seq); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*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)`. @@ -1266,7 +1275,10 @@ function object evaluates to `true`. [heading Expression Semantics] __remove_if__(seq); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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_`. @@ -1305,7 +1317,11 @@ Returns a new sequence with the elements of the original in reverse order. [heading Expression Semantics] __reverse__(seq); -[*Return type]: A model of __bidirectional_sequence__. +[*Return type]: + +* A model of __bidirectional_sequence__ if `seq` is a __bidirectional_sequence__ +else, __random_access_sequence__ if `seq` is a __random_access_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*Semantics]: Returns a new sequence containing all the elements of `seq` in reverse order. @@ -1390,13 +1406,19 @@ between two iterators. [heading Expression Semantics] __erase__(seq, pos); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*Semantics]: Returns a new sequence, with all the elements of `seq`, in their original order, except those in the range [`first`,`last`). @@ -1419,26 +1441,27 @@ Constant. Returns a view which is lazily evaluated. [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. +For an [link fusion.sequence.concepts.associative_sequence associative]] __forward_sequence__ `seq`, +returns a [link fusion.sequence.concepts.associative_sequence associative]] __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); + 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]] + [[`seq`][A model of __forward_sequence__ and __associative_sequence__][Operation's argument]] [[`Key`][Any type][Key to erase]] ] [heading Expression Semantics] __erase_key__(seq); -[*Return type]: A model of __forward_sequence__. +[*Return type]: A model of __forward_sequence__ and __associative_sequence__. [*Semantics]: Returns a new sequence, containing all the elements of `seq`, except those with key `Key`. @@ -1467,7 +1490,8 @@ position described by a given iterator. typename Pos, typename T > - __unspecified__ insert(Sequence const& seq, Pos const& pos, T const& t); + typename __result_of_insert__::type insert( + Sequence const& seq, Pos const& pos, T const& t); [table Parameters [[Parameter][Requirement][Description]] @@ -1479,7 +1503,10 @@ position described by a given iterator. [heading Expression Semantics] __insert__(seq, p, t); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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`. @@ -1522,7 +1549,10 @@ Returns a new sequence with another sequence inserted at a specified iterator. [heading Expression Semantics] __insert__(seq, pos, range); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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. @@ -1561,9 +1591,12 @@ Takes 2 sequences and returns a sequence containing the elements of the first fo [heading Expression Semantics] __join__(lhs, rhs); -[*Return type]: A model of __forward_sequence__. +[*Return type]: -[*Semantics]: Returns a sequence containing all the elements of `lhs` followed by all the elements of `rhs`. The order of th elements is preserved. +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `lhs` and `rhs` implement the __associative_sequence__ model. + +[*Semantics]: Returns a sequence containing all the elements of `lhs` followed by all the elements of `rhs`. The order of the elements is preserved. [heading Complexity] Constant. Returns a view which is lazily evaluated. @@ -1641,7 +1674,10 @@ Returns a new sequence, with the last element of the original removed. [heading Expression Semantics] __pop_back__(seq); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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`. @@ -1678,7 +1714,10 @@ Returns a new sequence, with the first element of the original removed. [heading Expression Semantics] __pop_front__(seq); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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`. @@ -1717,7 +1756,10 @@ Returns a new sequence with an element added at the end. [heading Expression Semantics] __push_back__(seq, t); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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`. @@ -1756,7 +1798,10 @@ Returns a new sequence with an element added at the beginning. [heading Expression Semantics] __push_back__(seq, t); -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `seq` implements the __associative_sequence__ model. [*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`. @@ -1801,7 +1846,10 @@ Returns the result type of __filter__ given the sequence type and type to retain [heading Expression Semantics] __result_of_filter__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence containing the elements of `Sequence` that are of type `T`. Equivalent to `__result_of_filter_if__ >::type`. @@ -1839,7 +1887,10 @@ Returns the result type of __filter_if__ given the sequence and unary __mpl_lamb [heading Expression Semantics] __result_of_filter_if__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence containing the elements of `Sequence` for which `Pred` evaluates to `boost::mpl::true_`. @@ -1876,7 +1927,10 @@ with elements created by applying `f(e)` to each element of `e` of `seq`. [heading Expression Semantics] __transform__(seq, f); -[*Return type]: A model of __forward_sequence__ +[*Return type]: + +* A model of __forward_sequence__ +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a new sequence, containing the return values of `f(e)` for each element `e` within `seq`. @@ -2024,7 +2078,10 @@ Returns the result type of __remove__, given the sequence and removal types. [heading Expression Semantics] __result_of_remove__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence containing the elements of `Sequence` not of type `T`. Equivalent to `__result_of_replace_if__ >::type`. @@ -2062,7 +2119,10 @@ Returns the result type of __remove_if__, given the input sequence and unary __m [heading Expression Semantics] __result_of_remove_if__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence containing the elements of `Sequence` for which `Pred` evaluates to `boost::mpl::false_`. @@ -2098,7 +2158,11 @@ Returns the result type of __reverse__, given the input sequence type. [heading Expression Semantics] __result_of_reverse__::type -[*Return type]: A model of __bidirectional_sequence__. +[*Return type]: + +* A model of __bidirectional_sequence__ if `Sequence` is a __bidirectional_sequence__ +else, __random_access_sequence__ if `Sequence` is a __random_access_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence with the elements in the reverse order to `Sequence`. @@ -2173,7 +2237,10 @@ Returns the result type of __erase__, given the input sequence and range delimit [heading Expression Semantics] __result_of_erase__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a new sequence with the element at `It1` removed. @@ -2210,14 +2277,14 @@ Returns the result type of __erase_key__, given the sequence and key types. [table Parameters [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __associative_sequence__][Operation's argument]] + [[`Sequence`][A model of __forward_sequence__ and __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__. +[*Return type]: A model of __forward_sequence__ and __associative_sequence__. [*Semantics]: Returns a sequence with the elements of `Sequence`, except those with key `Key`. @@ -2257,7 +2324,10 @@ Returns the result type of __insert__, given the sequence, position iterator and [heading Expression Semantics] __result_of_insert__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence with an element of type `T` inserted at position `Position` in `Sequence`. @@ -2297,7 +2367,10 @@ Returns the result type of __insert_range__, given the input sequence, position [heading Expression Semantics] __result_of_insert_range__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence with the elements of `Range` inserted at position `Position` into `Sequence`. @@ -2329,7 +2402,10 @@ Returns the result of joining 2 sequences, given the sequence types. [heading Expression Semantics] __result_of_join__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `LhSequence` amd `RhSequence` implement the __associative_sequence__ model. [*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. @@ -2399,7 +2475,10 @@ Returns the result type of __pop_back__, given the input sequence type. [heading Expression Semantics] __result_of_pop_back__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence with all the elements of `Sequence` except the last element. @@ -2408,7 +2487,7 @@ Constant. [heading Header] - #include + #include #include [endsect] @@ -2435,14 +2514,20 @@ Returns the result type of __pop_front__, given the input sequence type. [heading Expression Semantics] __result_of_pop_front__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence with all the elements of `Sequence` except the first element. [heading Complexity] Constant. -/algorithm/transformation/pop_front.hpp> +[heading Header] + + #include + #include [endsect] @@ -2470,14 +2555,20 @@ Returns the result type of __push_back__, given the types of the input sequence [heading Expression Semantics] __result_of_push_back__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence with the elements of `Sequence` and an element of type `T` added to the end. [heading Complexity] Constant. -/algorithm/transformation/push_back.hpp> +[heading Header] + + #include + #include [endsect] @@ -2505,14 +2596,20 @@ Returns the result type of __push_front__, given the types of the input sequence [heading Expression Semantics] __result_of_push_front__::type -[*Return type]: A model of __forward_sequence__. +[*Return type]: + +* A model of __forward_sequence__. +* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [*Semantics]: Returns a sequence with the elements of `Sequence` and an element of type `T` added to the beginning. [heading Complexity] Constant. -/algorithm/transformation/push_front.hpp> +[heading Header] + + #include + #include [endsect] diff --git a/doc/changelog.qbk b/doc/changelog.qbk index d3e953ce..7d2a0150 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -12,7 +12,7 @@ This section summarizes significant changes to the Fusion library. * Sep 27, 2006: Added `boost::tuple` support. (Joel de Guzman) * Nov 17, 2006: Added `boost::variant` support. (Joel de Guzman) * Feb 15, 2007: Added functional module. (Tobias Schwinger) -* APRIL 2, 2007: Added struct adapter. (Joel de Guzman) +* April 2, 2007: Added struct adapter. (Joel de Guzman) * May 8, 2007: Added associative struct adapter. (Dan Marsden) * Dec 20, 2007: Removed `boost::variant` support. After thorough investigation, I think now that the move to make variant a @@ -21,5 +21,9 @@ This section summarizes significant changes to the Fusion library. and there's no way to know at compile time what it contains. Iterating over its types is simply wrong. All these imply that the variant is *not* a fusion sequence. (Joel de Guzman) +* Oct 12, 2009: The accumulator is the first argument to the functor of + __fold__ and __accumulate__. (Christopher Schmidt) +* Oct 30, 2009: Added support for associative iterators and views. (Christopher + Schmidt) [endsect] diff --git a/doc/extension.qbk b/doc/extension.qbk index b840259f..b0159072 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -145,15 +145,15 @@ our iterator's tag 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__: +To understand how `value_of_impl` is used by the library we will look at the implementation of __result_of_value_of__: template - struct __value_of__ + struct value_of : extension::value_of_impl::type>:: template apply {}; -So __value_of__ uses __tag_dispatching__ to select an __mpl_metafunction_class__ +So __result_of_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. @@ -216,7 +216,7 @@ To see how `deref_impl` is used, lets have a look at the implementation of __der } So again __result_of_deref__ uses __tag_dispatching__ in exactly the -same way as the __value_of__ implementation. The runtime functionality used +same way as the __result_of_value_of__ implementation. The runtime functionality used by __deref__ is provided by the `call` static function of the selected __mpl_metafunction_class__. @@ -227,14 +227,14 @@ 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 +Fusion sequence, __result_of_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 +Ok, now we have seen the way __result_of_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`: @@ -317,14 +317,15 @@ 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] +[heading Enabling our type as an associative sequence] -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. +In order for `example_struct` to serve as an associative forward sequence, +we need to adapt the traversal category of our sequence and our iterator +accordingly and enable 3 intrinsic sequence lookup features, __at_key__, +__value_at_key__ and __has_key__. We also need to enable 3 iterator lookup +features, __result_of_key_of__, __result_of_value_of_data__ and __deref_data__. -To implement `at_key_impl` we need to associate the `fields::age` and `fields::age` +To implement `at_key_impl` we need to associate the `fields::name` and `fields::age` types described in the __quick_start__ guide with the appropriate members of `example_struct`. Our implementation is as follows: @@ -369,15 +370,14 @@ 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`. +the other functions are equally straightforward, and are provided in +the example code. [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 +sequence. The implementation was slightly longwinded, but followed a simple repeating pattern. The support for `std::pair`, __mpl__ sequences, and `boost::array` all @@ -467,6 +467,10 @@ The user must the implement the key expressions required by their iterator type. [[`iterator::template distance::call(it1, it2)`][The distance between iterator `it1` and `it2`][None]] [[`iterator::template equal_to::type`][The distance between iterators of type `It1` and `It2`][`boost::same_type::type`]] [[`iterator::template equal_to::call(it1, it2)`][The distance between iterators `it1` and `it2`][`boost::same_type::type()`]] +[[`iterator::template key_of::type`][The key type associated with the element from `It`][None]] +[[`iterator::template value_of_data::type`][The type of the data property associated with the element from `It`][None]] +[[`iterator::template deref_data::type`][The type that will be returned by dereferencing the data property of the element from `It`][None]] +[[`iterator::template deref_data::call(it)`][Deferences the data property associated with the element referenced by `it`][None]] ] [heading Header] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index f48ff84a..f6330d42 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -79,6 +79,7 @@ [def __forward_iterator__ [link fusion.iterator.concepts.forward_iterator Forward Iterator]] [def __bidirectional_iterator__ [link fusion.iterator.concepts.bidirectional_iterator Bidirectional Iterator]] [def __random_access_iterator__ [link fusion.iterator.concepts.random_access_iterator Random Access Iterator]] +[def __associative_iterator__ [link fusion.iterator.concepts.associative_iterator Associative Iterator]] [def __next__ [link fusion.iterator.functions.next `next`]] [def __prior__ [link fusion.iterator.functions.prior `prior`]] @@ -86,6 +87,7 @@ [def __advance_c__ [link fusion.iterator.functions.advance_c `advance_c`]] [def __distance__ [link fusion.iterator.functions.distance `distance`]] [def __deref__ [link fusion.iterator.functions.deref `deref`]] +[def __deref_data__ [link fusion.iterator.functions.deref_data `deref_data`]] [def __result_of_next__ [link fusion.iterator.metafunctions.next `result_of::next`]] [def __result_of_prior__ [link fusion.iterator.metafunctions.prior `result_of::prior`]] @@ -95,7 +97,9 @@ [def __result_of_distance__ [link fusion.iterator.metafunctions.distance `result_of::distance`]] [def __result_of_deref__ [link fusion.iterator.metafunctions.deref `result_of::deref`]] [def __result_of_value_of__ [link fusion.iterator.metafunctions.value_of `result_of::value_of`]] -[def __value_of__ [link fusion.iterator.metafunctions.value_of `value_of`]] +[def __result_of_key_of__ [link fusion.iterator.metafunctions.key_of `result_of::key_of`]] +[def __result_of_value_of_data__ [link fusion.iterator.metafunctions.value_of_data `result_of::value_of_data`]] +[def __result_of_deref_data__ [link fusion.iterator.metafunctions.deref_data `result_of::deref_data`]] [def __sequence__ [link fusion.sequence Sequence]] [def __sequence_concepts__ [link fusion.sequence.concepts Sequence Concepts]] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 77569ed6..05453358 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,7 +3,11 @@ Acknowledgements +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index bc480000..080ac71c 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -3,7 +3,11 @@ Adapted +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 @@ -49,10 +53,17 @@ Fusion also provides various schemes to make it easy for the user to adapt various data structures, non-intrusively, as full fledged Fusion sequences.

              +<<<<<<< .working

              Header

              +======= +

              + + Header +

              +>>>>>>> .merge-right.r57125
              #include <boost/fusion/adapted.hpp>
               #include <boost/fusion/include/adapted.hpp>
               
              diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index bc16c7f9..a52d02b3 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -3,7 +3,11 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 @@ -22,6 +26,7 @@
              PrevUpHomeNext
              +<<<<<<< .working

              @@ -33,6 +38,16 @@ Description

              +======= +
              + +
              + + Description +
              +>>>>>>> .merge-right.r57125

              BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all the necessary boilerplate to make an arbitrary struct into a model of Associative Sequence.

              +<<<<<<< .working

              Synopsis

              +======= +
              + + Synopsis +
              +>>>>>>> .merge-right.r57125
              BOOST_FUSION_ADAPT_ASSOC_STRUCT(
                   struct_name,
                   (member_type0, member_name0, key_type0)
              @@ -52,10 +74,17 @@
                   ...
                   )
               
              +<<<<<<< .working

              Semantics

              +======= +
              + + Semantics +
              +>>>>>>> .merge-right.r57125

              The above macro generates the necessary code to adapt struct_name as a model of struct_name should be the fully namespace qualified name of the struct to be converted.

              +<<<<<<< .working

              Header

              +======= +
              + + Header +
              +>>>>>>> .merge-right.r57125
              #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
               #include <boost/fusion/include/adapt_assoc_struct.hpp>
               
              +<<<<<<< .working

              Example

              +======= +
              + + Example +
              +>>>>>>> .merge-right.r57125
              namespace demo
               {
                   struct employee
              diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
              index 1e665cd6..99aeea58 100644
              --- a/doc/html/fusion/adapted/adapt_struct.html
              +++ b/doc/html/fusion/adapted/adapt_struct.html
              @@ -3,7 +3,11 @@
               
                BOOST_FUSION_ADAPT_STRUCT
               
              +<<<<<<< .working
               
              +=======
              +
              +>>>>>>> .merge-right.r57125
               
               
               
              @@ -22,6 +26,7 @@
               
              PrevUpHomeNext
              +<<<<<<< .working

              @@ -33,16 +38,33 @@ Description

              +======= +
              + +
              + + Description +
              +>>>>>>> .merge-right.r57125

              BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the necessary boilerplate to make an arbitrary struct into a Random Access Sequence.

              +<<<<<<< .working

              Synopsis

              +======= +
              + + Synopsis +
              +>>>>>>> .merge-right.r57125
              BOOST_FUSION_ADAPT_STRUCT(
                   struct_name,
                   (member_type0, member_name0)
              @@ -50,10 +72,17 @@
                   ...
                   )
               
              +<<<<<<< .working

              Semantics

              +======= +
              + + Semantics +
              +>>>>>>> .merge-right.r57125

              The above macro generates the necessary code to adapt struct_name as a model of struct_name should be the fully namespace qualified name of the struct to be converted.

              +<<<<<<< .working

              Header

              +======= +
              + + Header +
              +>>>>>>> .merge-right.r57125
              #include <boost/fusion/adapted/struct/adapt_struct.hpp>
               #include <boost/fusion/include/adapt_struct.hpp>
               
              +<<<<<<< .working

              Example

              +======= +
              + + Example +
              +>>>>>>> .merge-right.r57125
              namespace demo
               {
                   struct employee
              diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
              index 1d64985c..5d8ea885 100644
              --- a/doc/html/fusion/adapted/boost__array.html
              +++ b/doc/html/fusion/adapted/boost__array.html
              @@ -3,7 +3,11 @@
               
               boost::array
               
              +<<<<<<< .working
               
              +=======
              +
              +>>>>>>> .merge-right.r57125
               
               
               
              @@ -36,24 +40,46 @@
                       Access Sequence">Random
                       Access Sequence.
                     

              +<<<<<<< .working

              Header

              +======= +
              + + Header +
              +>>>>>>> .merge-right.r57125
              #include <boost/fusion/adapted/array.hpp>
               #include <boost/fusion/include/array.hpp>
               
              +<<<<<<< .working

              Model of

              • Random +======= +
                + + Model of +
                + +<<<<<<< .working

                Example

                +======= +
                + + Example +
                +>>>>>>> .merge-right.r57125
                boost::array<int,3> arr = {{1,2,3}};
                 
                 std::cout << *begin(arr) << std::endl;
                @@ -62,10 +88,17 @@
                 std::cout << *prior(end(arr)) << std::endl;
                 std::cout << at_c<2>(arr) << std::endl;
                 
                +<<<<<<< .working

                See also

                +======= +
                + + See also +
                +>>>>>>> .merge-right.r57125

                Boost.Array Library

                diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index 3ddd4b84..4d1ca99e 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -3,7 +3,11 @@ boost::tuple +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 @@ -36,13 +40,21 @@ Sequence">Forward Sequence.

                +<<<<<<< .working

                Header

                +======= +
                + + Header +
                +>>>>>>> .merge-right.r57125
                #include <boost/fusion/adapted/boost_tuple.hpp>
                 #include <boost/fusion/include/boost_tuple.hpp>
                 
                +<<<<<<< .working

                Model of @@ -53,14 +65,32 @@ Example

                +======= +
                + + Model of +
                + +
                + + Example +
                +>>>>>>> .merge-right.r57125
                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';
                 
                +<<<<<<< .working

                See also

                +======= +
                + + See also +
                +>>>>>>> .merge-right.r57125

                Boost.Tuple Library diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 954dcc27..4b04ac5e 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -3,7 +3,11 @@ mpl sequence +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 @@ -34,13 +38,21 @@ sequences. Including the module header makes all MPL sequences fully conforming fusion sequences.

                +<<<<<<< .working

                Header

                +======= +
                + + Header +
                +>>>>>>> .merge-right.r57125
                #include <boost/fusion/adapted/mpl.hpp>
                 #include <boost/fusion/include/mpl.hpp>
                 
                +<<<<<<< .working

                Model of @@ -49,6 +61,15 @@
              • Forward Sequence +======= +
                + + Model of +
                +
                  +
                • +Forward Sequence +>>>>>>> .merge-right.r57125 (If the MPL sequence is a forward sequence.)
                • @@ -65,10 +86,17 @@ sequence is a random access sequence.)
                +<<<<<<< .working

                Example

                +======= +
                + + Example +
                +>>>>>>> .merge-right.r57125
                mpl::vector_c<int, 123, 456> vec_c;
                 fusion::vector2<int, long> v(vec_c);
                 std::cout << at_c<0>(v) << std::endl;
                @@ -78,10 +106,17 @@
                 std::cout << at_c<0>(v) << std::endl;
                 std::cout << at_c<1>(v) << std::endl;
                 
                +<<<<<<< .working

                See also

                +======= +
                + + See also +
                +>>>>>>> .merge-right.r57125

                MPL

                diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 601c4a70..91b6bd34 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -3,7 +3,11 @@ std::pair +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 @@ -36,33 +40,62 @@ Access Sequence">Random Access Sequence.

                +<<<<<<< .working

                Header

                +======= +
                + + Header +
                +>>>>>>> .merge-right.r57125
                #include <boost/fusion/adapted/std_pair.hpp>
                 #include <boost/fusion/include/std_pair.hpp>
                 
                +<<<<<<< .working

                Model of

                +<<<<<<< .working

                Lazy Evaluation

                +======= +

                + + Lazy Evaluation +

                +>>>>>>> .merge-right.r57125

                Unlike MPL, Fusion algorithms are lazy and non sequence-type preserving. What does that mean? @@ -69,10 +80,17 @@ lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

                +<<<<<<< .working

                Sequence Extension

                +======= +

                + + Sequence Extension +

                +>>>>>>> .merge-right.r57125

                The lazy evaluation scheme where Algorithms return Views also allows operations such @@ -92,10 +110,17 @@ are provided. You may use one of the Conversion functions to convert back to the original sequence type.

                +<<<<<<< .working

                Header

                +======= +

                + + Header +

                +>>>>>>> .merge-right.r57125
                #include <boost/fusion/algorithm.hpp>
                 #include <boost/fusion/include/algorithm.hpp>
                 
                diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html index c99b7083..cd49cd9a 100644 --- a/doc/html/fusion/algorithm/iteration.html +++ b/doc/html/fusion/algorithm/iteration.html @@ -3,7 +3,11 @@ Iteration +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 @@ -37,10 +41,17 @@ The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements.

                +<<<<<<< .working

                Header

                +======= +
                + + Header +
                +>>>>>>> .merge-right.r57125
                #include <boost/fusion/algorithm/iteration.hpp>
                 #include <boost/fusion/include/iteration.hpp>
                 
                diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html index dcba7466..cce8fe08 100644 --- a/doc/html/fusion/algorithm/iteration/functions.html +++ b/doc/html/fusion/algorithm/iteration/functions.html @@ -3,7 +3,11 @@ Functions +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index b3d7e94a..1b2237ef 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -1,10 +1,18 @@ - + accumulate +<<<<<<< .working +======= + +<<<<<<< .working +>>>>>>> .merge-right.r57125 +======= + +>>>>>>> .merge-right.r58299 @@ -30,19 +38,80 @@
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              +<<<<<<< .working 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. +======= + For a sequence seq, initial + state initial_state, + and binary function object or function pointer f, + accumulate returns the result of the repeated application of binary + f to the result of the + previous f invocation + (inital_state if it is + the first call) and each element of seq. +>>>>>>> .merge-right.r57125

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -53,8 +122,33 @@
                   Sequence& seq, State const& initial_state, F const& f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.34. Parameters

              +======= +

              Table 1.34. Parameters

              +======= +

              Table 1.38. Parameters

              +======= +

              Table 1.38. Parameters

              +======= +

              Table 1.38. Parameters

              +======= +

              Table 1.38. Parameters

              +======= +

              Table 1.38. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -73,6 +167,7 @@ +<<<<<<< .working @@ -85,6 +180,24 @@ to eN in seq

              + + @@ -100,6 +213,7 @@

              +<<<<<<< .working @@ -109,15 +223,39 @@ of type E in seq, and current state s of type S

              + +

              seq

              +======= +

              +

              + seq +

              +
              +

              + A model of Forward + Sequence, f(s,e) must be a valid expression for + current state s, + and each element e + in seq +

              +
              +

              +>>>>>>> .merge-right.r57125 Operation's argument

              f

              +======= +

              +

              + f +

              +
              +

              + boost::result_of<F(S,E)>::type is the return type of f(s,e) + current state s + of type S, and + for each element e + of type E in seq +

              +
              +

              +>>>>>>> .merge-right.r57125 Operation's argument

              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              accumulate(seq, initial_state, f);
              @@ -126,33 +264,114 @@
                           Return type: Any type
                         

              +<<<<<<< .working Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) where e1 ...eN are the elements of seq. +======= + Semantics: Equivalent to f(... f(f(initial_state,e1),e2) ...eN) where e1 + ...eN + are the elements of seq. +>>>>>>> .merge-right.r57125

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear, exactly result_of::size<Sequence>::value applications of f.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/iteration/accumulate.hpp>
               #include <boost/fusion/include/accumulate.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct make_string
               {
                   typedef std::string result_type;
               
                   template<typename T>
              -    std::string operator()(const T& t, const std::string& str) const
              +    std::string operator()(const std::string& str, const T& t) const
                   {
                       return str + boost::lexical_cast<std::string>(t);
                   }
              @@ -164,7 +383,7 @@
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              +<<<<<<< .working 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. +======= + For a sequence seq, initial + state initial_state, + and binary function object or function pointer f, + fold returns the result of the repeated application of binary f to the result of the previous f invocation (inital_state + if it is the first call) and each element of seq. +>>>>>>> .merge-right.r57125

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -53,8 +119,33 @@
                   Sequence& seq, State const& initial_state, F const& f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.33. Parameters

              +======= +

              Table 1.33. Parameters

              +======= +

              Table 1.37. Parameters

              +======= +

              Table 1.37. Parameters

              +======= +

              Table 1.37. Parameters

              +======= +

              Table 1.37. Parameters

              +======= +

              Table 1.37. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -73,6 +164,7 @@ +<<<<<<< .working @@ -85,6 +177,24 @@ state s

              + + @@ -100,6 +210,7 @@

              +<<<<<<< .working @@ -109,15 +220,39 @@ of type E in seq, and current state s of type S

              + +

              seq

              +======= +

              +

              + seq +

              +
              +

              + A model of Forward + Sequence, f(s,e) must be a valid expression for + current state s, + and each element e + in seq +

              +
              +

              +>>>>>>> .merge-right.r57125 Operation's argument

              f

              +======= +

              +

              + f +

              +
              +

              + boost::result_of<F(S,E)>::type is the return type of f(s,e) + current state s + of type S, and + for each element e + of type E in seq +

              +
              +

              +>>>>>>> .merge-right.r57125 Operation's argument

              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              fold(seq, initial_state, f);
              @@ -126,33 +261,114 @@
                           Return type: Any type
                         

              +<<<<<<< .working Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) where e1 ...eN are the elements of seq. +======= + Semantics: Equivalent to f(... f(f(initial_state,e1),e2) ...eN) where e1 + ...eN + are the elements of seq. +>>>>>>> .merge-right.r57125

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear, exactly result_of::size<Sequence>::value applications of f.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/iteration/fold.hpp>
               #include <boost/fusion/include/fold.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct make_string
               {
                   typedef std::string result_type;
               
                   template<typename T>
              -    std::string operator()(const T& t, const std::string& str) const
              +    std::string operator()(const std::string& str, const T& t) const
                   {
                       return str + boost::lexical_cast<std::string>(t);
                   }
              @@ -164,7 +380,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Applies a unary function object to each element of a sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -48,8 +106,33 @@
                   Sequence& seq, F const& f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.35. Parameters

              +======= +

              Table 1.35. Parameters

              +======= +

              Table 1.39. Parameters

              +======= +

              Table 1.39. Parameters

              +======= +

              Table 1.39. Parameters

              +======= +

              Table 1.39. Parameters

              +======= +

              Table 1.39. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -98,9 +181,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              for_each(seq, f);
              @@ -113,22 +202,97 @@
                           in seq.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear, exactly result_of::size<Sequence>::value applications of f.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/iteration/for_each.hpp>
               #include <boost/fusion/include/for_each.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct increment
               {
              @@ -146,7 +310,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of accumulate.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.37. Parameters

              +======= +

              Table 1.37. Parameters

              +======= +

              Table 1.41. Parameters

              +======= +

              Table 1.41. Parameters

              +======= +

              Table 1.41. Parameters

              +======= +

              Table 1.41. Parameters

              +======= +

              Table 1.41. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -94,6 +177,7 @@

              +<<<<<<< .working @@ -103,15 +187,39 @@ of type E in seq, and current state s of type S

              + +

              F

              +======= +

              +

              + F +

              +
              +

              + boost::result_of<F(S,E)>::type is the return type of f(s,e) + for current state s + of type S, and + for each element e + of type E in seq +

              +
              +

              +>>>>>>> .merge-right.r57125 The operation to be applied on forward traversal

              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::accumulate<Sequence, State, F>::type
              @@ -127,15 +235,65 @@
                           and binary function object or function pointer of type F.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear, exactly result_of::size<Sequence>::value applications of F.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/iteration/accumulate.hpp>
               #include <boost/fusion/include/accumulate.hpp>
              @@ -143,7 +301,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of fold.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.36. Parameters

              +======= +

              Table 1.36. Parameters

              +======= +

              Table 1.40. Parameters

              +======= +

              Table 1.40. Parameters

              +======= +

              Table 1.40. Parameters

              +======= +

              Table 1.40. Parameters

              +======= +

              Table 1.40. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -94,6 +177,7 @@

              +<<<<<<< .working @@ -103,15 +187,39 @@ of type E in seq, and current state s of type S

              + +

              F

              +======= +

              +

              + F +

              +
              +

              + boost::result_of<F(S,E)>::type is the return type of f(s,e) + for current state s + of type S, and + for each element e + of type E in seq +

              +
              +

              +>>>>>>> .merge-right.r57125 The operation to be applied on forward traversal

              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::fold<Sequence, State, F>::type
              @@ -127,15 +235,65 @@
                           and binary function object or function pointer of type F.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear, exactly result_of::size<Sequence>::value applications of F.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/iteration/fold.hpp>
               #include <boost/fusion/include/fold.hpp>
              @@ -143,7 +301,7 @@
               
               
              -
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              For a sequence seq and @@ -41,8 +74,33 @@ element of seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -52,8 +110,33 @@
                   Sequence const& seq, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.40. Parameters

              +======= +

              Table 1.40. Parameters

              +======= +

              Table 1.44. Parameters

              +======= +

              Table 1.44. Parameters

              +======= +

              Table 1.44. Parameters

              +======= +

              Table 1.44. Parameters

              +======= +

              Table 1.44. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -100,9 +183,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              all(seq, f);
              @@ -117,22 +206,97 @@
                           element e in seq.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear. At most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/all.hpp>
               #include <boost/fusion/include/all.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct odd
               {
              @@ -149,7 +313,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              For a sequence seq and @@ -41,8 +74,33 @@ least one element of seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -52,8 +110,33 @@
                   Sequence const& seq, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.39. Parameters

              +======= +

              Table 1.39. Parameters

              +======= +

              Table 1.43. Parameters

              +======= +

              Table 1.43. Parameters

              +======= +

              Table 1.43. Parameters

              +======= +

              Table 1.43. Parameters

              +======= +

              Table 1.43. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -100,9 +183,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 semantics
              any(seq, f);
              @@ -117,22 +206,97 @@
                           element e in seq.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear. At most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/any.hpp>
               #include <boost/fusion/include/any.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct odd
               {
              @@ -149,7 +313,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the number of elements of a given type within a sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -48,8 +106,33 @@
                   Sequence const& seq, T const& t);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.44. Parameters

              +======= +

              Table 1.44. Parameters

              +======= +

              Table 1.48. Parameters

              +======= +

              Table 1.48. Parameters

              +======= +

              Table 1.48. Parameters

              +======= +

              Table 1.48. Parameters

              +======= +

              Table 1.48. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,9 +180,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              count(seq, t);
              @@ -113,22 +202,97 @@
                           t in seq.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear. At most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/count.hpp>
               #include <boost/fusion/include/count.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<double,int,int> vec(1.0,2,3);
               assert(count(vec,2) == 1);
              @@ -136,7 +300,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the number of elements within a sequence with a type for which a given unary function object evaluates to true.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -49,8 +107,33 @@
                   Sequence const& seq, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.45. Parameters

              +======= +

              Table 1.45. Parameters

              +======= +

              Table 1.49. Parameters

              +======= +

              Table 1.49. Parameters

              +======= +

              Table 1.49. Parameters

              +======= +

              Table 1.49. Parameters

              +======= +

              Table 1.49. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,9 +180,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              count_if(seq, f)
              @@ -112,22 +201,97 @@
                           in seq where f evaluates to true.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear. At most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/count_if.hpp>
               #include <boost/fusion/include/count_if.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int,int,int> vec(1,2,3);
               assert(count_if(vec,odd()) == 2);
              @@ -135,7 +299,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Finds the first element of a given type within a sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename T,
              @@ -53,8 +111,33 @@
               unspecified find(Sequence& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.42. Parameters

              +======= +

              Table 1.42. Parameters

              +======= +

              Table 1.46. Parameters

              +======= +

              Table 1.46. Parameters

              +======= +

              Table 1.46. Parameters

              +======= +

              Table 1.46. Parameters

              +======= +

              Table 1.46. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -99,9 +182,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              find<T>(seq)
              @@ -117,22 +206,97 @@
                           to find_if<boost::is_same<_, T> >(seq)
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear. At most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/find.hpp>
               #include <boost/fusion/include/find.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<char,int> vec('a','0');
               assert(*find<int>(vec) == '0');
              @@ -141,7 +305,7 @@
               
               
              -
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              For a sequence seq and @@ -41,8 +74,33 @@ element of seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -52,8 +110,33 @@
                   Sequence const& seq, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.41. Parameters

              +======= +

              Table 1.41. Parameters

              +======= +

              Table 1.45. Parameters

              +======= +

              Table 1.45. Parameters

              +======= +

              Table 1.45. Parameters

              +======= +

              Table 1.45. Parameters

              +======= +

              Table 1.45. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -100,9 +183,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              none(seq, f);
              @@ -117,22 +206,97 @@
                           element e in seq. Result equivalent to !any(seq, f).
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear. At most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/none.hpp>
               #include <boost/fusion/include/none.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct odd
               {
              @@ -149,7 +313,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              A metafunction returning the result type of all.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.47. Parameters

              +======= +

              Table 1.47. Parameters

              +======= +

              Table 1.51. Parameters

              +======= +

              Table 1.51. Parameters

              +======= +

              Table 1.51. Parameters

              +======= +

              Table 1.51. Parameters

              +======= +

              Table 1.51. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -98,9 +181,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::all<Sequence, F>::type
              @@ -118,15 +207,65 @@
                           The return type is always bool.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/all.hpp>
               #include <boost/fusion/include/all.hpp>
              @@ -134,7 +273,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              A metafunction returning the result type of any.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.46. Parameters

              +======= +

              Table 1.46. Parameters

              +======= +

              Table 1.50. Parameters

              +======= +

              Table 1.50. Parameters

              +======= +

              Table 1.50. Parameters

              +======= +

              Table 1.50. Parameters

              +======= +

              Table 1.50. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -98,9 +181,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::any<Sequence, F>::type
              @@ -118,15 +207,65 @@
                           The return type is always bool.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/any.hpp>
               #include <boost/fusion/include/any.hpp>
              @@ -134,7 +273,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              A metafunction that returns the result type of count given the sequence and search types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.51. Parameters

              +======= +

              Table 1.51. Parameters

              +======= +

              Table 1.55. Parameters

              +======= +

              Table 1.55. Parameters

              +======= +

              Table 1.55. Parameters

              +======= +

              Table 1.55. Parameters

              +======= +

              Table 1.55. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,9 +180,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::count<T>::type
              @@ -113,15 +202,65 @@
                           int.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/count.hpp>
               #include <boost/fusion/include/count.hpp>
              @@ -129,7 +268,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              A metafunction that returns the result type of count_if given the sequence and predicate types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.52. Parameters

              +======= +

              Table 1.52. Parameters

              +======= +

              Table 1.56. Parameters

              +======= +

              Table 1.56. Parameters

              +======= +

              Table 1.56. Parameters

              +======= +

              Table 1.56. Parameters

              +======= +

              Table 1.56. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,9 +180,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::count_if<Sequence, Pred>::type
              @@ -113,15 +202,65 @@
                           always int.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/count_if.hpp>
               #include <boost/fusion/include/count_if.hpp>
              @@ -129,7 +268,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              +<<<<<<< .working Returns the result type of find, given the sequence and search types. +======= + Returns the result type of find, given the sequence and + search types. +>>>>>>> .merge-right.r57242

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +114,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.49. Parameters

              +======= +

              Table 1.49. Parameters

              +======= +

              Table 1.53. Parameters

              +======= +

              Table 1.53. Parameters

              +======= +

              Table 1.53. Parameters

              +======= +

              Table 1.53. Parameters

              +======= +

              Table 1.53. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,9 +185,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::find<Sequence, T>::type
              @@ -115,15 +209,65 @@
                           if there is no such element.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear, at most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/find.hpp>
               #include <boost/fusion/include/find.hpp>
              @@ -131,7 +275,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              +<<<<<<< .working Returns the result type of find_if given the sequence and predicate types. +======= + Returns the result type of find_if given the sequence and + predicate types. +>>>>>>> .merge-right.r57242

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +114,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.50. Parameters

              +======= +

              Table 1.50. Parameters

              +======= +

              Table 1.54. Parameters

              +======= +

              Table 1.54. Parameters

              +======= +

              Table 1.54. Parameters

              +======= +

              Table 1.54. Parameters

              +======= +

              Table 1.54. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -98,9 +186,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::find_if<Sequence, Pred>::type
              @@ -116,15 +210,65 @@
                           to true. Returns result_of::end<Sequence>::type if there is no such element.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Linear. At most result_of::size<Sequence>::value comparisons.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/find_if.hpp>
               #include <boost/fusion/include/find_if.hpp>
              @@ -132,7 +276,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              A metafunction returning the result type of none.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.48. Parameters

              +======= +

              Table 1.48. Parameters

              +======= +

              Table 1.52. Parameters

              +======= +

              Table 1.52. Parameters

              +======= +

              Table 1.52. Parameters

              +======= +

              Table 1.52. Parameters

              +======= +

              Table 1.52. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -98,9 +181,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::none<Sequence, F>::type
              @@ -118,15 +207,65 @@
                           The return type is always bool.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/query/none.hpp>
               #include <boost/fusion/include/none.hpp>
              @@ -134,7 +273,7 @@
               
               
              -
              +<<<<<<< .working

              Header

              +======= +
              + + Header +
              +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation.hpp>
               #include <boost/fusion/include/transformation.hpp>
               
              diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html index 99877326..5ecc11dd 100644 --- a/doc/html/fusion/algorithm/transformation/functions.html +++ b/doc/html/fusion/algorithm/transformation/functions.html @@ -3,7 +3,11 @@ Functions +<<<<<<< .working +======= + +>>>>>>> .merge-right.r57125 diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index f9338990..c7f6eca7 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -1,10 +1,18 @@ - + clear +<<<<<<< .working +======= + +<<<<<<< .working +>>>>>>> .merge-right.r57125 +======= + +>>>>>>> .merge-right.r58299 @@ -30,15 +38,65 @@
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              clear returns an empty sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synposis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synposis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -46,8 +104,33 @@
               typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.62. Parameters

              +======= +

              Table 1.62. Parameters

              +======= +

              Table 1.66. Parameters

              +======= +

              Table 1.66. Parameters

              +======= +

              Table 1.66. Parameters

              +======= +

              Table 1.66. Parameters

              +======= +

              Table 1.66. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -79,9 +162,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              clear(seq);
              @@ -96,29 +185,104 @@
                           with no elements.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/clear.hpp>
               #include <boost/fusion/include/clear.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(clear(make_vector(1,2,3)) == make_vector());
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence, containing all the elements of the original except those at a specified iterator, or between two iterators.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synposis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synposis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -57,8 +115,33 @@
                   Sequence const& seq, First const& it1, Last const& it2);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.63. Parameters

              +======= +

              Table 1.63. Parameters

              +======= +

              Table 1.67. Parameters

              +======= +

              Table 1.67. Parameters

              +======= +

              Table 1.67. Parameters

              +======= +

              Table 1.67. Parameters

              +======= +

              Table 1.67. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -119,18 +202,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              erase(seq, pos);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing all the elements of seq @@ -139,32 +244,123 @@

              erase(seq, first, last);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, with all the elements of seq, in their original order, except those in the range [first,last).

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/erase.hpp>
               #include <boost/fusion/include/erase.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int, double, char> vec(1, 2.0, 'c');
               assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
              @@ -173,7 +369,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              +<<<<<<< .working For an Associative Sequence seq, @@ -41,20 +75,78 @@ Sequence">Forward Sequence containing all the elements of the original except those with a given key. +======= + For an associative] + Forward Sequence + seq, returns a associative] + Forward Sequence + containing all the elements of the original except those with a given + key. +>>>>>>> .merge-right.r57242

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synposis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synposis +>>>>>>> .merge-right.r57125
              template<
                   typename Key,
                   typename Sequence
                   >
              -typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
              +typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.64. Parameters

              +======= +

              Table 1.64. Parameters

              +======= +

              Table 1.68. Parameters

              +======= +

              Table 1.68. Parameters

              +======= +

              Table 1.68. Parameters

              +======= +

              Table 1.68. Parameters

              +======= +

              Table 1.68. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -73,12 +165,24 @@ +<<<<<<< .working +

              seq

              A model of Associative +======= +

              +

              + seq +

              +
              +

              + A model of Forward + Sequence and Associative +>>>>>>> .merge-right.r57242 Sequence

              @@ -99,9 +203,15 @@

              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              erase_key<Key>(seq);
              @@ -109,6 +219,7 @@
               

              Return type: A model of Forward + Sequence and Associative Sequence.

              @@ -117,29 +228,104 @@ except those with key Key.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/erase_key.hpp>
               #include <boost/fusion/include/erase_key.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              For a given sequence, filter returns a new sequences containing only the elements of a specified type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename T,
              @@ -48,8 +106,33 @@
               typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.53. Parameters

              +======= +

              Table 1.53. Parameters

              +======= +

              Table 1.57. Parameters

              +======= +

              Table 1.57. Parameters

              +======= +

              Table 1.57. Parameters

              +======= +

              Table 1.57. Parameters

              +======= +

              Table 1.57. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -94,18 +177,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              filter<T>(seq);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing all the elements of seq @@ -113,22 +218,97 @@ to filter_if<boost::same_type<_, T> >(seq).

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/filter.hpp>
               #include <boost/fusion/include/filter.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int,int,long,long> vec(1,2,3,4);
               assert(filter<int>(vec) == make_vector(1,2));
              @@ -136,7 +316,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              For a given sequence, filter_if returns a new sequences @@ -39,8 +72,33 @@ Lambda Expression evaluates to boost::mpl::true_.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Pred,
              @@ -49,8 +107,33 @@
               typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.54. Parameters

              +======= +

              Table 1.54. Parameters

              +======= +

              Table 1.58. Parameters

              +======= +

              Table 1.58. Parameters

              +======= +

              Table 1.58. Parameters

              +======= +

              Table 1.58. Parameters

              +======= +

              Table 1.58. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -96,18 +179,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              filter_if<Pred>(seq);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing all the elements of seq @@ -116,22 +221,97 @@ is the same as in the original sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/filter_if.hpp>
               #include <boost/fusion/include/filter_if.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int,int,double,double> vec(1,2,3.0,4.0);
               assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
              @@ -139,7 +319,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence with all the elements of the original, an a new element inserted the position described by a given iterator.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synposis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synposis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
                   typename Pos,
                   typename T
                   >
              -unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
              +typename result_of::insert<Sequence const, Pos, T>::type insert(
              +    Sequence const& seq, Pos const& pos, T const& t);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.65. Parameters

              +======= +

              Table 1.65. Parameters

              +======= +

              Table 1.69. Parameters

              +======= +

              Table 1.69. Parameters

              +======= +

              Table 1.69. Parameters

              +======= +

              Table 1.69. Parameters

              +======= +

              Table 1.69. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -108,18 +192,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              insert(seq, p, t);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing all the elements of seq, @@ -128,22 +234,97 @@ pos.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/insert.hpp>
               #include <boost/fusion/include/insert.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int,int> vec(1,2);
               assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
              @@ -151,7 +332,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence with another sequence inserted at a specified iterator.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synposis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synposis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -50,8 +108,33 @@
                   Sequence const& seq, Pos const& pos, Range const& range);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.66. Parameters

              +======= +

              Table 1.66. Parameters

              +======= +

              Table 1.70. Parameters

              +======= +

              Table 1.70. Parameters

              +======= +

              Table 1.70. Parameters

              +======= +

              Table 1.70. Parameters

              +======= +

              Table 1.70. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -111,18 +194,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              insert(seq, pos, range);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing all the elements of seq, @@ -131,22 +236,97 @@ All elements retaining their ordering from the orignal sequences.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/insert_range.hpp>
               #include <boost/fusion/include/insert_range.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int,int> vec(1,2);
               assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
              @@ -154,7 +334,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Takes 2 sequences and returns a sequence containing the elements of the first followed by the elements of the second.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename LhSequence,
              @@ -47,8 +105,33 @@
               typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.67. Parameters

              +======= +

              Table 1.67. Parameters

              +======= +

              Table 1.71. Parameters

              +======= +

              Table 1.71. Parameters

              +======= +

              Table 1.71. Parameters

              +======= +

              Table 1.71. Parameters

              +======= +

              Table 1.71. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -95,41 +178,139 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              join(lhs, rhs);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing all the elements of lhs followed by all the elements of rhs. - The order of th elements is preserved. + The order of the elements is preserved.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/join.hpp>
               #include <boost/fusion/include/join.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              vector<int,char> v1(1, 'a');
               vector<int,char> v2(2, 'b');
              @@ -138,7 +319,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence, with the last element of the original removed.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -46,8 +104,33 @@
               typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.69. Parameters

              +======= +

              Table 1.69. Parameters

              +======= +

              Table 1.73. Parameters

              +======= +

              Table 1.73. Parameters

              +======= +

              Table 1.73. Parameters

              +======= +

              Table 1.73. Parameters

              +======= +

              Table 1.73. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -79,18 +162,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              pop_back(seq);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence containing all the elements of seq, @@ -98,29 +203,104 @@ same order as they were in seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/pop_back.hpp>
               #include <boost/fusion/include/pop_back.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence, with the first element of the original removed.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -46,8 +104,33 @@
               typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.70. Parameters

              +======= +

              Table 1.70. Parameters

              +======= +

              Table 1.74. Parameters

              +======= +

              Table 1.74. Parameters

              +======= +

              Table 1.74. Parameters

              +======= +

              Table 1.74. Parameters

              +======= +

              Table 1.74. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -79,18 +162,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              pop_front(seq);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence containing all the elements of seq, @@ -98,29 +203,104 @@ same order as they were in seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/pop_front.hpp>
               #include <boost/fusion/include/pop_front.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence with an element added at the end.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -48,8 +106,33 @@
                   Sequence const& seq, T const& t);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.71. Parameters

              +======= +

              Table 1.71. Parameters

              +======= +

              Table 1.75. Parameters

              +======= +

              Table 1.75. Parameters

              +======= +

              Table 1.75. Parameters

              +======= +

              Table 1.75. Parameters

              +======= +

              Table 1.75. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -94,18 +177,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              push_back(seq, t);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing all the elements of seq, @@ -113,29 +218,104 @@ to the end. The elements are in the same order as they were in seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/push_back.hpp>
               #include <boost/fusion/include/push_back.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence with an element added at the beginning.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -48,8 +106,33 @@
                   Sequence const& seq, T const& t);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.72. Parameters

              +======= +

              Table 1.72. Parameters

              +======= +

              Table 1.76. Parameters

              +======= +

              Table 1.76. Parameters

              +======= +

              Table 1.76. Parameters

              +======= +

              Table 1.76. Parameters

              +======= +

              Table 1.76. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -94,18 +177,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              push_back(seq, t);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing all the elements of seq, @@ -114,29 +219,104 @@ seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/push_front.hpp>
               #include <boost/fusion/include/push_front.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence, with all the elements of the original sequence, except those of a given type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename T,
              @@ -48,8 +106,33 @@
               typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.59. Parameters

              +======= +

              Table 1.59. Parameters

              +======= +

              Table 1.63. Parameters

              +======= +

              Table 1.63. Parameters

              +======= +

              Table 1.63. Parameters

              +======= +

              Table 1.63. Parameters

              +======= +

              Table 1.63. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -94,18 +177,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              remove<T>(seq);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing all the elements of seq, @@ -113,22 +218,97 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/remove.hpp>
               #include <boost/fusion/include/remove.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int,double> vec(1,2.0);
               assert(remove<double>(vec) == make_vector(1));
              @@ -136,7 +316,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence, containing all the elements of the original except those where a given unary function object evaluates to true.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Pred,
              @@ -48,8 +106,33 @@
               typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.60. Parameters

              +======= +

              Table 1.60. Parameters

              +======= +

              Table 1.64. Parameters

              +======= +

              Table 1.64. Parameters

              +======= +

              Table 1.64. Parameters

              +======= +

              Table 1.64. Parameters

              +======= +

              Table 1.64. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -95,18 +178,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              remove_if<Pred>(seq);
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing all the elements of seq, @@ -115,22 +220,97 @@ >(seq).

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/remove_if.hpp>
               #include <boost/fusion/include/remove_if.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              const vector<int,double> vec(1,2.0);
               assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
              @@ -138,7 +318,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Replaces each value within a sequence of a given type and value with a new value.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -49,8 +107,33 @@
                   Sequence const& seq, T const& old_value, T const& new_value);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.57. Parameters

              +======= +

              Table 1.57. Parameters

              +======= +

              Table 1.61. Parameters

              +======= +

              Table 1.61. Parameters

              +======= +

              Table 1.61. Parameters

              +======= +

              Table 1.61. Parameters

              +======= +

              Table 1.61. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -110,9 +193,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              replace(seq, old_value, new_value);
              @@ -129,29 +218,104 @@
                           to elements with the same type and equal to old_value.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/replace.hpp>
               #include <boost/fusion/include/replace.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Replaces each element of a given sequence for which an unary function @@ -39,8 +72,33 @@ replaced with a new value.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -50,8 +108,33 @@
                   Sequence const& seq, F f, T const& new_value);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.58. Parameters

              +======= +

              Table 1.58. Parameters

              +======= +

              Table 1.62. Parameters

              +======= +

              Table 1.62. Parameters

              +======= +

              Table 1.62. Parameters

              +======= +

              Table 1.62. Parameters

              +======= +

              Table 1.62. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -109,9 +192,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              replace_if(seq, f, new_value);
              @@ -129,22 +218,97 @@
                           evaluates to true.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/replace_if.hpp>
               #include <boost/fusion/include/replace_if.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct odd
               {
              @@ -160,7 +324,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns a new sequence with the elements of the original in reverse order.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synposis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synposis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -46,8 +104,33 @@
               typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.61. Parameters

              +======= +

              Table 1.61. Parameters

              +======= +

              Table 1.65. Parameters

              +======= +

              Table 1.65. Parameters

              +======= +

              Table 1.65. Parameters

              +======= +

              Table 1.65. Parameters

              +======= +

              Table 1.65. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -79,47 +162,149 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              reverse(seq);
               

              +<<<<<<< .working Return type: A model of Bidirectional Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence containing all the elements of seq in reverse order.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/reverse.hpp>
               #include <boost/fusion/include/reverse.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              For a sequence seq and @@ -41,8 +74,33 @@ of seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Unary +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Unary +>>>>>>> .merge-right.r57125 version synopsis
              template<
              @@ -53,8 +111,33 @@
                   Sequence const& seq, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.55. Parameters

              +======= +

              Table 1.55. Parameters

              +======= +

              Table 1.59. Parameters

              +======= +

              Table 1.59. Parameters

              +======= +

              Table 1.59. Parameters

              +======= +

              Table 1.59. Parameters

              +======= +

              Table 1.59. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -102,9 +185,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              transform(seq, f);
              @@ -120,8 +209,33 @@
                           within seq.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Binary +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Binary +>>>>>>> .merge-right.r57125 version synopsis
              template<
              @@ -133,8 +247,33 @@
                   Sequence1 const& seq1, Sequence2 const& seq2, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.56. Parameters

              +======= +

              Table 1.56. Parameters

              +======= +

              Table 1.60. Parameters

              +======= +

              Table 1.60. Parameters

              +======= +

              Table 1.60. Parameters

              +======= +

              Table 1.60. Parameters

              +======= +

              Table 1.60. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -207,22 +346,97 @@ within seq1 and seq2 respectively.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/transform.hpp>
               #include <boost/fusion/include/transform.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct triple
               {
              @@ -239,7 +453,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence1,
              @@ -51,8 +109,33 @@
               zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.68. Parameters

              +======= +

              Table 1.68. Parameters

              +======= +

              Table 1.72. Parameters

              +======= +

              Table 1.72. Parameters

              +======= +

              Table 1.72. Parameters

              +======= +

              Table 1.72. Parameters

              +======= +

              Table 1.72. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -84,9 +167,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              zip(seq1, seq2, ... seqN);
              @@ -107,22 +196,97 @@
                           'c'))
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/zip.hpp>
               #include <boost/fusion/include/zip.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              vector<int,char> v1(1, 'a');
               vector<int,char> v2(2, 'b');
              @@ -131,7 +295,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of clear, given the input sequence type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.82. Parameters

              +======= +

              Table 1.82. Parameters

              +======= +

              Table 1.86. Parameters

              +======= +

              Table 1.86. Parameters

              +======= +

              Table 1.86. Parameters

              +======= +

              Table 1.86. Parameters

              +======= +

              Table 1.86. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -81,9 +164,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::clear<Sequence>::type
              @@ -97,15 +186,65 @@
                           Semantics: Returns an empty sequence.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/clear.hpp>
               #include <boost/fusion/include/clear.hpp>
              @@ -113,7 +252,7 @@
               
               
              -
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of erase_key, given the sequence and key types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.84. Parameters

              +======= +

              Table 1.84. Parameters

              +======= +

              Table 1.88. Parameters

              +======= +

              Table 1.88. Parameters

              +======= +

              Table 1.88. Parameters

              +======= +

              Table 1.88. Parameters

              +======= +

              Table 1.88. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -71,12 +154,24 @@ +<<<<<<< .working +

              Sequence

              A model of Associative +======= +

              +

              + Sequence +

              +
              +

              + A model of Forward + Sequence and Associative +>>>>>>> .merge-right.r57242 Sequence

              @@ -97,16 +192,27 @@

              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::erase_key<Sequence, Key>::type
               

              +<<<<<<< .working Return type: A model of Associative +======= + Return type: A model of Forward + Sequence and Associative +>>>>>>> .merge-right.r57242 Sequence.

              @@ -115,15 +221,65 @@ except those with key Key.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/erase_key.hpp>
               #include <boost/fusion/include/erase_key.hpp>
              @@ -131,7 +287,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of filter given the sequence type and type to retain.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.73. Parameter

              +======= +

              Table 1.73. Parameter

              +======= +

              Table 1.77. Parameter

              +======= +

              Table 1.77. Parameter

              +======= +

              Table 1.77. Parameter

              +======= +

              Table 1.77. Parameter

              +======= +

              Table 1.77. Parameter

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,18 +180,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::filter<Sequence, T>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing the elements of Sequence @@ -117,15 +222,65 @@ boost::is_same<mpl::_, T> >::type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/filter.hpp>
               #include <boost/fusion/include/filter.hpp>
              @@ -133,7 +288,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of filter_if given the sequence @@ -39,8 +72,33 @@ Lambda Expression predicate type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -52,8 +110,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.74. Parameter

              +======= +

              Table 1.74. Parameter

              +======= +

              Table 1.78. Parameter

              +======= +

              Table 1.78. Parameter

              +======= +

              Table 1.78. Parameter

              +======= +

              Table 1.78. Parameter

              +======= +

              Table 1.78. Parameter

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -99,18 +182,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::filter_if<Sequence, Pred>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing the elements of Sequence @@ -118,15 +223,65 @@ to boost::mpl::true_.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/filter_if.hpp>
               #include <boost/fusion/include/filter_if.hpp>
              @@ -134,7 +289,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of insert, given the sequence, position iterator and insertion types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -52,8 +110,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.85. Parameters

              +======= +

              Table 1.85. Parameters

              +======= +

              Table 1.89. Parameters

              +======= +

              Table 1.89. Parameters

              +======= +

              Table 1.89. Parameters

              +======= +

              Table 1.89. Parameters

              +======= +

              Table 1.89. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -111,18 +194,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::insert<Sequence, Position, T>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence with an element of type T inserted @@ -130,15 +235,65 @@ in Sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/insert.hpp>
               #include <boost/fusion/include/insert.hpp>
              @@ -146,7 +301,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of insert_range, given the input sequence, position iterator and insertion range types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -52,8 +110,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.86. Parameters

              +======= +

              Table 1.86. Parameters

              +======= +

              Table 1.90. Parameters

              +======= +

              Table 1.90. Parameters

              +======= +

              Table 1.90. Parameters

              +======= +

              Table 1.90. Parameters

              +======= +

              Table 1.90. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -113,18 +196,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::insert_range<Sequence, Position, Range>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence with the elements of Range inserted @@ -132,15 +237,65 @@ into Sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/insert_range.hpp>
               #include <boost/fusion/include/insert_range.hpp>
              @@ -148,7 +303,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result of joining 2 sequences, given the sequence types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename LhSequence,
              @@ -50,17 +108,59 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Expression +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::join<LhSequence, RhSequence>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing the elements of LhSequence @@ -68,15 +168,65 @@ The order of the elements in the 2 sequences is preserved.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/join.hpp>
               #include <boost/fusion/include/join.hpp>
              @@ -84,7 +234,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of pop_back, given the input sequence type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.87. Parameters

              +======= +

              Table 1.87. Parameters

              +======= +

              Table 1.91. Parameters

              +======= +

              Table 1.91. Parameters

              +======= +

              Table 1.91. Parameters

              +======= +

              Table 1.91. Parameters

              +======= +

              Table 1.91. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -83,41 +166,113 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::pop_back<Sequence>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence with all the elements of Sequence except the last element.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              -
              #include <boost/fusion/algorithm/tranformation/pop_back.hpp>
              +
              #include <boost/fusion/algorithm/transformation/pop_back.hpp>
               #include <boost/fusion/include/pop_back.hpp>
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of pop_front, given the input sequence type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.88. Parameters

              +======= +

              Table 1.88. Parameters

              +======= +

              Table 1.92. Parameters

              +======= +

              Table 1.92. Parameters

              +======= +

              Table 1.92. Parameters

              +======= +

              Table 1.92. Parameters

              +======= +

              Table 1.92. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -83,37 +166,88 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::pop_front<Sequence>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence with all the elements of Sequence except the first element.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              -

              - /algorithm/transformation/pop_front.hpp> -

              +
              + + Header +
              +
              #include <boost/fusion/algorithm/transformation/pop_front.hpp>
              +#include <boost/fusion/include/pop_front.hpp>
              +
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of push_back, given the types of the input sequence and element to push.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.89. Parameters

              +======= +

              Table 1.89. Parameters

              +======= +

              Table 1.93. Parameters

              +======= +

              Table 1.93. Parameters

              +======= +

              Table 1.93. Parameters

              +======= +

              Table 1.93. Parameters

              +======= +

              Table 1.93. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,18 +180,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::push_back<Sequence, T>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence with the elements of Sequence @@ -116,19 +221,48 @@ added to the end.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              -

              - /algorithm/transformation/push_back.hpp> -

              +
              + + Header +
              +
              #include <boost/fusion/algorithm/transformation/push_back.hpp>
              +#include <boost/fusion/include/push_back.hpp>
              +
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of push_front, given the types of the input sequence and element to push.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.90. Parameters

              +======= +

              Table 1.90. Parameters

              +======= +

              Table 1.94. Parameters

              +======= +

              Table 1.94. Parameters

              +======= +

              Table 1.94. Parameters

              +======= +

              Table 1.94. Parameters

              +======= +

              Table 1.94. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,18 +180,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::push_front<Sequence, T>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence with the elements of Sequence @@ -116,19 +221,48 @@ added to the beginning.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              -

              - /algorithm/transformation/push_front.hpp> -

              +
              + + Header +
              +
              #include <boost/fusion/algorithm/transformation/push_front.hpp>
              +#include <boost/fusion/include/push_front.hpp>
              +
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of remove, given the sequence and removal types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.79. Parameters

              +======= +

              Table 1.79. Parameters

              +======= +

              Table 1.83. Parameters

              +======= +

              Table 1.83. Parameters

              +======= +

              Table 1.83. Parameters

              +======= +

              Table 1.83. Parameters

              +======= +

              Table 1.83. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,18 +180,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::remove<Sequence, T>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing the elements of Sequence @@ -117,15 +222,65 @@ boost::is_same<mpl::_, T> >::type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/remove.hpp>
               #include <boost/fusion/include/remove.hpp>
              @@ -133,7 +288,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of remove_if, given the input sequence @@ -39,8 +72,33 @@ Lambda Expression predicate types.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -52,8 +110,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.80. Parameters

              +======= +

              Table 1.80. Parameters

              +======= +

              Table 1.84. Parameters

              +======= +

              Table 1.84. Parameters

              +======= +

              Table 1.84. Parameters

              +======= +

              Table 1.84. Parameters

              +======= +

              Table 1.84. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -99,18 +182,40 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::remove_if<Sequence, Pred>::type
               

              +<<<<<<< .working Return type: A model of Forward Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence containing the elements of Sequence @@ -118,15 +223,65 @@ to boost::mpl::false_.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/remove_if.hpp>
               #include <boost/fusion/include/remove_if.hpp>
              @@ -134,7 +289,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of replace, given the types of the input sequence and element to replace.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -51,8 +109,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.77. Parameters

              +======= +

              Table 1.77. Parameters

              +======= +

              Table 1.81. Parameters

              +======= +

              Table 1.81. Parameters

              +======= +

              Table 1.81. Parameters

              +======= +

              Table 1.81. Parameters

              +======= +

              Table 1.81. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -97,9 +180,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::replace<Sequence,T>::type
              @@ -114,15 +203,65 @@
                           replace.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/replace.hpp>
               #include <boost/fusion/include/replace.hpp>
              @@ -130,7 +269,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of replace_if, given the types @@ -40,8 +73,33 @@ Function Object predicate and replacement object.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence,
              @@ -53,8 +111,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.78. Parameters

              +======= +

              Table 1.78. Parameters

              +======= +

              Table 1.82. Parameters

              +======= +

              Table 1.82. Parameters

              +======= +

              Table 1.82. Parameters

              +======= +

              Table 1.82. Parameters

              +======= +

              Table 1.82. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -112,9 +195,15 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::replace_if<Sequence,F,T>::type
              @@ -129,15 +218,65 @@
                           replace_if.
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/replace_if.hpp>
               #include <boost/fusion/include/replace_if.hpp>
              @@ -145,7 +284,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Returns the result type of reverse, given the input sequence type.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence
              @@ -50,8 +108,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.81. Parameters

              +======= +

              Table 1.81. Parameters

              +======= +

              Table 1.85. Parameters

              +======= +

              Table 1.85. Parameters

              +======= +

              Table 1.85. Parameters

              +======= +

              Table 1.85. Parameters

              +======= +

              Table 1.85. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -83,32 +166,109 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::reverse<Sequence>::type
               

              +<<<<<<< .working Return type: A model of Bidirectional Sequence. +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a sequence with the elements in the reverse order to Sequence.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/reverse.hpp>
               #include <boost/fusion/include/reverse.hpp>
              @@ -116,7 +276,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              For a sequence seq and @@ -41,8 +74,33 @@ of seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Unary +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Unary +>>>>>>> .merge-right.r57125 version synopsis
              template<
              @@ -53,8 +111,33 @@
                   Sequence const& seq, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.75. Parameters

              +======= +

              Table 1.75. Parameters

              +======= +

              Table 1.79. Parameters

              +======= +

              Table 1.79. Parameters

              +======= +

              Table 1.79. Parameters

              +======= +

              Table 1.79. Parameters

              +======= +

              Table 1.79. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -102,26 +185,73 @@
              +<<<<<<< .working
              Expression +======= +
              + + Expression +>>>>>>> .merge-right.r57125 Semantics
              transform(seq, f);
               

              +<<<<<<< .working Return type: A model of Forward Sequence +======= + Return type: +>>>>>>> .merge-right.r57242

              +

              Semantics: Returns a new sequence, containing the return values of f(e) for each element e within seq.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Binary +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Binary +>>>>>>> .merge-right.r57125 version synopsis
              template<
              @@ -133,8 +263,33 @@
                   Sequence1 const& seq1, Sequence2 const& seq2, F f);
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working

              Table 1.76. Parameters

              +======= +

              Table 1.76. Parameters

              +======= +

              Table 1.80. Parameters

              +======= +

              Table 1.80. Parameters

              +======= +

              Table 1.80. Parameters

              +======= +

              Table 1.80. Parameters

              +======= +

              Table 1.80. Parameters

              +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 +
              +>>>>>>> .merge-right.r57125 @@ -207,22 +362,97 @@ within seq1 and seq2 respectively.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant. Returns a view which is lazily evaluated.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/transform.hpp>
               #include <boost/fusion/include/transform.hpp>
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Example +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Example +>>>>>>> .merge-right.r57125
              struct triple
               {
              @@ -239,7 +469,7 @@
               
               
              -
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Description +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Description +>>>>>>> .merge-right.r57125

              Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Synopsis +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Synopsis +>>>>>>> .merge-right.r57125
              template<
                   typename Sequence1,
              @@ -53,8 +111,33 @@
               };
               
              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Expression +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Expression +>>>>>>> .merge-right.r57125 Semantics
              result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
              @@ -75,15 +158,65 @@
                           'c'))
                         

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Complexity +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Complexity +>>>>>>> .merge-right.r57125

              Constant.

              +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working +<<<<<<< .working Header +======= + +======= + +======= + +======= + +======= + +======= + +>>>>>>> .merge-right.r58559 +>>>>>>> .merge-right.r58549 +>>>>>>> .merge-right.r58299 +>>>>>>> .merge-right.r57337 +>>>>>>> .merge-right.r57242 + Header +>>>>>>> .merge-right.r57125
              #include <boost/fusion/algorithm/transformation/zip.hpp>
               #include <boost/fusion/include/zip.hpp>
              @@ -91,7 +224,7 @@
               
               
              -
              - + Description

              @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

              - + Refinement of
              @@ -65,7 +65,7 @@
              - + Expression requirements
              @@ -112,7 +112,7 @@
              - + Models
                @@ -124,7 +124,7 @@
              - + Examples
              & a_free_function
              diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
              index 02d95854..da8e441d 100644
              --- a/doc/html/fusion/functional/generation/functions/mk_fused.html
              +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html
              @@ -28,7 +28,7 @@
                         make_fused
               
               
              - + Description

              @@ -37,7 +37,7 @@ conversion is applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -45,7 +45,7 @@
               make_fused(F const & f);
               
              - + Parameters
              @@ -91,7 +91,7 @@
              - + Expression Semantics
              @@ -104,14 +104,14 @@ Semantics: Returns a fused adapter for f.

              - + Header
              #include <boost/fusion/functional/generation/make_fused.hpp>
               #include <boost/fusion/include/make_fused.hpp>
               
              - + Example
              float sub(float a, float b) { return a - b; }
              @@ -126,7 +126,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 67ae4dc6..ac8fe2ee 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -28,7 +28,7 @@ make_fused_function_object
              - + Description

              @@ -38,7 +38,7 @@ conversion is applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -46,7 +46,7 @@
               make_fused_function_object(F const & f);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -106,14 +106,14 @@ for f.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
               #include <boost/fusion/include/make_fused_function_object.hpp>
               
              - + Example
              struct sub
              @@ -141,7 +141,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 238be2c8..5afa51b0 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -28,7 +28,7 @@ make_fused_procedure
              - + Description

              @@ -38,7 +38,7 @@ conversion applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -46,7 +46,7 @@
               make_fused_procedure(F const & f);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -106,14 +106,14 @@ f.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
               #include <boost/fusion/include/make_fused_procedure.hpp>
               
              - + Example
              vector<int,int,int> v(1,2,3);
              @@ -122,7 +122,7 @@
               assert(front(v) == 0);
               
              - + See also
              diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index 49260163..428884a4 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -28,7 +28,7 @@ make_unfused
              - + Description

              @@ -38,7 +38,7 @@ conversion is applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -46,7 +46,7 @@
               make_unfused(F const & f);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -105,14 +105,14 @@ Semantics: Returns a unfused adapter for f.

              - + Header
              #include <boost/fusion/functional/generation/make_unfused.hpp>
               #include <boost/fusion/include/make_unfused.hpp>
               
              - + Example
              struct fused_incrementer
              @@ -138,7 +138,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 6a2474cd..48b7c0cc 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -28,21 +28,21 @@ make_fused
              - + Description

              Returns the result type of make_fused.

              - + Header
              #include <boost/fusion/functional/generation/make_fused.hpp>
               #include <boost/fusion/include/make_fused.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,7 +55,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 b27e46e1..1c7bc1aa 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -28,21 +28,21 @@ make_fused_function_object
              - + Description

              Returns the result type of make_fused_function_object.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
               #include <boost/fusion/include/make_fused_function_object.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,7 +55,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 dbba277a..5f596268 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -28,21 +28,21 @@ make_fused_procedure
              - + Description

              Returns the result type of make_fused_procedure.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
               #include <boost/fusion/include/make_fused_procedure.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,7 +55,7 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 13e1dedf..f404fa0b 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -28,21 +28,21 @@ make_unfused
              - + Description

              Returns the result type of make_unfused.

              - + Header
              #include <boost/fusion/functional/generation/make_unfused.hpp>
               #include <boost/fusion/include/make_unfused.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,7 +55,7 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 8efa440d..147ca1b4 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@ invoke
              - + Description

              @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

              - + Synopsis
              template<
              @@ -67,7 +67,7 @@
               invoke(Function f, Sequence const & s);
               
              - + Parameters
              @@ -133,7 +133,7 @@
              - + Expression Semantics
              @@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

              - + Header
              #include <boost/fusion/functional/invocation/invoke.hpp>
               
              - + Example
              std::plus<int> add;
               assert(invoke(add,make_vector(1,1)) == 2);
               
              - + See also
              diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index 0b49cdd7..f6c749b8 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -28,7 +28,7 @@ invoke_function_object
              - + Description

              @@ -43,7 +43,7 @@ Constructors can be called applying Boost.Functional/Factory.

              - + Synopsis
              template<
              @@ -61,7 +61,7 @@
               invoke_function_object(Function f, Sequence const & s);
               
              - + Parameters
              @@ -127,7 +127,7 @@
              - + Expression Semantics
              @@ -143,13 +143,13 @@ as arguments and returns the result of the call expression.

              - + Header
              #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
               
              - + Example
              struct sub
              @@ -175,7 +175,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 8a7f7e8a..0230f3ce 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -28,7 +28,7 @@ invoke_procedure
              - + Description

              @@ -52,7 +52,7 @@ isn't implemented).

              - + Synopsis
              template<
              @@ -70,7 +70,7 @@
               invoke_procedure(Function f, Sequence const & s);
               
              - + Parameters
              @@ -136,7 +136,7 @@
              - + Expression Semantics
              @@ -151,13 +151,13 @@ as arguments.

              - + Header
              #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
               
              - + Example
              vector<int,int> v(1,2);
              @@ -166,7 +166,7 @@
               assert(front(v) == 3);
               
              - + See also
              diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 29a2bcf6..08dbe5be 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -27,13 +27,13 @@ Limits
              - + Header
              #include <boost/fusion/functional/invocation/limits.hpp>
               
              - + Macros

              diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index cc7f9680..94db530f 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@ invoke

              - + Description

              Returns the result type of invoke.

              - + Synopsis
              namespace result_of
              @@ -50,7 +50,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 0bc7b6d2..0ac08c06 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -28,14 +28,14 @@ invoke_function_object
              - + Description

              Returns the result type of invoke_function_object.

              - + Synopsis
              namespace result_of
              @@ -51,7 +51,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 20a7241a..7e954db2 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -28,14 +28,14 @@ invoke_procedure
              - + Description

              Returns the result type of invoke_procedure.

              - + Synopsis
              namespace result_of
              @@ -51,7 +51,7 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 3185a2d6..6b680eb1 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -117,7 +117,7 @@ sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you wish to work solely on types - [1] + [1] . In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence @@ -132,7 +132,7 @@



              -

              [1] +

              [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 9da92495..4d26d92b 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -81,7 +81,7 @@ Sequence.

              - + Header

              #include <boost/fusion/iterator.hpp>
              diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html
              index 94a61458..33252858 100644
              --- a/doc/html/fusion/iterator/concepts/associative_iterator.html
              +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html
              @@ -28,7 +28,7 @@
                       Iterator
               
              - + Description

              @@ -50,7 +50,7 @@

              - + Refinement of
              @@ -61,7 +61,7 @@ Access Iterator

              - + Expression requirements
              @@ -113,7 +113,7 @@
              - + Meta Expressions
              @@ -174,7 +174,7 @@
              - + Models
                diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 76b87e35..9bac55c3 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -28,7 +28,7 @@ Iterator
              - + Description

              @@ -58,7 +58,7 @@

              - + Refinement of
              @@ -66,7 +66,7 @@ Forward Iterator

              - + Expression requirements
              @@ -173,7 +173,7 @@
              - + Meta Expressions
              @@ -208,7 +208,7 @@
              - + Expression Semantics
              @@ -248,7 +248,7 @@
              - + Invariants

              @@ -264,7 +264,7 @@

              - + Models
                diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 4288f9fc..2af24fa5 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -28,7 +28,7 @@ Iterator
              - + Description

              @@ -59,7 +59,7 @@

              - + Expression requirements
              @@ -237,7 +237,7 @@
              - + Meta Expressions
              @@ -348,7 +348,7 @@
              - + Expression Semantics
              @@ -474,7 +474,7 @@
              - + Invariants

              @@ -498,7 +498,7 @@

              - + Models
                diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index d68e74e3..afca75db 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -28,7 +28,7 @@ Access Iterator
              - + Description

              @@ -59,7 +59,7 @@

              - + Refinement of
              @@ -68,7 +68,7 @@ Iterator

              - + Expression requirements
              @@ -175,7 +175,7 @@
              - + Meta Expressions
              @@ -238,7 +238,7 @@
              - + Models
                diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index 4843fc11..89cb2f7b 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -27,14 +27,14 @@ advance
              - + Description

              Moves an iterator by a specified distance.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::advance<I, M>::type advance(I const& i);
               
              -

              Table 1.6. Parameters

              +

              Table 1.6. Parameters

              @@ -109,7 +109,7 @@

              - + Expression Semantics
              @@ -128,14 +128,14 @@ may be negative.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
              index abb3cfa2..b1ab20d6 100644
              --- a/doc/html/fusion/iterator/functions/advance_c.html
              +++ b/doc/html/fusion/iterator/functions/advance_c.html
              @@ -27,14 +27,14 @@
               advance_c
               
               
              - + Description

              Moves an iterator by a specified distance.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::advance_c<I, N>::type advance_c(I const& i);
               
              -

              Table 1.7. Parameters

              +

              Table 1.7. Parameters

              @@ -108,7 +108,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ may be negative.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
              index 321acfec..8d08053e 100644
              --- a/doc/html/fusion/iterator/functions/deref.html
              +++ b/doc/html/fusion/iterator/functions/deref.html
              @@ -27,14 +27,14 @@
               deref
               
               
              - + Description

              Deferences an iterator.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::deref<I>::type deref(I const& i);
               
              -

              Table 1.2. Parameters

              +

              Table 1.2. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -102,14 +102,14 @@ i.

              - + Header
              #include <boost/fusion/iterator/deref.hpp>
               #include <boost/fusion/include/deref.hpp>
               
              - + Example
              typedef vector<int,int&> vec;
              diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
              index c7d522ac..e01163fa 100644
              --- a/doc/html/fusion/iterator/functions/deref_data.html
              +++ b/doc/html/fusion/iterator/functions/deref_data.html
              @@ -27,7 +27,7 @@
               deref_data
               
               
              - + Description

              @@ -35,7 +35,7 @@ an associative iterator.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::deref_data<I>::type deref(I const& i);
               
              -

              Table 1.8. Parameters

              +

              Table 1.8. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

              - + Header
              #include <boost/fusion/iterator/deref_data.hpp>
               #include <boost/fusion/include/deref_data.hpp>
               
              - + Example
              typedef map<pair<float,int&> > map;
              diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
              index bf96a1dc..c4b65d06 100644
              --- a/doc/html/fusion/iterator/functions/distance.html
              +++ b/doc/html/fusion/iterator/functions/distance.html
              @@ -27,14 +27,14 @@
               distance
               
               
              - + Description

              Returns the distance between 2 iterators.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::distance<I, J>::type distance(I const& i, J const& j);
               
              -

              Table 1.5. Parameters

              +

              Table 1.5. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ iterators i and j.

              - + Header
              #include <boost/fusion/iterator/distance.hpp>
               #include <boost/fusion/include/distance.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
              index 35e2c9b2..6a7246a8 100644
              --- a/doc/html/fusion/iterator/functions/next.html
              +++ b/doc/html/fusion/iterator/functions/next.html
              @@ -27,14 +27,14 @@
               next
               
               
              - + Description

              Moves an iterator 1 position forwards.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::next<I>::type next(I const& i);
               
              -

              Table 1.3. Parameters

              +

              Table 1.3. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ next element after i.

              - + Header
              #include <boost/fusion/iterator/next.hpp>
               #include <boost/fusion/include/next.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
              index b87ac9af..7d38aa4a 100644
              --- a/doc/html/fusion/iterator/functions/prior.html
              +++ b/doc/html/fusion/iterator/functions/prior.html
              @@ -27,14 +27,14 @@
               prior
               
               
              - + Description

              Moves an iterator 1 position backwards.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::prior<I>::type prior(I const& i);
               
              -

              Table 1.4. Parameters

              +

              Table 1.4. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ element prior to i.

              - + Header
              #include <boost/fusion/iterator/prior.hpp>
               #include <boost/fusion/include/prior.hpp>
               
              - + Example
              typedef vector<int,int> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
              index 6a77da25..239511bf 100644
              --- a/doc/html/fusion/iterator/metafunctions/advance.html
              +++ b/doc/html/fusion/iterator/metafunctions/advance.html
              @@ -27,14 +27,14 @@
               advance
               
               
              - + Description

              Moves an iterator a specified distance.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.18. Parameters

              +

              Table 1.18. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -130,14 +130,14 @@ may be negative.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,double,char> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
              index 1fabed77..362907ff 100644
              --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
              +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
              @@ -27,14 +27,14 @@
               advance_c
               
               
              - + Description

              Moves an iterator by a specified distance.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.19. Parameters

              +

              Table 1.19. Parameters

              @@ -111,7 +111,7 @@

              - + Expression Semantics
              @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,double,char> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
              index 3cfcd574..0bc05592 100644
              --- a/doc/html/fusion/iterator/metafunctions/deref.html
              +++ b/doc/html/fusion/iterator/metafunctions/deref.html
              @@ -27,14 +27,14 @@
               deref
               
               
              - + Description

              Returns the type that will be returned by dereferencing an iterator.

              - + Synposis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.13. Parameters

              +

              Table 1.13. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -105,14 +105,14 @@ an iterator of type I.

              - + Header
              #include <boost/fusion/iterator/deref.hpp>
               #include <boost/fusion/include/deref.hpp>
               
              - + Example
              typedef vector<int,int&> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
              index ce192d68..eca6d101 100644
              --- a/doc/html/fusion/iterator/metafunctions/deref_data.html
              +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
              @@ -27,7 +27,7 @@
               deref_data
               
               
              - + Description

              @@ -35,7 +35,7 @@ referenced by an associative iterator.

              - + Synposis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.22. Parameters

              +

              Table 1.22. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

              - + Header
              #include <boosta/fusion/iterator/deref_data.hpp>
               #include <boost/fusion/include/deref_data.hpp>
               
              - + Example
              typedef map<pair<float,int> > map;
              diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
              index 62672f4c..8e2fa565 100644
              --- a/doc/html/fusion/iterator/metafunctions/distance.html
              +++ b/doc/html/fusion/iterator/metafunctions/distance.html
              @@ -27,14 +27,14 @@
               distance
               
               
              - + Description

              Returns the distance between two iterators.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.17. Parameters

              +

              Table 1.17. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -108,14 +108,14 @@ J.

              - + Header
              #include <boost/fusion/iterator/distance.hpp>
               #include <boost/fusion/include/distance.hpp>
               
              - + Example
              typedef vector<int,double,char> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
              index aae82f4d..44e9e8a4 100644
              --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
              +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
              @@ -27,7 +27,7 @@
               equal_to
               
               
              - + Description

              @@ -36,7 +36,7 @@ and J are equal.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
               };
               
              -

              Table 1.16. Parameters

              +

              Table 1.16. Parameters

              @@ -93,7 +93,7 @@

              - + Expression Semantics
              @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

              - + Header
              #include <boost/fusion/iterator/equal_to.hpp>
               #include <boost/fusion/include/equal_to.hpp>
               
              - + Example
              typedef vector<int,double> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
              index 0d9fce5c..2536f588 100644
              --- a/doc/html/fusion/iterator/metafunctions/key_of.html
              +++ b/doc/html/fusion/iterator/metafunctions/key_of.html
              @@ -27,7 +27,7 @@
               key_of
               
               
              - + Description

              @@ -35,7 +35,7 @@ iterator.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.20. Parameters

              +

              Table 1.20. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

              - + Header
              #include <boost/fusion/iterator/key_of.hpp>
               #include <boost/fusion/include/key_of.hpp>
               
              - + Example
              typedef map<pair<float,int> > vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
              index 83ebc4c3..aeaea9b2 100644
              --- a/doc/html/fusion/iterator/metafunctions/next.html
              +++ b/doc/html/fusion/iterator/metafunctions/next.html
              @@ -27,14 +27,14 @@
               next
               
               
              - + Description

              Returns the type of the next iterator in a sequence.

              - + Synposis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.14. Parameters

              +

              Table 1.14. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ next element in the sequence after I.

              - + Header
              #include <boost/fusion/iterator/next.hpp>
               #include <boost/fusion/include/next.hpp>
               
              - + Example
              typedef vector<int,double> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
              index a339e8ed..4a9587fa 100644
              --- a/doc/html/fusion/iterator/metafunctions/prior.html
              +++ b/doc/html/fusion/iterator/metafunctions/prior.html
              @@ -27,14 +27,14 @@
               prior
               
               
              - + Description

              Returns the type of the previous iterator in a sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.15. Parameters

              +

              Table 1.15. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ previous element in the sequence before I.

              - + Header
              #include <boost/fusion/iterator/prior.hpp>
               #include <boost/fusion/include/prior.hpp>
               
              - + Example
              typedef vector<int,double> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
              index 92fa32b8..e948f865 100644
              --- a/doc/html/fusion/iterator/metafunctions/value_of.html
              +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
              @@ -27,14 +27,14 @@
               value_of
               
               
              - + Description

              Returns the type stored at the position of an iterator.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.12. Parameters

              +

              Table 1.12. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -105,14 +105,14 @@ a sequence at iterator position I.

              - + Header
              #include <boost/fusion/iterator/value_of.hpp>
               #include <boost/fusion/include/value_of.hpp>
               
              - + Example
              typedef vector<int,int&,const int&> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
              index 381f02b0..d86c95f7 100644
              --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
              +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
              @@ -27,7 +27,7 @@
               value_of_data
               
               
              - + Description

              @@ -35,7 +35,7 @@ by an associative iterator references.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.21. Parameters

              +

              Table 1.21. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -107,14 +107,14 @@ I.

              - + Header
              #include <boost/fusion/iterator/value_of_data.hpp>
               #include <boost/fusion/include/value_of_data.hpp>
               
              - + Example
              typedef map<pair<float,int> > vec;
              diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
              index 7fc2cdb6..042994bf 100644
              --- a/doc/html/fusion/iterator/operator/operator_equality.html
              +++ b/doc/html/fusion/iterator/operator/operator_equality.html
              @@ -28,14 +28,14 @@
                       ==
               
               
              - + Description

              Compares 2 iterators for equality.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
               unspecified operator==(I const& i, J const& i);
               
              -

              Table 1.10. Parameters

              +

              Table 1.10. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -104,7 +104,7 @@ and j respectively.

              - + Header
              #include <boost/fusion/iterator/equal_to.hpp>
              diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
              index d689e8bf..97929f38 100644
              --- a/doc/html/fusion/iterator/operator/operator_inequality.html
              +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
              @@ -28,14 +28,14 @@
                       !=
               
               
              - + Description

              Compares 2 iterators for inequality.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
               unspecified operator==(I const& i, J const& i);
               
              -

              Table 1.11. Parameters

              +

              Table 1.11. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -102,7 +102,7 @@ and j respectively.

              - + Header
              #include <boost/fusion/iterator/equal_to.hpp>
              diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
              index 1473933b..03cb1699 100644
              --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
              +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
              @@ -28,14 +28,14 @@
                       *
               
               
              - + Description

              Dereferences an iterator.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::deref<I>::type operator*(unspecified<I> const& i);
               
              -

              Table 1.9. Parameters

              +

              Table 1.9. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

              - + Header
              #include <boost/fusion/iterator/deref.hpp>
               #include <boost/fusion/include/deref.hpp>
               
              - + Example
              typedef vector<int,int&> vec;
              diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
              index b86640cd..0b4c4536 100644
              --- a/doc/html/fusion/notes.html
              +++ b/doc/html/fusion/notes.html
              @@ -27,7 +27,7 @@
               Notes
               
               

              - + Recursive Inlined Functions

              @@ -40,7 +40,7 @@ remains linear.

              - + Overloaded Functions

              @@ -50,7 +50,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 - [10] + [10] :

              make_list("Donald", "Daisy")
              @@ -187,7 +187,7 @@
               
              list<void (*)(int)>
               

              - + boost::ref

              @@ -227,7 +227,7 @@



              -

              [10] +

              [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index cf90b732..e591e554 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -35,7 +35,7 @@ The library is organized in three layers:

              - + Layers

              @@ -66,7 +66,7 @@ against.

              - + Directory

                @@ -187,7 +187,7 @@

              - + Example

              @@ -202,12 +202,12 @@

              The first includes all containers The second includes only list - [4] + [4] .



              -

              [4] +

              [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

              diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index bb2f770e..55e9fde4 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -45,7 +45,7 @@

              - + Description

              @@ -63,7 +63,7 @@ of compile time metaprogramming with runtime programming.

              - + Motivation

              @@ -89,7 +89,7 @@ an instant AHA! moment.

              - + How to use this manual

              @@ -97,7 +97,7 @@ icons precede some text to indicate:

              -

              Table 1.1. Icons

              +

              Table 1.1. Icons

              @@ -200,7 +200,7 @@ Tools.

              - + Support

              diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index b5f02b86..7c8b90b5 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -34,7 +34,7 @@

              For starters, we shall include all of Fusion's Sequence(s) - [2] + [2] :

              #include <boost/fusion/sequence.hpp>
              @@ -42,7 +42,7 @@
               

              Let's begin with a vector - [3] + [3] :

              vector<int, char, std::string> stuff(1, 'x', "howdy");
              @@ -59,7 +59,7 @@
                     Let's see some examples.
                   

              - + Print the vector as XML

              @@ -114,7 +114,7 @@ print just about any Fusion Sequence.

              - + Print only pointers

              @@ -146,7 +146,7 @@ Easy, right?

              - + Associative tuples

              @@ -218,7 +218,7 @@ a dog or a whole alternate_universe.

              - + Tip of the Iceberg

              @@ -229,12 +229,12 @@



              -

              [2] +

              [2] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

              -

              [3] +

              [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 9724962e..c5c3ea39 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

              - + Header

              #include <boost/fusion/sequence.hpp>
              diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
              index 4a1100ca..ed58095b 100644
              --- a/doc/html/fusion/sequence/concepts.html
              +++ b/doc/html/fusion/sequence/concepts.html
              @@ -40,7 +40,7 @@
                       Fusion Sequences are organized into a hierarchy of concepts.
                     

              - + Traversal

              @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

              - + Associativity

              diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index cd0406a2..274f753b 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -28,7 +28,7 @@ Sequence

              - + Description

              @@ -64,7 +64,7 @@

              - + Valid Expressions
              @@ -173,7 +173,7 @@
              - + Result Type Expressions
              @@ -247,7 +247,7 @@

              - + Expression Semantics
              @@ -302,7 +302,7 @@
              - + Models
                diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index e8951186..0c78c2ba 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -28,7 +28,7 @@ Sequence
              - + Description

              @@ -37,7 +37,7 @@ Iterator.

              - + Refinement of
              @@ -66,7 +66,7 @@
              - + Valid Expressions
              @@ -198,7 +198,7 @@
              - + Result Type Expressions
              @@ -259,7 +259,7 @@
              - + Expression Semantics
              @@ -299,7 +299,7 @@
              - + Models
                diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 2d558d12..66b3bca1 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -28,7 +28,7 @@ Sequence
              - + Description

              @@ -60,7 +60,7 @@

              - + Valid Expressions
              @@ -235,7 +235,7 @@
              - + Result Type Expressions
              @@ -320,7 +320,7 @@
              - + Expression Semantics
              @@ -408,7 +408,7 @@
              - + Invariants

              @@ -434,7 +434,7 @@

              - + Models
                diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index a0ba782f..a6f28299 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -28,7 +28,7 @@ Access Sequence
              - + Description

              @@ -38,7 +38,7 @@ sequence elements.

              - + Refinement of
              @@ -73,7 +73,7 @@
              - + Valid Expressions
              @@ -205,7 +205,7 @@
              - + Result Type Expressions
              @@ -291,7 +291,7 @@

              - + Expression Semantics
              @@ -331,7 +331,7 @@
              - + Models
                diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 4100dc6f..5da91cef 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -37,11 +37,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
                #include <boost/fusion/sequence/intrinsic.hpp>
                @@ -49,7 +49,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/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 2f94c987..42732f02 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -27,14 +27,14 @@ at
              - + Description

              Returns the N-th element from the beginning of the sequence.

              - + Synopsis
              template <typename N, typename Sequence>
              @@ -46,7 +46,7 @@
               at(Sequence const& seq);
               
              - + Parameters
              @@ -112,7 +112,7 @@
              - + Expression Semantics
              @@ -138,14 +138,14 @@
              deref(advance<N>(begin(s)))
               
              - + Header
              #include <boost/fusion/sequence/intrinsic/at.hpp>
               #include <boost/fusion/include/at.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
              index 33d627a1..3dd435ba 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
              @@ -27,14 +27,14 @@
               at_c
               
               
              - + Description

              Returns the N-th element from the beginning of the sequence.

              - + Synopsis
              template <int N, typename Sequence>
              @@ -46,7 +46,7 @@
               at_c(Sequence const& seq);
               
              - + Parameters
              @@ -111,7 +111,7 @@
              - + Expression Semantics
              @@ -138,14 +138,14 @@
              deref(advance<N>(begin(s)))
               
              - + Header
              #include <boost/fusion/sequence/intrinsic/at_c.hpp>
               #include <boost/fusion/include/at_c.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
              index bd1aa4cb..7054e840 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
              @@ -27,14 +27,14 @@
               at_key
               
               
              - + Description

              Returns the element associated with a Key from the sequence.

              - + Synopsis
              template <typename Key, typename Sequence>
              @@ -46,7 +46,7 @@
               at_key(Sequence const& seq);
               
              - + Parameters
              @@ -111,7 +111,7 @@
              - + Expression Semantics
              @@ -134,14 +134,14 @@ with Key.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at_key.hpp>
               #include <boost/fusion/include/at_key.hpp>
               
              - + Example
              set<int, char, bool> s(1, 'x', true);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
              index f4455bfa..a6ebe1b0 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
              @@ -27,14 +27,14 @@
               back
               
               
              - + Description

              Returns the last element in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               back(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -115,14 +115,14 @@ in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/back.hpp>
               #include <boost/fusion/include/back.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
              index c1db190a..20ff510c 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
              @@ -27,14 +27,14 @@
               begin
               
               
              - + Description

              Returns an iterator pointing to the first element in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               begin(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -126,14 +126,14 @@ to the first element in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/begin.hpp>
               #include <boost/fusion/include/begin.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
              index 50f3efc2..abd9f157 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
              @@ -27,7 +27,7 @@
               empty
               
               
              - + Description

              @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

              - + Synopsis
              template <typename Sequence>
              @@ -44,7 +44,7 @@
               empty(Sequence const& seq);
               
              - + Parameters
              @@ -90,7 +90,7 @@
              - + Expression Semantics
              @@ -104,14 +104,14 @@ to false.

              - + Header
              #include <boost/fusion/sequence/intrinsic/empty.hpp>
               #include <boost/fusion/include/empty.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
              index 173d320b..5dafb92d 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
              @@ -27,14 +27,14 @@
               end
               
               
              - + Description

              Returns an iterator pointing to one element past the end of the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               end(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -126,14 +126,14 @@ to one element past the end of the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/end.hpp>
               #include <boost/fusion/include/end.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
              index dcaee754..90625861 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
              @@ -27,14 +27,14 @@
               front
               
               
              - + Description

              Returns the first element in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               front(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -115,14 +115,14 @@ in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/front.hpp>
               #include <boost/fusion/include/front.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
              index 0ef7cda9..34a255f3 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
              @@ -27,7 +27,7 @@
               has_key
               
               
              - + Description

              @@ -37,7 +37,7 @@ to false.

              - + Synopsis
              template <typename Key, typename Sequence>
              @@ -45,7 +45,7 @@
               has_key(Sequence const& seq);
               
              - + Parameters
              @@ -110,7 +110,7 @@
              - + Expression Semantics
              @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

              - + Header
              #include <boost/fusion/sequence/intrinsic/has_key.hpp>
               #include <boost/fusion/include/has_key.hpp>
               
              - + Example
              set<int, char, bool> s(1, 'x', true);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
              index 69373daa..8979f928 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
              @@ -27,7 +27,7 @@
               size
               
               
              - + Description

              @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -43,7 +43,7 @@
               size(Sequence const& seq);
               
              - + Parameters
              @@ -89,7 +89,7 @@
              - + Expression Semantics
              @@ -103,14 +103,14 @@ in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/size.hpp>
               #include <boost/fusion/include/size.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
              index 3f993cd5..2ff4f6db 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
              @@ -27,21 +27,21 @@
               swap
               
               
              - + Description

              Performs an element by element swap of the elements in 2 sequences.

              - + Synopsis
              template<typename Seq1, typename Seq2>
               void swap(Seq1& seq1, Seq2& seq2);
               
              - + Parameters
              @@ -87,7 +87,7 @@
              - + Expression Semantics
              @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

              - + Example
              vector<int, std::string> v1(1, "hello"), v2(2, "world");
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
              index baf90b27..8fe3ff24 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
              @@ -27,16 +27,16 @@
               at
               
               
              - + Description

              Returns the result type of at - [6] + [6] .

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.29. Parameters

              +

              Table 1.29. Parameters

              @@ -113,7 +113,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ using at to access the Nth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at.hpp>
               #include <boost/fusion/include/at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              @@ -142,7 +142,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/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index adcc5dd3..3034384a 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -27,16 +27,16 @@ at_c

              - + Description

              Returns the result type of at_c - [7] + [7] .

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.30. Parameters

              +

              Table 1.30. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -126,14 +126,14 @@ using at_c to access the Mth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at.hpp>
               #include <boost/fusion/include/at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              @@ -141,7 +141,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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 7ce90a7d..b84cd4f4 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -27,16 +27,16 @@ at_key

              - + Description

              Returns the result type of at_key - [8] + [8] .

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.34. Parameters

              +

              Table 1.34. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -128,14 +128,14 @@ Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at_key.hpp>
               #include <boost/fusion/include/at_key.hpp>
               
              - + Example
              typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
              @@ -143,7 +143,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/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index e96e6b5e..e461325b 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -27,14 +27,14 @@ back

              - + Description

              Returns the result type of back.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.27. Parameters

              +

              Table 1.27. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

              - + Header
              #include <boost/fusion/sequence/intrinsic/back.hpp>
               #include <boost/fusion/include/back.hpp>
               
              - + Example
              typedef vector<int,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
              index 8f3d0e60..dd7d329e 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
              @@ -27,14 +27,14 @@
               begin
               
               
              - + Description

              Returns the result type of begin.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.23. Parameters

              +

              Table 1.23. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -123,14 +123,14 @@ to the first element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/begin.hpp>
               #include <boost/fusion/include/begin.hpp>
               
              - + Example
              typedef vector<int> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
              index fa9e6a44..8104fb56 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
              @@ -27,14 +27,14 @@
               empty
               
               
              - + Description

              Returns the result type of empty.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.25. Parameters

              +

              Table 1.25. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -105,14 +105,14 @@ mpl::false_ otherwise.

              - + Header
              #include <boost/fusion/sequence/intrinsic/empty.hpp>
               #include <boost/fusion/include/empty.hpp>
               
              - + Example
              typedef vector<> empty_vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
              index 2f2232be..3f25a7ee 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
              @@ -27,14 +27,14 @@
               end
               
               
              - + Description

              Returns the result type of end.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.24. Parameters

              +

              Table 1.24. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -123,14 +123,14 @@ one past the end of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/end.hpp>
               #include <boost/fusion/include/end.hpp>
               
              - + Example
              typedef vector<int> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
              index b193a164..e77dcdd6 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
              @@ -27,14 +27,14 @@
               front
               
               
              - + Description

              Returns the result type of front.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.26. Parameters

              +

              Table 1.26. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

              - + Header
              #include <boost/fusion/sequence/intrinsic/front.hpp>
               #include <boost/fusion/include/front.hpp>
               
              - + Example
              typedef vector<int,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
              index 913525c3..e00e5d96 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
              @@ -27,14 +27,14 @@
               has_key
               
               
              - + Description

              Returns the result type of has_key.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.33. Parameters

              +

              Table 1.33. Parameters

              @@ -110,7 +110,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ mpl::false_ otherwise.

              - + Header
              #include <boost/fusion/sequence/intrinsic/has_key.hpp>
               #include <boost/fusion/include/has_key.hpp>
               
              - + Example
              typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
              index 0a327aa6..d18c737b 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
              @@ -27,14 +27,14 @@
               size
               
               
              - + Description

              Returns the result type of size.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.28. Parameters

              +

              Table 1.28. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -104,14 +104,14 @@ in Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/size.hpp>
               #include <boost/fusion/include/size.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
              index f1ed5c8f..c112ac4b 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
              @@ -27,14 +27,14 @@
               swap
               
               
              - + Description

              Returns the return type of swap.

              - + Synopsis
              template<typename Seq1, typename Seq2>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.36. Parameters

              +

              Table 1.36. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -102,7 +102,7 @@ Semantics: Always returns void.

              - + Header
              #include <boost/fusion/sequence/intrinsic/swap.hpp>
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
              index 36d2cad3..8fd11cd7 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
              @@ -27,14 +27,14 @@
               value_at
               
               
              - + Description

              Returns the actual type at a given index from the Sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.31. Parameters

              +

              Table 1.31. Parameters

              @@ -111,7 +111,7 @@

              - + Expression Semantics
              @@ -125,14 +125,14 @@ the Nth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/value_at.hpp>
               #include <boost/fusion/include/value_at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
              index a603ab73..36e02ef4 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
              @@ -27,14 +27,14 @@
               value_at_c
               
               
              - + Description

              Returns the actual type at a given index from the Sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.32. Parameters

              +

              Table 1.32. Parameters

              @@ -110,7 +110,7 @@

              - + Expression Semantics
              @@ -124,14 +124,14 @@ the Mth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/value_at.hpp>
               #include <boost/fusion/include/value_at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
              index e006974f..c69676a1 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
              @@ -27,14 +27,14 @@
               value_at_key
               
               
              - + Description

              Returns the actual element type associated with a Key from the Sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.35. Parameters

              +

              Table 1.35. Parameters

              @@ -110,7 +110,7 @@

              - + Expression Semantics
              @@ -125,14 +125,14 @@ in Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
               #include <boost/fusion/include/value_at_key.hpp>
               
              - + Example
              typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
              diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
              index 73bc0881..549a516c 100644
              --- a/doc/html/fusion/sequence/operator/comparison.html
              +++ b/doc/html/fusion/sequence/operator/comparison.html
              @@ -49,7 +49,7 @@
                         only until the result is clear.
                       

              - + Header
              #include <boost/fusion/sequence/comparison.hpp>
              diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
              index 51539854..6c531daa 100644
              --- a/doc/html/fusion/sequence/operator/comparison/equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
              @@ -27,14 +27,14 @@
               equal
               
               
              - + Description

              Compare two sequences for equality.

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -42,7 +42,7 @@
               operator==(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -88,7 +88,7 @@
              - + Expression Semantics
              @@ -123,14 +123,14 @@ true.

              - + Header
              #include <boost/fusion/sequence/comparison/equal_to.hpp>
               #include <boost/fusion/include/equal_to.hpp>
               
              - + Example
              vector<int, char> v1(5, 'a');
              diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
              index cfec31ad..7ef88393 100644
              --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
              +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
              @@ -31,7 +31,7 @@
                           Lexicographically compare two sequences.
                         

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator>(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Returns b < a.

              - + Header
              #include <boost/fusion/sequence/comparison/less_equal.hpp>
               #include <boost/fusion/include/less_equal.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
              index fbacc29a..6c1dd074 100644
              --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
              @@ -31,7 +31,7 @@
                           Lexicographically compare two sequences.
                         

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator>=(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

              - + Header
              #include <boost/fusion/sequence/comparison/greater_equal.hpp>
               #include <boost/fusion/include/greater_equal.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
              index 483f4304..d8c30206 100644
              --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
              +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
              @@ -31,7 +31,7 @@
                           Lexicographically compare two sequences.
                         

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator<(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -114,14 +114,14 @@ and b.

              - + Header
              #include <boost/fusion/sequence/comparison/less.hpp>
               #include <boost/fusion/include/less.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
              index 8cd413f1..42124f53 100644
              --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
              @@ -31,7 +31,7 @@
                           Lexicographically compare two sequences.
                         

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator<=(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

              - + Header
              #include <boost/fusion/sequence/comparison/less_equal.hpp>
               #include <boost/fusion/include/less_equal.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
              index 6ac6617a..ddb184e0 100644
              --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
              @@ -31,7 +31,7 @@
                           Compare two sequences for inequality.
                         

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator!=(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -115,14 +115,14 @@ Returns !(a == b).

              - + Header
              #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
               #include <boost/fusion/include/not_equal_to.hpp>
               
              - + Example
              vector<int, char> v3(5, 'b');
              diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
              index 1807f746..a747bb6e 100644
              --- a/doc/html/fusion/sequence/operator/i_o.html
              +++ b/doc/html/fusion/sequence/operator/i_o.html
              @@ -113,7 +113,7 @@
                         representation may not be unambiguously parseable.
                       

              - + Header
              #include <boost/fusion/sequence/io.hpp>
              diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
              index 4e777a2c..188205d8 100644
              --- a/doc/html/fusion/sequence/operator/i_o/in.html
              +++ b/doc/html/fusion/sequence/operator/i_o/in.html
              @@ -27,7 +27,7 @@
               in
               
               
              - + Description

              @@ -35,7 +35,7 @@ stream.

              - + Synopsis
              template <typename IStream, typename Sequence>
              @@ -43,7 +43,7 @@
               operator>>(IStream& is, Sequence& seq);
               
              - + Parameters
              @@ -107,7 +107,7 @@
              - + Expression Semantics
              @@ -122,14 +122,14 @@ e.

              - + Header
              #include <boost/fusion/sequence/io/in.hpp>
               #include <boost/fusion/include/in.hpp>
               
              - + Example
              vector<int, std::string, char> v;
              diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
              index a5cc7cdf..5f63c0f8 100644
              --- a/doc/html/fusion/sequence/operator/i_o/out.html
              +++ b/doc/html/fusion/sequence/operator/i_o/out.html
              @@ -27,7 +27,7 @@
               out
               
               
              - + Description

              @@ -35,7 +35,7 @@ stream.

              - + Synopsis
              template <typename OStream, typename Sequence>
              @@ -43,7 +43,7 @@
               operator<<(OStream& os, Sequence& seq);
               
              - + Parameters
              @@ -107,7 +107,7 @@
              - + Expression Semantics
              @@ -122,14 +122,14 @@ e.

              - + Header
              #include <boost/fusion/sequence/io/out.hpp>
               #include <boost/fusion/include/out.hpp>
               
              - + Example
              std::cout << make_vector(123, "Hello", 'x') << std::endl;
              diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
              index 76604b92..eb7ee456 100644
              --- a/doc/html/fusion/support/category_of.html
              +++ b/doc/html/fusion/support/category_of.html
              @@ -27,7 +27,7 @@
               category_of
               
               
              - + Description

              @@ -37,7 +37,7 @@ Sequence Concepts).

              - + Synopsis
              namespace traits
              @@ -50,7 +50,7 @@
               }
               
              - + Parameters
              @@ -95,7 +95,7 @@
              - + Expression Semantics
              @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

              - + Header
              #include <boost/fusion/support/category_of.hpp>
               #include <boost/fusion/include/category_of.hpp>
               
              - + Example
              using boost::is_base_of;
              diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
              index 83af91a9..a0ceb5ec 100644
              --- a/doc/html/fusion/support/deduce.html
              +++ b/doc/html/fusion/support/deduce.html
              @@ -27,7 +27,7 @@
               deduce
               
               
              - + Description

              @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

              - + Header
              #include <boost/fusion/support/deduce.hpp>
               #include <boost/fusion/include/deduce.hpp>
               
              - + Synopsis
              namespace traits
              @@ -60,7 +60,7 @@
               }
               
              - + Example
              template <typename T>
              @@ -80,7 +80,7 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index c0bc5540..fe813226 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -27,7 +27,7 @@ deduce_sequence
              - + Description

              @@ -38,14 +38,14 @@ original type as its argument.

              - + Header
              #include <boost/fusion/support/deduce_sequence.hpp>
               #include <boost/fusion/include/deduce_sequence.hpp>
               
              - + Synopsis
              namespace traits
              @@ -58,7 +58,7 @@
               }
               
              - + Example
              template <class Seq>
              @@ -80,7 +80,7 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index be1544de..e3390861 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -27,7 +27,7 @@ is_sequence
              - + Description

              @@ -38,7 +38,7 @@ conforming sequences.

              - + Synopsis
              namespace traits
              @@ -51,7 +51,7 @@
               }
               
              - + Parameters
              @@ -96,7 +96,7 @@
              - + Expression Semantics
              @@ -113,14 +113,14 @@ otherwise.

              - + Header
              #include <boost/fusion/support/is_sequence.hpp>
               #include <boost/fusion/include/is_sequence.hpp>
               
              - + Example
              BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
              diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
              index 1f1be0e8..2c81660f 100644
              --- a/doc/html/fusion/support/is_view.html
              +++ b/doc/html/fusion/support/is_view.html
              @@ -27,7 +27,7 @@
               is_view
               
               
              - + Description

              @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

              - + Synopsis
              namespace traits
              @@ -54,7 +54,7 @@
               }
               
              - + Parameters
              @@ -99,7 +99,7 @@
              - + Expression Semantics
              typedef traits::is_view<T>::type c;
              @@ -115,14 +115,14 @@
                       otherwise.
                     

              - + Header
              #include <boost/fusion/support/is_view.hpp>
               #include <boost/fusion/include/is_view.hpp>
               
              - + Example
              BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
              diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
              index d07f8cf3..18054712 100644
              --- a/doc/html/fusion/support/pair.html
              +++ b/doc/html/fusion/support/pair.html
              @@ -27,7 +27,7 @@
               pair
               
               
              - + Description

              @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

              - + Synopsis
              template <typename First, typename Second>
              @@ -60,7 +60,7 @@
               make_pair(Second const &);
               
              - + Template parameters
              @@ -137,7 +137,7 @@
              - + Expression Semantics
              @@ -317,14 +317,14 @@
              - + Header
              #include <boost/fusion/support/pair.hpp>
               #include <boost/fusion/include/pair.hpp>
               
              - + Example
              pair<int, char> p('X');
              diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
              index ef83871b..142ebe3e 100644
              --- a/doc/html/fusion/support/tag_of.html
              +++ b/doc/html/fusion/support/tag_of.html
              @@ -27,7 +27,7 @@
               tag_of
               
               
              - + Description

              @@ -41,7 +41,7 @@ conforming sequences.

              - + Synopsis
              namespace traits
              @@ -54,7 +54,7 @@
               }
               
              - + Parameters
              @@ -99,7 +99,7 @@
              - + Expression Semantics
              typedef traits::tag_of<T>::type tag;
              @@ -112,14 +112,14 @@
                       with T.
                     

              - + Header
              #include <boost/fusion/support/tag_of.hpp>
               #include <boost/fusion/include/tag_of.hpp>
               
              - + Example
              typedef traits::tag_of<list<> >::type tag1;
              diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
              index 3ba8a8ff..30aab276 100644
              --- a/doc/html/fusion/tuple/class_template_tuple.html
              +++ b/doc/html/fusion/tuple/class_template_tuple.html
              @@ -48,7 +48,7 @@
                       in future releases of fusion.
                     

              - + Synopsis
              template<
              diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
              index c58c85e6..56d0db77 100644
              --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
              +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
              @@ -27,7 +27,7 @@
               Construction
               
               
              - + Description

              @@ -38,7 +38,7 @@ in this section.

              - + Specification
              diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 1b32b360..ae2a443d 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -28,7 +28,7 @@ access
              - + Description

              @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

              - + Specification
              template<int I, T>
              diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
              index 782beb65..89d8bc8f 100644
              --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
              +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
              @@ -28,7 +28,7 @@
                       operators
               
               
              - + Description

              @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

              - + Specification
              diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index a4bfb1fe..05ddbb44 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -28,7 +28,7 @@ creation functions
              - + Description

              @@ -38,7 +38,7 @@ functions are described in this section.

              - + Specification
              template<typename T1, typename T2, ..., typename TN>
              diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
              index ad691102..8667fd8f 100644
              --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
              +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
              @@ -28,7 +28,7 @@
                       helper classes
               
               
              - + Description

              @@ -37,7 +37,7 @@ tuple size, and the element types.

              - + Specification
              tuple_size<T>::value
              diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
              index a87631f1..a97a103b 100644
              --- a/doc/html/fusion/tuple/pairs.html
              +++ b/doc/html/fusion/tuple/pairs.html
              @@ -27,7 +27,7 @@
               Pairs
               
               
              - + Description

              @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

              - + Specification
              tuple_size<std::pair<T1, T2> >::value
              diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
              index fcacd38a..0dfbef98 100644
              --- a/doc/html/fusion/view.html
              +++ b/doc/html/fusion/view.html
              @@ -46,7 +46,7 @@
                     to copy and be passed around by value.
                   

              - + Header

              #include <boost/fusion/view.hpp>
              diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
              index d39f44ea..a93671b3 100644
              --- a/doc/html/fusion/view/filter_view.html
              +++ b/doc/html/fusion/view/filter_view.html
              @@ -27,7 +27,7 @@
               filter_view
               
               
              - + Description

              @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

              - + Header
              #include <boost/fusion/view/filter_view.hpp>
               #include <boost/fusion/include/filter_view.hpp>
               
              - + Synopsis
              template <typename Sequence, typename Pred>
               struct filter_view;
               
              - + Template parameters
              @@ -115,7 +115,7 @@
              - + Model of
                @@ -146,7 +146,7 @@
              - + Expression Semantics

              @@ -216,7 +216,7 @@

              - + Example
              using boost::mpl::_;
              diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
              index a33b144b..328c666a 100644
              --- a/doc/html/fusion/view/iterator_range.html
              +++ b/doc/html/fusion/view/iterator_range.html
              @@ -27,7 +27,7 @@
               iterator_range
               
               
              - + Description

              @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

              - + Header
              #include <boost/fusion/view/iterator_range.hpp>
               #include <boost/fusion/include/iterator_range.hpp>
               
              - + Synopsis
              template <typename First, typename Last>
               struct iterator_range;
               
              - + Template parameters
              @@ -111,7 +111,7 @@
              - + Model of
                @@ -153,7 +153,7 @@
              - + Expression Semantics
              @@ -227,7 +227,7 @@
              - + Example
              char const* s = "Ruby";
              diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
              index 1490b907..255036f7 100644
              --- a/doc/html/fusion/view/joint_view.html
              +++ b/doc/html/fusion/view/joint_view.html
              @@ -27,7 +27,7 @@
               joint_view
               
               
              - + Description

              @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

              - + Header
              #include <boost/fusion/view/joint_view.hpp>
               #include <boost/fusion/include/joint_view.hpp>
               
              - + Synopsis
              template <typename Sequence1, typename Sequence2>
               struct joint_view;
               
              - + Template parameters
              @@ -113,7 +113,7 @@
              - + Model of
                @@ -148,7 +148,7 @@
              - + Expression Semantics

              @@ -220,7 +220,7 @@

              - + Example
              vector<int, char> v1(3, 'x');
              diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
              index bb6c0421..b9d73600 100644
              --- a/doc/html/fusion/view/nview.html
              +++ b/doc/html/fusion/view/nview.html
              @@ -27,7 +27,7 @@
               nview
               
               
              - + Description

              @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

              - + Header
              #include <boost/fusion/view/nview.hpp>
               #include <boost/fusion/include/nview.hpp>
               
              - + Synopsis
              template <typename Sequence, typename Indicies>
              @@ -56,7 +56,7 @@
               as_nview(Sequence& s);
               
              - + Template parameters
              @@ -137,7 +137,7 @@
              - + Model of
              • @@ -163,7 +163,7 @@
              - + Expression Semantics

              @@ -239,7 +239,7 @@ of references to the elements of the original Fusion Sequence

              - + Example
              typedef vector<int, char, double> vec;
              diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
              index 95eb0567..b8c28bc5 100644
              --- a/doc/html/fusion/view/reverse_view.html
              +++ b/doc/html/fusion/view/reverse_view.html
              @@ -32,21 +32,21 @@
                       element will be its first.
                     

              - + Header
              #include <boost/fusion/view/reverse_view.hpp>
               #include <boost/fusion/include/reverse_view.hpp>
               
              - + Synopsis
              template <typename Sequence>
               struct reverse_view;
               
              - + Template parameters
              @@ -91,7 +91,7 @@
              - + Model of
                @@ -129,7 +129,7 @@
              - + Expression Semantics
              @@ -201,7 +201,7 @@
              - + Example
              typedef vector<int, short, double> vector_type;
              diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
              index fc01e968..6cda3797 100644
              --- a/doc/html/fusion/view/single_view.html
              +++ b/doc/html/fusion/view/single_view.html
              @@ -31,21 +31,21 @@
                       a value as a single element sequence.
                     

              - + Header
              #include <boost/fusion/view/single_view.hpp>
               #include <boost/fusion/include/single_view.hpp>
               
              - + Synopsis
              template <typename T>
               struct single_view;
               
              - + Template parameters
              @@ -89,7 +89,7 @@
              - + Model of
              @@ -111,7 +111,7 @@
              - + Expression Semantics

              @@ -182,7 +182,7 @@

              - + Example
              single_view<int> view(3);
              diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
              index 493c1bbe..6cda1fe0 100644
              --- a/doc/html/fusion/view/transform_view.html
              +++ b/doc/html/fusion/view/transform_view.html
              @@ -36,14 +36,14 @@
                       Traversal Concept) of its underlying sequence or sequences.
                     

              - + Header
              #include <boost/fusion/view/transform_view.hpp>
               #include <boost/fusion/include/transform_view.hpp>
               
              - + Synopsis

              @@ -59,7 +59,7 @@ struct transform_view;

              - + Template parameters
              @@ -179,7 +179,7 @@
              - + Model of
              • @@ -234,7 +234,7 @@
              - + Expression Semantics
              @@ -329,7 +329,7 @@
              - + Example
              struct square
              diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
              index 1cec58ea..6d7eb0bd 100644
              --- a/doc/html/fusion/view/zip_view.html
              +++ b/doc/html/fusion/view/zip_view.html
              @@ -27,7 +27,7 @@
               zip_view
               
               
              - + Description

              @@ -38,21 +38,21 @@ to the component _sequence_s.

              - + Header
              #include <boost/fusion/view/zip_view.hpp>
               #include <boost/fusion/include/zip_view.hpp>
               
              - + Synopsis
              template <typename Sequences>
               struct zip_view;
               
              - + Template parameters
              @@ -97,7 +97,7 @@
              - + Model of
              • @@ -126,7 +126,7 @@
              - + Expression Semantics

              @@ -197,7 +197,7 @@

              - + Example
              typedef vector<int,int> vec1;
              diff --git a/doc/html/index.html b/doc/html/index.html
              index 8d24cab9..51e5c6f1 100644
              --- a/doc/html/index.html
              +++ b/doc/html/index.html
              @@ -34,7 +34,7 @@
               
              - +

              Last revised: April 10, 2010 at 18:18:35 GMT

              Last revised: April 11, 2010 at 14:53:40 GMT


              From 0f33972fe96cd8d9a525f18a84ff9ad2b81f1927 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 22 Apr 2010 13:14:47 +0000 Subject: [PATCH 32/82] fix #1614 [SVN r61487] --- include/boost/fusion/container/vector/vector.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index 5b9a5608..e8284ca8 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -56,7 +56,7 @@ namespace boost { namespace fusion template vector(Sequence const& rhs) -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) : vec(ctor_helper(rhs, is_base_of())) {} #else : vec(rhs) {} @@ -129,7 +129,7 @@ namespace boost { namespace fusion private: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) static vector_n const& ctor_helper(vector const& rhs, mpl::true_) { From 95555f3f2045dd57bd2da8cd207f13eb13b88ed4 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 26 Apr 2010 23:34:55 +0000 Subject: [PATCH 33/82] removes outdated and defunct files [SVN r61599] --- .../adapter/detail/pow2_explode.hpp | 118 ------------ .../functional/adapter/detail/pt_def.hpp | 71 ------- .../functional/adapter/detail/pt_undef.hpp | 23 --- .../functional/adapter/unfused_generic.hpp | 175 ------------------ .../adapter/unfused_lvalue_args.hpp | 136 -------------- .../adapter/unfused_rvalue_args.hpp | 137 -------------- .../generation/make_unfused_generic.hpp | 18 -- .../generation/make_unfused_lvalue_args.hpp | 18 -- .../generation/make_unfused_rvalue_args.hpp | 18 -- 9 files changed, 714 deletions(-) delete mode 100644 include/boost/fusion/functional/adapter/detail/pow2_explode.hpp delete mode 100644 include/boost/fusion/functional/adapter/detail/pt_def.hpp delete mode 100644 include/boost/fusion/functional/adapter/detail/pt_undef.hpp delete mode 100644 include/boost/fusion/functional/adapter/unfused_generic.hpp delete mode 100644 include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp delete mode 100644 include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp delete mode 100644 include/boost/fusion/functional/generation/make_unfused_generic.hpp delete mode 100644 include/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp delete mode 100644 include/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp diff --git a/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp b/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp deleted file mode 100644 index 2d14ad70..00000000 --- a/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp +++ /dev/null @@ -1,118 +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_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 deleted file mode 100644 index 8f85cf44..00000000 --- a/include/boost/fusion/functional/adapter/detail/pt_def.hpp +++ /dev/null @@ -1,71 +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 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 deleted file mode 100644 index dca50043..00000000 --- a/include/boost/fusion/functional/adapter/detail/pt_undef.hpp +++ /dev/null @@ -1,23 +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. - -#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/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp deleted file mode 100644 index 82b1e4b0..00000000 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ /dev/null @@ -1,175 +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_UNFUSED_GENERIC_HPP_INCLUDED) -#if !defined(BOOST_PP_IS_ITERATING) - -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include - -namespace boost { namespace fusion -{ - template class unfused_generic; - - //----- ---- --- -- - - - - - - template - class unfused_generic - { - Function fnc_transformed; - - 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: - - inline explicit unfused_generic(func_const_fwd_t f = Function()) - : fnc_transformed(f) - { } - - template - struct result; - - typedef typename boost::result_of< - function_c(fusion::vector0 &) >::type call_const_0_result; - - 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 boost::result_of & )>::type \ - operator()(params) const \ - { \ - BOOST_PP_CAT(fusion::vector,N) arg(args); \ - return this->fnc_transformed(arg); \ - } \ - template \ - inline typename boost::result_of & )>::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 - }; -}} - -namespace boost -{ - template - struct result_of const ()> - { - 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; - }; -} - -#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 - < Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of::type BOOST_PP_INTERCEPT) > & )> - { }; - - template - struct result - < Self(BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of::type BOOST_PP_INTERCEPT) > & )> - { }; -#endif - -#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 - { - BOOST_PP_CAT(fusion::vector,N) - arg(BOOST_PP_ENUM_PARAMS(N,a)); - return this->fnc_transformed(arg); - } - template - inline typename boost::result_of & )>::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 deleted file mode 100644 index ba2f31b6..00000000 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ /dev/null @@ -1,136 +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_UNFUSED_LVALUE_ARGS_HPP_INCLUDED) -#if !defined(BOOST_PP_IS_ITERATING) - -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include - -namespace boost { namespace fusion -{ - template class unfused_lvalue_args; - - //----- ---- --- -- - - - - - - template class unfused_lvalue_args - { - Function fnc_transformed; - - 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: - - inline explicit unfused_lvalue_args(func_const_fwd_t f = function()) - : fnc_transformed(f) - { } - - template - struct result; - - typedef typename boost::result_of< - function_c(fusion::vector0 &) >::type call_const_0_result; - - 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 \ - - #define BOOST_PP_ITERATION_LIMITS \ - (1,BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY) - #include BOOST_PP_ITERATE() - }; -}} - -namespace boost -{ - template - struct result_of< boost::fusion::unfused_lvalue_args const () > - { - 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; - }; -} - -#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< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : 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_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 - { - 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 boost::result_of & )>::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 deleted file mode 100644 index 3c80475e..00000000 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ /dev/null @@ -1,137 +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_UNFUSED_RVALUE_ARGS_HPP_INCLUDED) -#if !defined(BOOST_PP_IS_ITERATING) - -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include - -namespace boost { namespace fusion -{ - template class unfused_rvalue_args; - - //----- ---- --- -- - - - - - - template class unfused_rvalue_args - { - Function fnc_transformed; - - 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: - - inline explicit unfused_rvalue_args(func_const_fwd_t f = function()) - : fnc_transformed(f) - { } - - template - struct result; - - typedef typename boost::result_of< - function_c(fusion::vector0 &) >::type call_const_0_result; - - 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 \ - - #define BOOST_PP_ITERATION_LIMITS \ - (1,BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY) - #include BOOST_PP_ITERATE() - }; -}} - -namespace boost -{ - template - struct result_of const ()> - { - 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; - }; -} - -#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< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : 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_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 - { - 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 boost::result_of & )>::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/generation/make_unfused_generic.hpp b/include/boost/fusion/functional/generation/make_unfused_generic.hpp deleted file mode 100644 index 87a99c59..00000000 --- a/include/boost/fusion/functional/generation/make_unfused_generic.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - 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 deleted file mode 100644 index f3c49e45..00000000 --- a/include/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - 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 deleted file mode 100644 index 9322e1e0..00000000 --- a/include/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - 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 - From 6f0af5db0a1ccf351ac9e8c317492f70a5b2b75d Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sat, 26 Jun 2010 12:30:09 +0000 Subject: [PATCH 34/82] Merge documentation fixes. * Use `doc/src/*.css` instead of `doc/html/*.css`. * Remove wiki and people directories. * Some documentation fixes. * Left out `minimal.css` changes and boostbook changes because of clashes. [SVN r63347] --- doc/Jamfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/Jamfile b/doc/Jamfile index b09cd291..13454575 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -16,8 +16,6 @@ boostbook quickbook fusion.qbk : boost.root=../../../.. - boost.libraries=../../../libraries.htm - html.stylesheet=../../../../doc/html/boostbook.css chunk.section.depth=4 chunk.first.sections=1 toc.section.depth=3 From 649770fdcd9b904bcabdb47be885e878dab4ce1f Mon Sep 17 00:00:00 2001 From: Christophe Henry Date: Fri, 2 Jul 2010 18:53:17 +0000 Subject: [PATCH 35/82] merged revision 62675 [SVN r63528] --- include/boost/fusion/container/set/detail/deref_impl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/fusion/container/set/detail/deref_impl.hpp b/include/boost/fusion/container/set/detail/deref_impl.hpp index 12824e61..10a03496 100644 --- a/include/boost/fusion/container/set/detail/deref_impl.hpp +++ b/include/boost/fusion/container/set/detail/deref_impl.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion { namespace extension static type call(It const& it) { - return at(it.seq->get_data()); + return ::boost::fusion::at(it.seq->get_data()); } }; }; From 1572e0e9c340c9abed663ece8ffa4f5dd9188358 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sat, 3 Jul 2010 20:10:58 +0000 Subject: [PATCH 36/82] merged fusion from the trunk [SVN r63560] --- doc/adapted.qbk | 40 +- doc/algorithm.qbk | 194 ++--- doc/changelog.qbk | 2 + doc/container.qbk | 4 +- doc/fusion.qbk | 6 + doc/html/fusion/acknowledgements.html | 2 +- doc/html/fusion/adapted.html | 4 +- doc/html/fusion/adapted/adapt_assoc.html | 12 +- .../adapted/adapt_assoc_struct_named.html | 17 +- .../adapted/adapt_assoc_tpl_struct.html | 12 +- doc/html/fusion/adapted/adapt_struct.html | 12 +- .../fusion/adapted/adapt_struct_named.html | 17 +- doc/html/fusion/adapted/adapt_tpl_struct.html | 12 +- doc/html/fusion/adapted/array.html | 14 +- doc/html/fusion/adapted/boost__array.html | 16 +- doc/html/fusion/adapted/boost__tuple.html | 14 +- .../fusion/adapted/define_assoc_struct.html | 23 +- .../adapted/define_assoc_tpl_struct.html | 31 +- doc/html/fusion/adapted/define_struct.html | 22 +- .../fusion/adapted/define_tpl_struct.html | 31 +- doc/html/fusion/adapted/mpl_sequence.html | 34 +- doc/html/fusion/adapted/std__pair.html | 16 +- doc/html/fusion/algorithm.html | 15 +- doc/html/fusion/algorithm/iteration.html | 4 +- .../fusion/algorithm/iteration/functions.html | 5 +- .../iteration/functions/accumulate.html | 268 ++++--- .../algorithm/iteration/functions/fold.html | 265 ++++--- .../iteration/functions/for_each.html | 18 +- .../algorithm/iteration/metafunctions.html | 5 +- .../iteration/metafunctions/accumulate.html | 223 +++--- .../iteration/metafunctions/fold.html | 223 +++--- .../iteration/metafunctions/for_each.html | 14 +- doc/html/fusion/algorithm/query.html | 4 +- .../fusion/algorithm/query/functions.html | 2 +- .../fusion/algorithm/query/functions/all.html | 16 +- .../fusion/algorithm/query/functions/any.html | 16 +- .../algorithm/query/functions/count.html | 16 +- .../algorithm/query/functions/count_if.html | 16 +- .../algorithm/query/functions/find.html | 16 +- .../algorithm/query/functions/find_if.html | 22 +- .../algorithm/query/functions/none.html | 16 +- .../fusion/algorithm/query/metafunctions.html | 2 +- .../algorithm/query/metafunctions/all.html | 14 +- .../algorithm/query/metafunctions/any.html | 14 +- .../algorithm/query/metafunctions/count.html | 14 +- .../query/metafunctions/count_if.html | 14 +- .../algorithm/query/metafunctions/find.html | 14 +- .../query/metafunctions/find_if.html | 14 +- .../algorithm/query/metafunctions/none.html | 14 +- doc/html/fusion/algorithm/transformation.html | 6 +- .../algorithm/transformation/functions.html | 2 +- .../transformation/functions/clear.html | 16 +- .../transformation/functions/erase.html | 48 +- .../transformation/functions/erase_key.html | 16 +- .../transformation/functions/filter.html | 32 +- .../transformation/functions/filter_if.html | 32 +- .../transformation/functions/insert.html | 32 +- .../functions/insert_range.html | 32 +- .../transformation/functions/join.html | 34 +- .../transformation/functions/pop_back.html | 32 +- .../transformation/functions/pop_front.html | 32 +- .../transformation/functions/push_back.html | 32 +- .../transformation/functions/push_front.html | 32 +- .../transformation/functions/remove.html | 32 +- .../transformation/functions/remove_if.html | 32 +- .../transformation/functions/replace.html | 16 +- .../transformation/functions/replace_if.html | 16 +- .../transformation/functions/reverse.html | 42 +- .../transformation/functions/transform.html | 20 +- .../transformation/functions/zip.html | 16 +- .../transformation/metafunctions.html | 2 +- .../transformation/metafunctions/clear.html | 14 +- .../transformation/metafunctions/erase.html | 30 +- .../metafunctions/erase_key.html | 14 +- .../transformation/metafunctions/filter.html | 30 +- .../metafunctions/filter_if.html | 30 +- .../transformation/metafunctions/insert.html | 30 +- .../metafunctions/insert_range.html | 30 +- .../transformation/metafunctions/join.html | 30 +- .../metafunctions/pop_back.html | 30 +- .../metafunctions/pop_front.html | 30 +- .../metafunctions/push_back.html | 30 +- .../metafunctions/push_front.html | 30 +- .../transformation/metafunctions/remove.html | 30 +- .../metafunctions/remove_if.html | 30 +- .../transformation/metafunctions/replace.html | 14 +- .../metafunctions/replace_if.html | 14 +- .../transformation/metafunctions/reverse.html | 40 +- .../metafunctions/transform.html | 36 +- .../transformation/metafunctions/zip.html | 12 +- doc/html/fusion/change_log.html | 92 +-- doc/html/fusion/container.html | 4 +- doc/html/fusion/container/cons.html | 22 +- doc/html/fusion/container/conversion.html | 4 +- .../container/conversion/functions.html | 2 +- .../conversion/functions/as_list.html | 14 +- .../conversion/functions/as_map.html | 14 +- .../conversion/functions/as_set.html | 14 +- .../conversion/functions/as_vector.html | 14 +- .../container/conversion/metafunctions.html | 2 +- .../conversion/metafunctions/as_list.html | 14 +- .../conversion/metafunctions/as_map.html | 14 +- .../conversion/metafunctions/as_set.html | 14 +- .../conversion/metafunctions/as_vector.html | 14 +- doc/html/fusion/container/generation.html | 4 +- .../container/generation/functions.html | 2 +- .../generation/functions/list_tie.html | 14 +- .../generation/functions/make_cons.html | 16 +- .../generation/functions/make_list.html | 16 +- .../generation/functions/make_map.html | 16 +- .../generation/functions/make_set.html | 16 +- .../generation/functions/make_vector.html | 16 +- .../generation/functions/map_tie.html | 14 +- .../container/generation/functions/tiers.html | 28 +- .../generation/functions/vector_tie.html | 14 +- .../container/generation/metafunctions.html | 2 +- .../generation/metafunctions/list_tie.html | 14 +- .../generation/metafunctions/make_cons.html | 14 +- .../generation/metafunctions/make_list.html | 14 +- .../generation/metafunctions/make_map.html | 16 +- .../generation/metafunctions/make_set.html | 14 +- .../generation/metafunctions/make_vector.html | 14 +- .../generation/metafunctions/map_tie.html | 14 +- .../generation/metafunctions/vector_tie.html | 14 +- doc/html/fusion/container/list.html | 22 +- doc/html/fusion/container/map.html | 30 +- doc/html/fusion/container/set.html | 30 +- doc/html/fusion/container/vector.html | 24 +- doc/html/fusion/extension.html | 2 +- doc/html/fusion/extension/ext_full.html | 65 +- .../fusion/extension/iterator_facade.html | 16 +- .../fusion/extension/sequence_facade.html | 16 +- doc/html/fusion/functional.html | 10 +- doc/html/fusion/functional/adapters.html | 2 +- .../fusion/functional/adapters/fused.html | 52 +- .../adapters/fused_function_object.html | 52 +- .../functional/adapters/fused_procedure.html | 48 +- .../fusion/functional/adapters/limits.html | 14 +- .../fusion/functional/adapters/unfused.html | 40 +- .../functional/adapters/unfused_typed.html | 44 +- doc/html/fusion/functional/concepts.html | 2 +- .../fusion/functional/concepts/callable.html | 20 +- .../functional/concepts/def_callable.html | 28 +- doc/html/fusion/functional/concepts/poly.html | 38 +- .../functional/concepts/reg_callable.html | 26 +- doc/html/fusion/functional/generation.html | 2 +- .../functional/generation/functions.html | 2 +- .../generation/functions/mk_fused.html | 28 +- .../generation/functions/mk_fused_fobj.html | 28 +- .../generation/functions/mk_fused_proc.html | 28 +- .../generation/functions/mk_unfused.html | 28 +- .../functional/generation/metafunctions.html | 2 +- .../generation/metafunctions/mk_fused.html | 14 +- .../metafunctions/mk_fused_fobj.html | 14 +- .../metafunctions/mk_fused_proc.html | 14 +- .../generation/metafunctions/mk_unfused.html | 14 +- doc/html/fusion/functional/invocation.html | 2 +- .../functional/invocation/functions.html | 2 +- .../invocation/functions/invoke.html | 36 +- .../invocation/functions/invoke_fobj.html | 36 +- .../invocation/functions/invoke_proc.html | 36 +- .../fusion/functional/invocation/limits.html | 18 +- .../functional/invocation/metafunctions.html | 2 +- .../invocation/metafunctions/invoke.html | 16 +- .../invocation/metafunctions/invoke_fobj.html | 16 +- .../invocation/metafunctions/invoke_proc.html | 16 +- doc/html/fusion/introduction.html | 20 +- doc/html/fusion/iterator.html | 4 +- doc/html/fusion/iterator/concepts.html | 2 +- .../concepts/associative_iterator.html | 64 +- .../concepts/bidirectional_iterator.html | 71 +- .../iterator/concepts/forward_iterator.html | 125 ++-- .../concepts/random_access_iterator.html | 56 +- doc/html/fusion/iterator/functions.html | 2 +- .../fusion/iterator/functions/advance.html | 14 +- .../fusion/iterator/functions/advance_c.html | 14 +- doc/html/fusion/iterator/functions/deref.html | 14 +- .../fusion/iterator/functions/deref_data.html | 14 +- .../fusion/iterator/functions/distance.html | 14 +- doc/html/fusion/iterator/functions/next.html | 14 +- doc/html/fusion/iterator/functions/prior.html | 14 +- doc/html/fusion/iterator/metafunctions.html | 2 +- .../iterator/metafunctions/advance.html | 14 +- .../iterator/metafunctions/advance_c.html | 14 +- .../fusion/iterator/metafunctions/deref.html | 14 +- .../iterator/metafunctions/deref_data.html | 14 +- .../iterator/metafunctions/distance.html | 14 +- .../iterator/metafunctions/equal_to.html | 14 +- .../fusion/iterator/metafunctions/key_of.html | 14 +- .../fusion/iterator/metafunctions/next.html | 14 +- .../fusion/iterator/metafunctions/prior.html | 14 +- .../iterator/metafunctions/value_of.html | 14 +- .../iterator/metafunctions/value_of_data.html | 14 +- doc/html/fusion/iterator/operator.html | 2 +- .../iterator/operator/operator_equality.html | 12 +- .../operator/operator_inequality.html | 12 +- .../operator/operator_unary_star.html | 14 +- doc/html/fusion/notes.html | 64 +- doc/html/fusion/organization.html | 181 +++-- doc/html/fusion/preface.html | 36 +- doc/html/fusion/quick_start.html | 39 +- doc/html/fusion/references.html | 44 +- doc/html/fusion/sequence.html | 4 +- doc/html/fusion/sequence/concepts.html | 6 +- .../concepts/associative_sequence.html | 60 +- .../concepts/bidirectional_sequence.html | 50 +- .../sequence/concepts/forward_sequence.html | 99 ++- .../concepts/random_access_sequence.html | 50 +- doc/html/fusion/sequence/intrinsic.html | 16 +- .../fusion/sequence/intrinsic/functions.html | 2 +- .../sequence/intrinsic/functions/at.html | 14 +- .../sequence/intrinsic/functions/at_c.html | 14 +- .../sequence/intrinsic/functions/at_key.html | 14 +- .../sequence/intrinsic/functions/back.html | 14 +- .../sequence/intrinsic/functions/begin.html | 46 +- .../sequence/intrinsic/functions/empty.html | 14 +- .../sequence/intrinsic/functions/end.html | 46 +- .../sequence/intrinsic/functions/front.html | 14 +- .../sequence/intrinsic/functions/has_key.html | 14 +- .../sequence/intrinsic/functions/size.html | 14 +- .../sequence/intrinsic/functions/swap.html | 12 +- .../sequence/intrinsic/metafunctions.html | 2 +- .../sequence/intrinsic/metafunctions/at.html | 30 +- .../intrinsic/metafunctions/at_c.html | 30 +- .../intrinsic/metafunctions/at_key.html | 30 +- .../intrinsic/metafunctions/back.html | 14 +- .../intrinsic/metafunctions/begin.html | 46 +- .../intrinsic/metafunctions/empty.html | 14 +- .../sequence/intrinsic/metafunctions/end.html | 46 +- .../intrinsic/metafunctions/front.html | 14 +- .../intrinsic/metafunctions/has_key.html | 14 +- .../intrinsic/metafunctions/size.html | 14 +- .../intrinsic/metafunctions/swap.html | 12 +- .../intrinsic/metafunctions/value_at.html | 14 +- .../intrinsic/metafunctions/value_at_c.html | 14 +- .../intrinsic/metafunctions/value_at_key.html | 14 +- doc/html/fusion/sequence/operator.html | 2 +- .../fusion/sequence/operator/comparison.html | 4 +- .../sequence/operator/comparison/equal.html | 14 +- .../operator/comparison/greater_than.html | 12 +- .../comparison/greater_than_equal.html | 12 +- .../operator/comparison/less_than.html | 12 +- .../operator/comparison/less_than_equal.html | 12 +- .../operator/comparison/not_equal.html | 12 +- doc/html/fusion/sequence/operator/i_o.html | 6 +- doc/html/fusion/sequence/operator/i_o/in.html | 14 +- .../fusion/sequence/operator/i_o/out.html | 14 +- doc/html/fusion/support.html | 2 +- doc/html/fusion/support/category_of.html | 14 +- doc/html/fusion/support/deduce.html | 16 +- doc/html/fusion/support/deduce_sequence.html | 16 +- doc/html/fusion/support/is_sequence.html | 14 +- doc/html/fusion/support/is_view.html | 14 +- doc/html/fusion/support/pair.html | 16 +- doc/html/fusion/support/tag_of.html | 14 +- doc/html/fusion/tuple.html | 2 +- .../fusion/tuple/class_template_tuple.html | 4 +- .../class_template_tuple/construction.html | 8 +- .../class_template_tuple/element_access.html | 6 +- .../relational_operators.html | 8 +- .../tuple_creation_functions.html | 6 +- .../tuple_helper_classes.html | 6 +- doc/html/fusion/tuple/pairs.html | 6 +- doc/html/fusion/view.html | 4 +- doc/html/fusion/view/filter_view.html | 32 +- doc/html/fusion/view/iterator_range.html | 44 +- doc/html/fusion/view/joint_view.html | 34 +- doc/html/fusion/view/nview.html | 26 +- doc/html/fusion/view/reverse_view.html | 42 +- doc/html/fusion/view/single_view.html | 20 +- doc/html/fusion/view/transform_view.html | 30 +- doc/html/fusion/view/zip_view.html | 32 +- doc/html/index.html | 8 +- doc/view.qbk | 66 ++ include/boost/fusion/adapted.hpp | 9 +- .../adapted/boost_array/array_iterator.hpp | 2 +- .../boost_tuple/boost_tuple_iterator.hpp | 8 +- .../adapted/class/adapt_assoc_class.hpp | 11 + .../adapted/class/adapt_assoc_class_named.hpp | 2 +- .../fusion/adapted/class/adapt_class.hpp | 11 + .../adapted/class/adapt_class_named.hpp | 2 +- .../fusion/adapted/class/class_iterator.hpp | 105 --- .../adapted/class/detail/adapt_base.hpp | 7 +- .../fusion/adapted/class/detail/at_impl.hpp | 70 -- .../adapted/class/detail/at_key_impl.hpp | 54 -- .../adapted/class/detail/begin_impl.hpp | 40 -- .../adapted/class/detail/category_of_impl.hpp | 35 - .../fusion/adapted/class/detail/end_impl.hpp | 48 -- .../adapted/class/detail/has_key_impl.hpp | 40 -- .../adapted/class/detail/is_sequence_impl.hpp | 31 - .../adapted/class/detail/is_view_impl.hpp | 32 - .../fusion/adapted/class/detail/size_impl.hpp | 37 - .../adapted/class/detail/value_at_impl.hpp | 47 -- .../class/detail/value_at_key_impl.hpp | 39 - .../boost/fusion/adapted/class/extension.hpp | 68 -- .../boost/fusion/adapted/mpl/mpl_iterator.hpp | 2 +- .../adapted/struct/adapt_assoc_struct.hpp | 17 +- .../struct/adapt_assoc_struct_named.hpp | 22 +- .../fusion/adapted/struct/adapt_struct.hpp | 13 +- .../adapted/struct/adapt_struct_named.hpp | 21 +- .../adapted/struct/detail/adapt_base.hpp | 20 +- .../adapted/struct/detail/define_struct.hpp | 8 +- .../adapted/struct/detail/extension.hpp | 8 +- .../adapted/struct/detail/is_view_impl.hpp | 4 +- .../adapted/struct/detail/proxy_type.hpp | 7 +- include/boost/fusion/algorithm/iteration.hpp | 3 + .../fusion/algorithm/iteration/accumulate.hpp | 4 +- .../algorithm/iteration/detail/fold.hpp | 676 +++++++++++------- .../boost/fusion/algorithm/iteration/fold.hpp | 43 +- .../fusion/algorithm/iteration/iter_fold.hpp | 17 + .../algorithm/iteration/reverse_fold.hpp | 17 + .../algorithm/iteration/reverse_iter_fold.hpp | 19 + .../fusion/algorithm/query/detail/all.hpp | 2 +- .../fusion/algorithm/query/detail/count.hpp | 14 +- .../fusion/algorithm/transformation/clear.hpp | 2 +- .../transformation/detail/replace.hpp | 4 +- .../transformation/detail/replace_if.hpp | 4 +- .../boost/fusion/container/deque/deque.hpp | 2 +- .../fusion/container/deque/deque_iterator.hpp | 4 + include/boost/fusion/container/list/cons.hpp | 16 +- .../fusion/container/list/cons_iterator.hpp | 4 +- .../boost/fusion/container/vector/vector.hpp | 4 +- .../fusion/container/vector/vector10.hpp | 2 +- .../container/vector/vector_iterator.hpp | 17 +- .../boost/fusion/functional/adapter/fused.hpp | 10 + .../adapter/fused_function_object.hpp | 10 + .../functional/adapter/fused_procedure.hpp | 10 + .../fusion/functional/adapter/unfused.hpp | 11 + .../functional/adapter/unfused_typed.hpp | 9 + .../fusion/functional/invocation/invoke.hpp | 29 +- .../invocation/invoke_function_object.hpp | 30 +- .../invocation/invoke_procedure.hpp | 27 +- include/boost/fusion/include/has_key.hpp | 2 +- include/boost/fusion/include/iter_fold.hpp | 13 + include/boost/fusion/include/reverse_fold.hpp | 13 + .../fusion/include/reverse_iter_fold.hpp | 13 + .../boost/fusion/iterator/basic_iterator.hpp | 4 +- .../fusion/iterator/mpl/convert_iterator.hpp | 2 +- .../fusion/iterator/mpl/fusion_iterator.hpp | 24 +- .../sequence/comparison/detail/equal_to.hpp | 2 +- .../fusion/sequence/comparison/equal_to.hpp | 10 + include/boost/fusion/support/pair.hpp | 10 + include/boost/fusion/support/tag_of.hpp | 37 +- include/boost/fusion/view.hpp | 4 +- .../fusion/view/filter_view/filter_view.hpp | 5 +- .../view/filter_view/filter_view_iterator.hpp | 8 +- .../view/iterator_range/iterator_range.hpp | 16 +- .../fusion/view/joint_view/joint_view.hpp | 8 +- .../view/joint_view/joint_view_iterator.hpp | 10 +- .../view/nview/detail/distance_impl.hpp | 2 +- .../fusion/view/nview/nview_iterator.hpp | 4 +- .../view/repetitive_view/repetitive_view.hpp | 8 +- .../repetitive_view_iterator.hpp | 12 +- .../fusion/view/reverse_view/reverse_view.hpp | 8 +- .../reverse_view/reverse_view_iterator.hpp | 8 +- .../fusion/view/single_view/single_view.hpp | 14 +- .../view/single_view/single_view_iterator.hpp | 10 + .../view/transform_view/transform_view.hpp | 16 +- .../transform_view_iterator.hpp | 8 +- .../view/zip_view/detail/distance_impl.hpp | 2 +- test/Jamfile | 4 + test/algorithm/all.cpp | 4 +- test/algorithm/any.cpp | 4 +- test/algorithm/fold.cpp | 6 +- test/algorithm/fold.hpp | 212 ++++++ test/algorithm/fold2.cpp | 8 + test/algorithm/iter_fold.cpp | 10 + test/algorithm/none.cpp | 4 +- test/algorithm/reverse_fold.cpp | 10 + test/algorithm/reverse_iter_fold.cpp | 12 + test/functional/make_unfused_generic.cpp | 124 ---- test/functional/make_unfused_lvalue_args.cpp | 126 ---- test/functional/make_unfused_rvalue_args.cpp | 110 --- test/functional/unfused_generic.cpp | 126 ---- test/functional/unfused_lvalue_args.cpp | 119 --- test/functional/unfused_rvalue_args.cpp | 102 --- test/functional/unfused_typed.cpp | 1 + test/sequence/adapt_assoc_class.cpp | 6 +- test/sequence/adapt_assoc_class_named.cpp | 8 +- test/sequence/adapt_assoc_struct.cpp | 4 +- test/sequence/adapt_assoc_struct_named.cpp | 6 +- test/sequence/adapt_assoc_tpl_class.cpp | 6 +- test/sequence/adapt_assoc_tpl_struct.cpp | 4 +- test/sequence/adapt_class.cpp | 6 +- test/sequence/adapt_class_named.cpp | 8 +- test/sequence/adapt_struct.cpp | 4 +- test/sequence/adapt_struct_named.cpp | 6 +- test/sequence/adapt_tpl_class.cpp | 6 +- test/sequence/adapt_tpl_struct.cpp | 4 +- test/sequence/cons.cpp | 9 +- test/sequence/define_assoc_struct.cpp | 4 +- test/sequence/define_assoc_tpl_struct.cpp | 4 +- test/sequence/define_struct.cpp | 4 +- test/sequence/define_tpl_struct.cpp | 4 +- test/sequence/filter_view.cpp | 6 +- test/sequence/iterator_range.cpp | 5 +- test/sequence/joint_view.cpp | 9 +- test/sequence/map.cpp | 13 +- test/sequence/misc.hpp | 2 +- test/sequence/nview.cpp | 2 +- test/sequence/set.cpp | 13 +- test/sequence/tr1_tuple_auto_conv.cpp | 2 +- 402 files changed, 4874 insertions(+), 5055 deletions(-) delete mode 100644 include/boost/fusion/adapted/class/class_iterator.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/at_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/at_key_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/begin_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/category_of_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/end_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/has_key_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/is_view_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/size_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/value_at_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/extension.hpp create mode 100644 include/boost/fusion/algorithm/iteration/iter_fold.hpp create mode 100644 include/boost/fusion/algorithm/iteration/reverse_fold.hpp create mode 100644 include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp create mode 100644 include/boost/fusion/include/iter_fold.hpp create mode 100644 include/boost/fusion/include/reverse_fold.hpp create mode 100644 include/boost/fusion/include/reverse_iter_fold.hpp create mode 100644 test/algorithm/fold.hpp create mode 100644 test/algorithm/fold2.cpp create mode 100644 test/algorithm/iter_fold.cpp create mode 100644 test/algorithm/reverse_fold.cpp create mode 100644 test/algorithm/reverse_iter_fold.cpp delete mode 100644 test/functional/make_unfused_generic.cpp delete mode 100644 test/functional/make_unfused_lvalue_args.cpp delete mode 100644 test/functional/make_unfused_rvalue_args.cpp delete mode 100644 test/functional/unfused_generic.cpp delete mode 100644 test/functional/unfused_lvalue_args.cpp delete mode 100644 test/functional/unfused_rvalue_args.cpp diff --git a/doc/adapted.qbk b/doc/adapted.qbk index c8706362..7b4324f9 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -316,8 +316,8 @@ name of the adapted struct. The sequence `(namespace0)(namespace1)...` declares the namespace for `adapted_name`. It yields to a fully qualified name for `adapted_name` of `namespace0::namespace1::... adapted_name`. -If an empty namespace sequence is given, the adapted view is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the adapted view is placed in the global namespace. If no namespace sequence is given (i.e. `BOOST_FUSION_ADAPT_STRUCT_NAMED`), the adapted view is placed in the namespace `boost::fusion::adapted`. The sequence of `(member_typeN, member_nameN)` @@ -507,8 +507,8 @@ using `adapted_name` as the name of the adapted struct. The sequence `(namespace0)(namespace1)...` declares the namespace for `adapted_name`. It yields to a fully qualified name for `adapted_name` of `namespace0::namespace1::... adapted_name`. -If an empty namespace sequence is given, the adapted view is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the adapted view is placed in the global namespace. If no namespace sequence is given (i.e. `BOOST_FUSION_ADAPT_STRUCT_ASSOC_NAMED`), the adapted view is placed in the namespace `boost::fusion::adapted`. The sequence of `(member_typeN, member_nameN, key_typeN)` @@ -579,8 +579,8 @@ as a model of __random_access_sequence__. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN)` pairs declares the type and names of each of the struct members that are part of the sequence. @@ -624,8 +624,8 @@ model of __random_access_sequence__. [heading Synopsis] BOOST_FUSION_DEFINE_TPL_STRUCT( - (namespace0)(namespace1)..., (template_param0)(template_param1)..., + (namespace0)(namespace1)..., struct_name, (member_type0, member_name0) (member_type1, member_name1) @@ -643,13 +643,13 @@ model of __random_access_sequence__. The above macro generates the necessary code that defines and adapts `struct_name` as a model of __random_access_sequence__. +The sequence `(template_param0)(template_param1)...` declares the names of +the template type parameters used. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. -The sequence `(template_param0)(template_param1)...` declares the names of -the template type parameters used. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN)` pairs declares the type and names of each of the struct members that are part of the sequence. @@ -676,7 +676,7 @@ defined in __random_access_sequence__. // Any instantiated demo::employee is a Fusion sequence BOOST_FUSION_DEFINE_TPL_STRUCT( - (demo), (Name)(Age), employee, + (Name)(Age), (demo), employee, (Name, name) (Age, age)) @@ -713,8 +713,8 @@ as a model of __random_access_sequence__ and __associative_sequence__. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN, key_typeN)` triples declares the type, name and key type of each of the struct members that are part of the sequence. @@ -764,8 +764,8 @@ model of __random_access_sequence__ and __associative_sequence__. [heading Synopsis] BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( - (namespace0)(namespace1)..., (template_param0)(template_param1)..., + (namespace0)(namespace1)..., struct_name, (member_type0, member_name0, key_type0) (member_type1, member_name1, key_type1) @@ -784,13 +784,13 @@ model of __random_access_sequence__ and __associative_sequence__. The above macro generates the necessary code that defines and adapts `struct_name` as a model of __random_access_sequence__ and __associative_sequence__. +The sequence `(template_param0)(template_param1)...` declares the names of +the template type parameters used. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. -The sequence `(template_param0)(template_param1)...` declares the names of -the template type parameters used. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN, key_typeN)` triples declares the type, name and key type of each of the struct members that are part of the sequence. @@ -823,7 +823,7 @@ defined in __random_access_sequence__ and __associative_sequence__. // Any instantiated demo::employee is a Fusion sequence BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( - (demo), (Name)(Age), employee, + (Name)(Age), (demo), employee, (Name, name, keys::name) (Age, age, keys::age)) diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk index 3fa194b2..e77249d3 100644 --- a/doc/algorithm.qbk +++ b/doc/algorithm.qbk @@ -35,9 +35,7 @@ algorithm simply returns a __joint_view__: a view that holds a reference to the original sequence `s` and the value `x`. Functions that were once sequence specific and need to be implemented N times over N different sequences are now implemented only once. That is to say that Fusion -sequences are cheaply extensible. However, an important caveat is that the -result of a sequence extending operation like __push_back__ does not retain -the properties of the original sequence such as associativity of __set__(s). +sequences are cheaply extensible. To regain the original sequence, __conversion__ functions are provided. You may use one of the __conversion__ functions to convert back to the original sequence type. @@ -59,42 +57,59 @@ a sequence repeatedly applying an operation to its elements. [section Functions] -[section fold] - +[template fold_desc[name result_of_name arg_desc arg_id arg_type_id invoke_desc semantics_elements_desc example_arg_transform example_result I0 I1 IN] [heading Description] -For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, fold returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`. +For a sequence `seq`, initial state `initial_state`, and binary function object +or function pointer `f`, [^[name]] returns the result of the repeated application of +binary `f` to the result of the previous `f` invocation (`inital_state` if it is +the first call) and [arg_desc] of `seq`. +[def name_macro [name]] +[def result_of_name_macro [result_of_name]] [heading Synopsis] template< typename Sequence, typename State, typename F > - typename __result_of_fold__::type fold( - Sequence& seq, State const& initial_state, F const& f); + typename result_of_name_macro::type name_macro( + Sequence& seq, State const& initial_state, F f); + + template< + typename Sequence, + typename State, + typename F + > + typename result_of_name_macro::type name_macro( + Sequence const& seq, State const& initial_state, F f); +[def arg_type_id_macro [arg_type_id]] +[def arg_id_macro [arg_id]] +[def invoke_desc_macro [invoke_desc]] [table Parameters [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] [[`initial_state`][Any type][Initial state]] - [[`f`][`__boost_result_of_call__::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]] + [[`f`][`f(s,arg_id_macro)` with return type `__boost_result_of_call__::type` must be a valid expression for current state `s` of type `S`, and for each invoke_desc_macro][Operation's argument]] ] [heading Expression Semantics] - fold(seq, initial_state, f); + name_macro(seq, initial_state, f); [*Return type]: Any type -[*Semantics]: Equivalent to `f(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`. +[*Semantics]: Equivalent to [^f(... f(f(initial_state,[arg_id][I0]),[arg_id][I1]) ...[arg_id][IN])] where [^[arg_id]1 ...[arg_id]N] are [semantics_elements_desc]. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `f`. [heading Header] - #include - #include + #include + #include +[def example_result_macro [example_result]] +[def example_arg_transform_macro [example_arg_transform]] [heading Example] struct make_string { @@ -103,66 +118,32 @@ Linear, exactly `__result_of_size__::value` applications of `f`. template std::string operator()(const std::string& str, const T& t) const { - return str + boost::lexical_cast(t); + return str + boost::lexical_cast(example_arg_transform_macro); } }; ... const __vector__ vec(1,2); - assert(__fold__(vec,std::string(""), make_string()) == "12"); + assert(name_macro(vec,std::string(""), make_string()) == example_result_macro); +] +[section fold] +[fold_desc fold..__result_of_fold__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] +[endsect] + +[section reverse_fold] +[fold_desc reverse_fold..__result_of_reverse_fold__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."21"..N..N-1..1] +[endsect] + +[section iter_fold] +[fold_desc iter_fold..__result_of_iter_fold__..iterators on each element..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."12"..1..2..N] +[endsect] + +[section reverse_iter_fold] +[fold_desc reverse_iter_fold..__result_of_reverse_iter_fold__..iterators on each element..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."21"..N..N-1..1] [endsect] [section accumulate] - -[heading Description] -For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, accumulate returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F - > - typename __result_of_accumulate__::type accumulate( - Sequence& seq, State const& initial_state, F const& f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]] - [[`initial_state`][Any type][Initial state]] - [[`f`][`__boost_result_of_call__::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]] -] - -[heading Expression Semantics] - accumulate(seq, initial_state, f); - -[*Return type]: Any type - -[*Semantics]: Equivalent to `f(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `f`. - -[heading Header] - - #include - #include - -[heading Example] - struct make_string - { - typedef std::string result_type; - - template - std::string operator()(const std::string& str, const T& t) const - { - return str + boost::lexical_cast(t); - } - }; - ... - const __vector__ vec(1,2); - assert(__accumulate__(vec,std::string(""), make_string()) == "12"); - +[fold_desc accumulate..__result_of_accumulate__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] [endsect] [section for_each] @@ -176,7 +157,7 @@ Applies a unary function object to each element of a sequence. typename F > typename __result_of_for_each__::type for_each( - Sequence& seq, F const& f); + Sequence& seq, F f); [table Parameters [[Parameter][Requirement][Description]] @@ -219,84 +200,67 @@ Linear, exactly `__result_of_size__::value` applications of `f`. [section Metafunctions] -[section fold] - +[template meta_fold_desc[name name_func arg_id arg_type_id invoke_meta_desc] [heading Description] -Returns the result type of __fold__. +Returns the result type of [name_func]. +[def name_macro [name]] [heading Synopsis] template< typename Sequence, typename State, typename F> - struct fold + struct name_macro { typedef __unspecified__ type; }; +[def arg_type_id_macro [arg_type_id]] +[def arg_id_macro [arg_id]] +[def invoke_meta_desc_macro [invoke_meta_desc]] [table Parameters - [[Parameter] [Requirement] [Description]] + [[Parameter] [Requirement] [Description]] [[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]] [[`State`] [Any type] [The initial state for the first application of `F`]] - [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]] + [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,arg_id_macro)` with current state `s` of type `S`, and an invoke_meta_desc_macro][The operation to be applied on traversal]] ] [heading Expression Semantics] - __result_of_fold__::type + name_macro::type [*Return type]: Any type -[*Semantics]: Returns the result of applying `fold` to a sequence of type `Sequence`, with an initial state of -type `State` and binary function object or function pointer of type `F`. +[*Semantics]: Returns the result of applying [name_func] to a sequence of type +`Sequence`, with an initial state of type `State` and binary function object or +function pointer of type `F`. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `F`. [heading Header] - #include - #include + #include + #include +] +[section fold] +[meta_fold_desc fold..__fold__..e..E..element `e` of type `E` in `seq`] +[endsect] + +[section reverse_fold] +[meta_fold_desc reverse_fold..__reverse_fold__..e..E..element `e` of type `E` in `seq`] +[endsect] + +[section iter_fold] +[meta_fold_desc iter_fold..__iter_fold__..it..It..iterator `it` of type `It` on an element of `seq`] +[endsect] + +[section reverse_iter_fold] +[meta_fold_desc reverse_iter_fold..__reverse_iter_fold__..it..It..iterator `it` of type `It` on an element of `seq`] [endsect] [section accumulate] - -[heading Description] -Returns the result type of __accumulate__. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F> - struct accumulate - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]] - [[`State`] [Any type] [The initial state for the first application of `F`]] - [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]] -] - -[heading Expression Semantics] - __result_of_accumulate__::type - -[*Return type]: Any type - -[*Semantics]: Returns the result of applying `accumulate` to a sequence of type `Sequence`, with an initial state of -type `State` and binary function object or function pointer of type `F`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `F`. - -[heading Header] - - #include - #include - +[meta_fold_desc accumulate..__accumulate__..e..E..element `e` of type `E` in `seq`] [endsect] [section for_each] diff --git a/doc/changelog.qbk b/doc/changelog.qbk index 8a201a1c..ca301a2a 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -32,6 +32,8 @@ This section summarizes significant changes to the Fusion library. __adapt_assoc_struct_named_ns__ (Christopher Schmidt) * April 5, 2010: Added __define_struct__, __define_tpl_struct__, __define_assoc_struct__ and __define_assoc_tpl_struct__ (Christopher Schmidt) +* June 18, 2010: Added __reverse_fold__, __iter_fold__ and __reverse_iter_fold__ + (Christopher Schmidt) [endsect] diff --git a/doc/container.qbk b/doc/container.qbk index 226d3da1..83c10c1a 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -302,7 +302,7 @@ complexity (see __overloaded_functions__). #include #include - #include + #include #include [heading Synopsis] @@ -384,7 +384,7 @@ __overloaded_functions__). #include #include - #include + #include #include [heading Synopsis] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 97231b3c..9118c130 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -213,6 +213,12 @@ [def __algorithms__ [link fusion.algorithm Algorithms]] [def __fold__ [link fusion.algorithm.iteration.functions.fold `fold`]] [def __result_of_fold__ [link fusion.algorithm.iteration.metafunctions.fold `result_of::fold`]] +[def __reverse_fold__ [link fusion.algorithm.iteration.functions.reverse_fold `reverse_fold`]] +[def __result_of_reverse_fold__ [link fusion.algorithm.iteration.metafunctions.reverse_fold `result_of::reverse_fold`]] +[def __iter_fold__ [link fusion.algorithm.iteration.functions.iter_fold `iter_fold`]] +[def __result_of_iter_fold__ [link fusion.algorithm.iteration.metafunctions.iter_fold `result_of::iter_fold`]] +[def __reverse_iter_fold__ [link fusion.algorithm.iteration.functions.reverse_iter_fold `reverse_iter_fold`]] +[def __result_of_reverse_iter_fold__ [link fusion.algorithm.iteration.metafunctions.reverse_iter_fold `result_of::reverse_iter_fold`]] [def __accumulate__ [link fusion.algorithm.iteration.functions.accumulate `accumulate`]] [def __result_of_accumulate__ [link fusion.algorithm.iteration.metafunctions.accumulate `result_of::accumulate`]] [def __for_each__ [link fusion.algorithm.iteration.functions.for_each `for_each`]] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index d1f544ad..844907ad 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 55525001..5d07b5bf 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -56,7 +56,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

              - + Header

              #include <boost/fusion/adapted.hpp>
              diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html
              index 149a2e24..b9968dab 100644
              --- a/doc/html/fusion/adapted/adapt_assoc.html
              +++ b/doc/html/fusion/adapted/adapt_assoc.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ Sequence.

              - + Synopsis
              BOOST_FUSION_ADAPT_ASSOC_STRUCT(
              @@ -48,7 +48,7 @@
                   )
               
              - + Semantics

              @@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

              - + Header
              #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
               #include <boost/fusion/include/adapt_assoc_struct.hpp>
               
              - + Example
              namespace demo
              diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html
              index 0c5c5e27..2a8996cf 100644
              --- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html
              +++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

              - + Synopsis
              BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
              @@ -58,7 +58,7 @@
                   )
               
              - + Semantics

              @@ -71,8 +71,9 @@ It yields to a fully qualified name for adapted_name of namespace0::namespace1::... adapted_name. If an empty namespace - sequence is given, the adapted view is placed in the global namespace. If - no namespace sequence is given (i.e. BOOST_FUSION_ADAPT_STRUCT_ASSOC_NAMED), + sequence is given (that is a macro that expands to nothing), the adapted + view is placed in the global namespace. If no namespace sequence is given + (i.e. BOOST_FUSION_ADAPT_STRUCT_ASSOC_NAMED), the adapted view is placed in the namespace boost::fusion::adapted. The sequence of (member_typeN, member_nameN, key_typeN) triples declares the type, name and key type of each of the struct members that are part of the sequence. @@ -82,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

              - + Header
              #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
               #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
               
              - + Example
              namespace demo
              diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
              index ce580253..296ee714 100644
              --- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
              +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ Sequence.

              - + Synopsis
              BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
              @@ -50,7 +50,7 @@
                   )
               
              - + Semantics

              @@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

              - + Header
              #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
               #include <boost/fusion/include/adapt_assoc_struct.hpp>
               
              - + Example
              namespace demo
              diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
              index 3cd18118..a1d4e37f 100644
              --- a/doc/html/fusion/adapted/adapt_struct.html
              +++ b/doc/html/fusion/adapted/adapt_struct.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ Access Sequence.

              - + Synopsis
              BOOST_FUSION_ADAPT_STRUCT(
              @@ -47,7 +47,7 @@
                   )
               
              - + Semantics

              @@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

              - + Header
              #include <boost/fusion/adapted/struct/adapt_struct.hpp>
               #include <boost/fusion/include/adapt_struct.hpp>
               
              - + Example
              namespace demo
              diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html
              index 25cebc10..9f96e242 100644
              --- a/doc/html/fusion/adapted/adapt_struct_named.html
              +++ b/doc/html/fusion/adapted/adapt_struct_named.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

              - + Synopsis
              BOOST_FUSION_ADAPT_STRUCT_NAMED(
              @@ -57,7 +57,7 @@
                   )
               
              - + Semantics

              @@ -69,8 +69,9 @@ It yields to a fully qualified name for adapted_name of namespace0::namespace1::... adapted_name. If an empty namespace - sequence is given, the adapted view is placed in the global namespace. If - no namespace sequence is given (i.e. BOOST_FUSION_ADAPT_STRUCT_NAMED), + sequence is given (that is a macro that expands to nothing), the adapted + view is placed in the global namespace. If no namespace sequence is given + (i.e. BOOST_FUSION_ADAPT_STRUCT_NAMED), the adapted view is placed in the namespace boost::fusion::adapted. The sequence of (member_typeN, member_nameN) pairs declares the type and names of each of the struct members that are part of the sequence. @@ -80,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

              - + Header
              #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
               #include <boost/fusion/include/adapt_struct_named.hpp>
               
              - + Example
              namespace demo
              diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html
              index f86598f6..01c916c3 100644
              --- a/doc/html/fusion/adapted/adapt_tpl_struct.html
              +++ b/doc/html/fusion/adapted/adapt_tpl_struct.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ Sequence.

              - + Synopsis
              BOOST_FUSION_ADAPT_TPL_STRUCT(
              @@ -49,7 +49,7 @@
                   )
               
              - + Semantics

              @@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

              - + Header
              #include <boost/fusion/adapted/struct/adapt_struct.hpp>
               #include <boost/fusion/include/adapt_struct.hpp>
               
              - + Example
              namespace demo
              diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html
              index a2c47f23..d95c88d5 100644
              --- a/doc/html/fusion/adapted/array.html
              +++ b/doc/html/fusion/adapted/array.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -32,20 +32,22 @@ Access Sequence.

              - + Header
              #include <boost/fusion/adapted/array.hpp>
               #include <boost/fusion/include/array.hpp>
               
              - + Model of
              - +
              - + Example
              int arr[3] = {1,2,3};
              diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
              index 49e5fce7..0d1ab2ce 100644
              --- a/doc/html/fusion/adapted/boost__array.html
              +++ b/doc/html/fusion/adapted/boost__array.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -33,20 +33,22 @@ Access Sequence.

              - + Header
              #include <boost/fusion/adapted/boost_array.hpp>
               #include <boost/fusion/include/boost_array.hpp>
               
              - + Model of
              - +
              - + Example
              boost::array<int,3> arr = {{1,2,3}};
              @@ -58,7 +60,7 @@
               std::cout << at_c<2>(arr) << std::endl;
               
              - + See also

              diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index cb534515..f28859e2 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -22,7 +22,7 @@

              PrevUpHomeNext
              -
              +
              @@ -33,19 +33,21 @@ Sequence.

              - + Header
              #include <boost/fusion/adapted/boost_tuple.hpp>
               #include <boost/fusion/include/boost_tuple.hpp>
               
              - + Model of
              - +
              - + Example
              boost::tuple<int,std::string> example_tuple(101, "hello");
              @@ -53,7 +55,7 @@
               std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
               
              - + See also

              diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index cb76dd14..caf565a4 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -22,12 +22,12 @@

              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ Sequence.

              - + Synopsis
              BOOST_FUSION_DEFINE_ASSOC_STRUCT(
              @@ -49,7 +49,7 @@
                   ...
                   )
               
              -
              +

              Notation

              str
              @@ -68,7 +68,7 @@
              - + Expression Semantics
              @@ -80,9 +80,12 @@ It yields to a fully qualified name for struct_name of namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - of (member_typeN, member_nameN, key_typeN) triples declares the type, name and key - type of each of the struct members that are part of the sequence. + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, + member_nameN, + key_typeN) + triples declares the type, name and key type of each of the struct members + that are part of the sequence.

              The macro should be used at global scope. Semantics of an expression is defined @@ -179,14 +182,14 @@

              - + Header
              #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
               #include <boost/fusion/include/define_assoc_struct.hpp>
               
              - + Example
              namespace keys
              diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
              index f88942f0..3e56a19d 100644
              --- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html
              +++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,19 +38,19 @@ Sequence.

              - + Synopsis
              BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
              -    (namespace0)(namespace1)...,
                   (template_param0)(template_param1)...,
              +    (namespace0)(namespace1)...,
                   struct_name,
                   (member_type0, member_name0, key_type0)
                   (member_type1, member_name1, key_type1)
                   ...
                   )
               
              -
              +

              Notation

              Str
              @@ -73,21 +73,20 @@
              - + Expression Semantics

              The above macro generates the necessary code that defines and adapts struct_name as a model of Random Access Sequence and Associative - Sequence. The sequence (namespace0)(namespace1)... - declares the namespace for struct_name. - It yields to a fully qualified name for struct_name - of namespace0::namespace1::... + Sequence. The sequence (template_param0)(template_param1)... + declares the names of the template type parameters used. The sequence (namespace0)(namespace1)... declares the namespace for struct_name. It yields to a fully qualified + name for struct_name of + namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - (template_param0)(template_param1)... declares the names of the template type - parameters used. The sequence of (member_typeN, + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, member_nameN, key_typeN) triples declares the type, name and key type of each of the struct members @@ -188,14 +187,14 @@

              - + Header
              #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
               #include <boost/fusion/include/define_assoc_struct.hpp>
               
              - + Example
              namespace keys
              @@ -206,7 +205,7 @@
               
               // Any instantiated demo::employee is a Fusion sequence
               BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
              -    (demo), (Name)(Age), employee,
              +    (Name)(Age), (demo), employee,
                   (Name, name, keys::name)
                   (Age, age, keys::age))
               
              diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html index d8090fb1..bd327f58 100644 --- a/doc/html/fusion/adapted/define_struct.html +++ b/doc/html/fusion/adapted/define_struct.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ Access Sequence.

              - + Synopsis
              BOOST_FUSION_DEFINE_STRUCT(
              @@ -48,7 +48,7 @@
                   ...
                   )
               
              -
              +

              Notation

              str
              @@ -67,7 +67,7 @@
              - + Expression Semantics
              @@ -78,9 +78,11 @@ It yields to a fully qualified name for struct_name of namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - of (member_typeN, member_nameN) pairs declares the type and names of each - of the struct members that are part of the sequence. + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, + member_nameN) + pairs declares the type and names of each of the struct members that are + part of the sequence.

              The macro should be used at global scope. Semantics of an expression is defined @@ -176,14 +178,14 @@

              - + Header
              #include <boost/fusion/adapted/struct/define_struct.hpp>
               #include <boost/fusion/include/define_struct.hpp>
               
              - + Example
              // demo::employee is a Fusion sequence
              diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html
              index 9fa49309..3388fb5c 100644
              --- a/doc/html/fusion/adapted/define_tpl_struct.html
              +++ b/doc/html/fusion/adapted/define_tpl_struct.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,19 +37,19 @@ Access Sequence.

              - + Synopsis
              BOOST_FUSION_DEFINE_TPL_STRUCT(
              -    (namespace0)(namespace1)...,
                   (template_param0)(template_param1)...,
              +    (namespace0)(namespace1)...,
                   struct_name,
                   (member_type0, member_name0)
                   (member_type1, member_name1)
                   ...
                   )
               
              -
              +

              Notation

              Str
              @@ -72,20 +72,19 @@
              - + Expression Semantics

              The above macro generates the necessary code that defines and adapts struct_name as a model of Random - Access Sequence. The sequence (namespace0)(namespace1)... - declares the namespace for struct_name. - It yields to a fully qualified name for struct_name - of namespace0::namespace1::... + Access Sequence. The sequence (template_param0)(template_param1)... + declares the names of the template type parameters used. The sequence (namespace0)(namespace1)... declares the namespace for struct_name. It yields to a fully qualified + name for struct_name of + namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - (template_param0)(template_param1)... declares the names of the template type - parameters used. The sequence of (member_typeN, + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, member_nameN) pairs declares the type and names of each of the struct members that are part of the sequence. @@ -184,19 +183,19 @@

              - + Header
              #include <boost/fusion/adapted/struct/define_struct.hpp>
               #include <boost/fusion/include/define_struct.hpp>
               
              - + Example
              // Any instantiated demo::employee is a Fusion sequence
               BOOST_FUSION_DEFINE_TPL_STRUCT(
              -    (demo), (Name)(Age), employee,
              +    (Name)(Age), (demo), employee,
                   (Name, name)
                   (Age, age))
               
              diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 4ab8b889..d6e200f4 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -32,35 +32,35 @@ sequences fully conforming fusion sequences.

              - + Header
              #include <boost/fusion/adapted/mpl.hpp>
               #include <boost/fusion/include/mpl.hpp>
               
              - + Model of
              - + Example
              mpl::vector_c<int, 123, 456> vec_c;
              @@ -73,7 +73,7 @@
               std::cout << at_c<1>(v) << std::endl;
               
              - + See also

              diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 5c4fb866..36548e6e 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -22,7 +22,7 @@

              PrevUpHomeNext
              -
              +
              @@ -33,20 +33,22 @@ Access Sequence.

              - + Header
              #include <boost/fusion/adapted/std_pair.hpp>
               #include <boost/fusion/include/std_pair.hpp>
               
              - + Model of
              - +
              - + Example
              std::pair<int, std::string> p(123, "Hola!!!");
              @@ -55,7 +57,7 @@
               std::cout << p << std::endl;
               
              - + See also

              diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index e896edaa..f338790f 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -22,7 +22,7 @@

              PrevUpHomeNext
              -
              +
              @@ -44,7 +44,7 @@

              - + Lazy Evaluation

              @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

              - + Sequence Extension

              @@ -82,15 +82,12 @@ and the value x. Functions that were once sequence specific and need to be implemented N times over N different sequences are now implemented only once. That is to say that Fusion - sequences are cheaply extensible. However, an important caveat is that the - result of a sequence extending operation like push_back does not retain the properties - of the original sequence such as associativity of set(s). To regain the original sequence, - Conversion functions - are provided. You may use one of the Conversion + sequences are cheaply extensible. To regain the original sequence, Conversion + functions are provided. You may use one of the Conversion functions to convert back to the original sequence type.

              - + Header

              #include <boost/fusion/algorithm.hpp>
              diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
              index 962778fc..03c5901e 100644
              --- a/doc/html/fusion/algorithm/iteration.html
              +++ b/doc/html/fusion/algorithm/iteration.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

              - + Header
              #include <boost/fusion/algorithm/iteration.hpp>
              diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html
              index d4828078..efda40f5 100644
              --- a/doc/html/fusion/algorithm/iteration/functions.html
              +++ b/doc/html/fusion/algorithm/iteration/functions.html
              @@ -22,12 +22,15 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index 1f532318..4bffdb23 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -6,7 +6,7 @@ - + @@ -20,40 +20,61 @@

              -PrevUpHomeNext +PrevUpHomeNext
              -
              +
              -
              - - Description -

              - For a sequence seq, initial - state initial_state, - and binary function object or function pointer f, - accumulate returns the result of the repeated application of binary - f to the result of the - previous f invocation - (inital_state if it is - the first call) and each element of seq. -

              -
              - - Synopsis -
              + +

              +
              + + Description +
              +

              +

              +

              + For a sequence seq, + initial state initial_state, + and binary function object or function pointer f, + accumulate returns the result of the repeated application + of binary f to the + result of the previous f + invocation (inital_state + if it is the first call) and each element of seq. +

              +

              + +

              +
              + + Synopsis +
              +

              + +

              template<
                   typename Sequence,
                   typename State,
                   typename F
                   >
              -typename result_of::accumulate<Sequence, State, F>::type accumulate(
              -    Sequence& seq, State const& initial_state, F const& f);
              +typename result_of::accumulate<Sequence, State const, F>::type accumulate(
              +    Sequence& seq, State const& initial_state, F f);
              +    
              +template<
              +    typename Sequence,
              +    typename State,
              +    typename F
              +    >
              +typename result_of::accumulate<Sequence const, State const, F>::type accumulate(
              +    Sequence const& seq, State const& initial_state, F f);
               
              +

              +

              -

              Table 1.38. Parameters

              +

              Table 1.41. Parameters

              @@ -62,117 +83,142 @@ +

              + Parameter +

              + +

              + Requirement +

              + +

              + Description +

              + +

              + seq +

              + +

              + A model of Forward + Sequence +

              + +

              + Operation's argument +

              + +

              + initial_state +

              + +

              + Any type +

              + +

              + Initial state +

              + +

              + f +

              + +

              + f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E + in seq +

              + +

              + Operation's argument +

              +
              -

              - Parameter -

              -
              -

              - Requirement -

              -
              -

              - Description -

              -
              -

              - seq -

              -
              -

              - A model of Forward - Sequence, f(s,e) must be a valid expression - for current state s, - and each element e - in seq -

              -
              -

              - Operation's argument -

              -
              -

              - initial_state -

              -
              -

              - Any type -

              -
              -

              - Initial state -

              -
              -

              - f -

              -
              -

              - boost::result_of<F(S,E)>::type - is the return type of f(s,e) current state s of type S, - and for each element e - of type E in - seq -

              -
              -

              - Operation's argument -

              -
              -
              - - Expression - Semantics -
              -
              accumulate(seq, initial_state, f);
              +


              + +

              +
              + + Expression + Semantics +
              +

              + +

              +
              accumulate(seq, initial_state, f);
               

              - Return type: Any type -

              +

              - Semantics: Equivalent to f(... f(f(initial_state,e1),e2) ...eN) where e1 - ...eN - are the elements of seq. -

              -
              - - Complexity -
              + Return type: Any type +

              - Linear, exactly result_of::size<Sequence>::value applications of f. -

              -
              - - Header -
              -
              #include <boost/fusion/algorithm/iteration/accumulate.hpp>
              -#include <boost/fusion/include/accumulate.hpp>
              +            

              +

              + Semantics: Equivalent to f(... + f(f(initial_state,e1),e2) ...eN) where e1 ...eN + are the consecutive elements of seq. +

              +

              + +

              +
              + + Complexity +
              +

              +

              +

              + Linear, exactly result_of::size<Sequence>::value applications of f. +

              +

              + +

              +
              + + Header +
              +

              + +

              +
              #include <boost/fusion/algorithm/iteration/accumulate.hpp>
              +#include <boost/fusion/include/accumulate.hpp>
               
              -
              - - Example -
              +

              + +

              +
              + + Example +
              +

              + +

              struct make_string
               {
                   typedef std::string result_type;
              @@ -180,13 +226,15 @@
                   template<typename T>
                   std::string operator()(const std::string& str, const T& t) const
                   {
              -        return str + boost::lexical_cast<std::string>(t);
              +        return str + boost::lexical_cast<std::string>(t);
                   }
               };
               ...
               const vector<int,int> vec(1,2);
              -assert(accumulate(vec,std::string(""), make_string()) == "12");
              +assert(accumulate(vec,std::string(""), make_string()) == "12");
               
              +

              +

              @@ -199,7 +247,7 @@

              -PrevUpHomeNext +PrevUpHomeNext
              diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html index fd2d6daf..56889767 100644 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -7,7 +7,7 @@ - + @@ -20,37 +20,61 @@

              -PrevUpHomeNext +PrevUpHomeNext
              -
              +
              -
              - - Description -

              - For a sequence seq, initial - state initial_state, - and binary function object or function pointer f, - fold returns the result of the repeated application of binary f to the result of the previous f invocation (inital_state - if it is the first call) and each element of seq. -

              -
              - - Synopsis -
              + +

              +
              + + Description +
              +

              +

              +

              + For a sequence seq, + initial state initial_state, + and binary function object or function pointer f, + fold returns the result of the repeated application + of binary f to the + result of the previous f + invocation (inital_state + if it is the first call) and each element of seq. +

              +

              + +

              +
              + + Synopsis +
              +

              + +

              template<
                   typename Sequence,
                   typename State,
                   typename F
                   >
              -typename result_of::fold<Sequence, State, F>::type fold(
              -    Sequence& seq, State const& initial_state, F const& f);
              +typename result_of::fold<Sequence, State const, F>::type fold(
              +    Sequence& seq, State const& initial_state, F f);
              +    
              +template<
              +    typename Sequence,
              +    typename State,
              +    typename F
              +    >
              +typename result_of::fold<Sequence const, State const, F>::type fold(
              +    Sequence const& seq, State const& initial_state, F f);
               
              +

              +

              -

              Table 1.37. Parameters

              +

              Table 1.37. Parameters

              @@ -59,117 +83,142 @@ +

              + Parameter +

              + +

              + Requirement +

              + +

              + Description +

              + +

              + seq +

              + +

              + A model of Forward + Sequence +

              + +

              + Operation's argument +

              + +

              + initial_state +

              + +

              + Any type +

              + +

              + Initial state +

              + +

              + f +

              + +

              + f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E + in seq +

              + +

              + Operation's argument +

              +
              -

              - Parameter -

              -
              -

              - Requirement -

              -
              -

              - Description -

              -
              -

              - seq -

              -
              -

              - A model of Forward - Sequence, f(s,e) must be a valid expression - for current state s, - and each element e - in seq -

              -
              -

              - Operation's argument -

              -
              -

              - initial_state -

              -
              -

              - Any type -

              -
              -

              - Initial state -

              -
              -

              - f -

              -
              -

              - boost::result_of<F(S,E)>::type - is the return type of f(s,e) current state s of type S, - and for each element e - of type E in - seq -

              -
              -

              - Operation's argument -

              -
              -
              - - Expression - Semantics -
              -
              fold(seq, initial_state, f);
              +


              + +

              +
              + + Expression + Semantics +
              +

              + +

              +
              fold(seq, initial_state, f);
               

              - Return type: Any type -

              +

              - Semantics: Equivalent to f(... f(f(initial_state,e1),e2) ...eN) where e1 - ...eN - are the elements of seq. -

              -
              - - Complexity -
              + Return type: Any type +

              - Linear, exactly result_of::size<Sequence>::value applications of f. -

              -
              - - Header -
              -
              #include <boost/fusion/algorithm/iteration/fold.hpp>
              -#include <boost/fusion/include/fold.hpp>
              +            

              +

              + Semantics: Equivalent to f(... + f(f(initial_state,e1),e2) ...eN) where e1 ...eN + are the consecutive elements of seq. +

              +

              + +

              +
              + + Complexity +
              +

              +

              +

              + Linear, exactly result_of::size<Sequence>::value applications of f. +

              +

              + +

              +
              + + Header +
              +

              + +

              +
              #include <boost/fusion/algorithm/iteration/fold.hpp>
              +#include <boost/fusion/include/fold.hpp>
               
              -
              - - Example -
              +

              + +

              +
              + + Example +
              +

              + +

              struct make_string
               {
                   typedef std::string result_type;
              @@ -177,13 +226,15 @@
                   template<typename T>
                   std::string operator()(const std::string& str, const T& t) const
                   {
              -        return str + boost::lexical_cast<std::string>(t);
              +        return str + boost::lexical_cast<std::string>(t);
                   }
               };
               ...
               const vector<int,int> vec(1,2);
              -assert(fold(vec,std::string(""), make_string()) == "12");
              +assert(fold(vec,std::string(""), make_string()) == "12");
               
              +

              +

              @@ -196,7 +247,7 @@

              -PrevUpHomeNext +PrevUpHomeNext
              diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html index fd92401a..4da2722b 100644 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Applies a unary function object to each element of a sequence.

              - + Synopsis
              template<
              @@ -42,10 +42,10 @@
                   typename F
                   >
               typename result_of::for_each<Sequence, F>::type for_each(
              -    Sequence& seq, F const& f);
              +    Sequence& seq, F f);
               
              -

              Table 1.39. Parameters

              +

              Table 1.42. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -126,21 +126,21 @@ in seq.

              - + Complexity

              Linear, exactly result_of::size<Sequence>::value applications of f.

              - + Header
              #include <boost/fusion/algorithm/iteration/for_each.hpp>
               #include <boost/fusion/include/for_each.hpp>
               
              - + Example
              struct increment
              diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html
              index db18f64c..7b8aa4bc 100644
              --- a/doc/html/fusion/algorithm/iteration/metafunctions.html
              +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html
              @@ -22,12 +22,15 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 627245df..520c574e 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -6,7 +6,7 @@ - + @@ -20,34 +20,47 @@

              -PrevUpHomeNext +PrevUpHomeNext
              -
              +
              -
              - - Description -

              - Returns the result type of accumulate. -

              -
              - - Synopsis -
              + +

              +
              + + Description +
              +

              +

              +

              + Returns the result type of accumulate. +

              +

              + +

              +
              + + Synopsis +
              +

              + +

              template<
                   typename Sequence,
                   typename State,
                   typename F>
              -struct accumulate
              +struct accumulate
               {
                   typedef unspecified type;
               };
               
              +

              +

              -

              Table 1.41. Parameters

              +

              Table 1.47. Parameters

              @@ -56,112 +69,132 @@ +

              + Parameter +

              + +

              + Requirement +

              + +

              + Description +

              + +

              + Sequence +

              + +

              + A model of Forward + Sequence +

              + +

              + The sequence to iterate +

              + +

              + State +

              + +

              + Any type +

              + +

              + The initial state for the first application of F +

              + +

              + F +

              + +

              + boost::result_of<F(S,E)>::type is the return type + of f(s,e) with current state s of type S, and an element e of type E in seq +

              + +

              + The operation to be applied on traversal +

              +
              -

              - Parameter -

              -
              -

              - Requirement -

              -
              -

              - Description -

              -
              -

              - Sequence -

              -
              -

              - A model of Forward - Sequence -

              -
              -

              - The sequence to iterate -

              -
              -

              - State -

              -
              -

              - Any type -

              -
              -

              - The initial state for the first application of F -

              -
              -

              - F -

              -
              -

              - boost::result_of<F(S,E)>::type - is the return type of f(s,e) for current state s of type S, - and for each element e - of type E in - seq -

              -
              -

              - The operation to be applied on forward traversal -

              -
              -
              - - Expression - Semantics -
              -
              result_of::accumulate<Sequence, State, F>::type
              +


              + +

              +
              + + Expression + Semantics +
              +

              + +

              +
              accumulate<Sequence, State, F>::type
               

              - Return type: Any type -

              +

              - Semantics: Returns the result of applying - accumulate to a sequence - of type Sequence, with - an initial state of type State - and binary function object or function pointer of type F. -

              -
              - - Complexity -
              + Return type: Any type +

              - Linear, exactly result_of::size<Sequence>::value applications of F. -

              -
              - - Header -
              -
              #include <boost/fusion/algorithm/iteration/accumulate.hpp>
              -#include <boost/fusion/include/accumulate.hpp>
              +            

              +

              + Semantics: Returns the result of applying + accumulate to a sequence of + type Sequence, with + an initial state of type State + and binary function object or function pointer of type F. +

              +

              + +

              +
              + + Complexity +
              +

              +

              +

              + Linear, exactly result_of::size<Sequence>::value applications of F. +

              +

              + +

              +
              + + Header +
              +

              + +

              +
              #include <boost/fusion/algorithm/iteration/accumulate.hpp>
              +#include <boost/fusion/include/accumulate.hpp>
               
              +

              +

              @@ -174,7 +207,7 @@

              -PrevUpHomeNext +PrevUpHomeNext
              diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html index 71bd0f0e..c4771084 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html @@ -7,7 +7,7 @@ - + @@ -20,34 +20,47 @@

              -PrevUpHomeNext +PrevUpHomeNext
              -
              +
              -
              - - Description -

              - Returns the result type of fold. -

              -
              - - Synopsis -
              + +

              +
              + + Description +
              +

              +

              +

              + Returns the result type of fold. +

              +

              + +

              +
              + + Synopsis +
              +

              + +

              template<
                   typename Sequence,
                   typename State,
                   typename F>
              -struct fold
              +struct fold
               {
                   typedef unspecified type;
               };
               
              +

              +

              -

              Table 1.40. Parameters

              +

              Table 1.43. Parameters

              @@ -56,112 +69,132 @@ +

              + Parameter +

              + +

              + Requirement +

              + +

              + Description +

              + +

              + Sequence +

              + +

              + A model of Forward + Sequence +

              + +

              + The sequence to iterate +

              + +

              + State +

              + +

              + Any type +

              + +

              + The initial state for the first application of F +

              + +

              + F +

              + +

              + boost::result_of<F(S,E)>::type is the return type + of f(s,e) with current state s of type S, and an element e of type E in seq +

              + +

              + The operation to be applied on traversal +

              +
              -

              - Parameter -

              -
              -

              - Requirement -

              -
              -

              - Description -

              -
              -

              - Sequence -

              -
              -

              - A model of Forward - Sequence -

              -
              -

              - The sequence to iterate -

              -
              -

              - State -

              -
              -

              - Any type -

              -
              -

              - The initial state for the first application of F -

              -
              -

              - F -

              -
              -

              - boost::result_of<F(S,E)>::type - is the return type of f(s,e) for current state s of type S, - and for each element e - of type E in - seq -

              -
              -

              - The operation to be applied on forward traversal -

              -
              -
              - - Expression - Semantics -
              -
              result_of::fold<Sequence, State, F>::type
              +


              + +

              +
              + + Expression + Semantics +
              +

              + +

              +
              fold<Sequence, State, F>::type
               

              - Return type: Any type -

              +

              - Semantics: Returns the result of applying - fold to a sequence of - type Sequence, with an - initial state of type State - and binary function object or function pointer of type F. -

              -
              - - Complexity -
              + Return type: Any type +

              - Linear, exactly result_of::size<Sequence>::value applications of F. -

              -
              - - Header -
              -
              #include <boost/fusion/algorithm/iteration/fold.hpp>
              -#include <boost/fusion/include/fold.hpp>
              +            

              +

              + Semantics: Returns the result of applying + fold to a sequence of type + Sequence, with an initial + state of type State + and binary function object or function pointer of type F. +

              +

              + +

              +
              + + Complexity +
              +

              +

              +

              + Linear, exactly result_of::size<Sequence>::value applications of F. +

              +

              + +

              +
              + + Header +
              +

              + +

              +
              #include <boost/fusion/algorithm/iteration/fold.hpp>
              +#include <boost/fusion/include/fold.hpp>
               
              +

              +

              @@ -174,7 +207,7 @@

              -PrevUpHomeNext +PrevUpHomeNext
              diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html index dd215eb9..0a148a03 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -31,11 +31,11 @@ return type of for_each is always void.

              - + Description
              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.42. Parameters

              +

              Table 1.48. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -129,14 +129,14 @@ return type is always void.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/iteration/for_each.hpp>
              diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
              index ddc71d4f..90112986 100644
              --- a/doc/html/fusion/algorithm/query.html
              +++ b/doc/html/fusion/algorithm/query.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -34,7 +34,7 @@ The query algorithms provide support for searching and analyzing sequences.

              - + Header
              #include <boost/fusion/algorithm/query.hpp>
              diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html
              index 99f9f4c4..16b821b2 100644
              --- a/doc/html/fusion/algorithm/query/functions.html
              +++ b/doc/html/fusion/algorithm/query/functions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index 882a7298..5af55a6c 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              all
              - + Description

              @@ -38,7 +38,7 @@ element of seq.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
                   Sequence const& seq, F f);
               
              -

              Table 1.44. Parameters

              +

              Table 1.50. Parameters

              @@ -116,7 +116,7 @@

              - + Expression Semantics
              @@ -132,21 +132,21 @@ element e in seq.

              - + Complexity

              Linear. At most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/all.hpp>
               #include <boost/fusion/include/all.hpp>
               
              - + Example
              struct odd
              diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
              index f281b531..f7b5e9f2 100644
              --- a/doc/html/fusion/algorithm/query/functions/any.html
              +++ b/doc/html/fusion/algorithm/query/functions/any.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              any
              - + Description

              @@ -38,7 +38,7 @@ least one element of seq.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
                   Sequence const& seq, F f);
               
              -

              Table 1.43. Parameters

              +

              Table 1.49. Parameters

              @@ -116,7 +116,7 @@

              - + Expression semantics
              @@ -132,21 +132,21 @@ element e in seq.

              - + Complexity

              Linear. At most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/any.hpp>
               #include <boost/fusion/include/any.hpp>
               
              - + Example
              struct odd
              diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
              index ec6ea4b2..46dd2be2 100644
              --- a/doc/html/fusion/algorithm/query/functions/count.html
              +++ b/doc/html/fusion/algorithm/query/functions/count.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the number of elements of a given type within a sequence.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
                   Sequence const& seq, T const& t);
               
              -

              Table 1.48. Parameters

              +

              Table 1.54. Parameters

              @@ -113,7 +113,7 @@

              - + Expression Semantics
              @@ -128,21 +128,21 @@ t in seq.

              - + Complexity

              Linear. At most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/count.hpp>
               #include <boost/fusion/include/count.hpp>
               
              - + Example
              const vector<double,int,int> vec(1.0,2,3);
              diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
              index 8aec8baf..129c4a0b 100644
              --- a/doc/html/fusion/algorithm/query/functions/count_if.html
              +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
                   Sequence const& seq, F f);
               
              -

              Table 1.49. Parameters

              +

              Table 1.55. Parameters

              @@ -113,7 +113,7 @@

              - + Expression Semantics
              @@ -127,21 +127,21 @@ in seq where f evaluates to true.

              - + Complexity

              Linear. At most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/count_if.hpp>
               #include <boost/fusion/include/count_if.hpp>
               
              - + Example
              const vector<int,int,int> vec(1,2,3);
              diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
              index 5cc82a2b..57d25726 100644
              --- a/doc/html/fusion/algorithm/query/functions/find.html
              +++ b/doc/html/fusion/algorithm/query/functions/find.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Finds the first element of a given type within a sequence.

              - + Synopsis
              template<
              @@ -50,7 +50,7 @@
               unspecified find(Sequence& seq);
               
              -

              Table 1.46. Parameters

              +

              Table 1.52. Parameters

              @@ -114,7 +114,7 @@

              - + Expression Semantics
              @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

              - + Complexity

              Linear. At most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/find.hpp>
               #include <boost/fusion/include/find.hpp>
               
              - + Example
              const vector<char,int> vec('a','0');
              diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
              index 3f80cd31..dae720ac 100644
              --- a/doc/html/fusion/algorithm/query/functions/find_if.html
              +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -32,11 +32,11 @@ Lambda Expression evaluates to boost::mpl::true_.

              - + Description
              - + Synopsis
              template<
              @@ -52,7 +52,7 @@
               unspecified find_if(Sequence& seq);
               
              -

              Table 1.47. Parameters

              +

              Table 1.53. Parameters

              @@ -117,7 +117,7 @@

              - + Expression Semantics
              @@ -135,7 +135,7 @@ if there is no such element.

              - + Complexity

              @@ -143,14 +143,14 @@

              1. - include <boost/fusion/algorithm/query/find_if.hpp> -
              2. + include <boost/fusion/algorithm/query/find_if.hpp> +
              3. - include <boost/fusion/include/find_if.hpp> -
              4. + include <boost/fusion/include/find_if.hpp> +
              - + Example
              const vector<double,int> vec(1.0,2);
              diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
              index 14c2c9a4..86745f15 100644
              --- a/doc/html/fusion/algorithm/query/functions/none.html
              +++ b/doc/html/fusion/algorithm/query/functions/none.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ element of seq.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
                   Sequence const& seq, F f);
               
              -

              Table 1.45. Parameters

              +

              Table 1.51. Parameters

              @@ -116,7 +116,7 @@

              - + Expression Semantics
              @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

              - + Complexity

              Linear. At most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/none.hpp>
               #include <boost/fusion/include/none.hpp>
               
              - + Example
              struct odd
              diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html
              index 9ebc4f86..c0de13eb 100644
              --- a/doc/html/fusion/algorithm/query/metafunctions.html
              +++ b/doc/html/fusion/algorithm/query/metafunctions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index 941a2dd5..5d1f3658 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              all
              - + Description

              A metafunction returning the result type of all.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.51. Parameters

              +

              Table 1.57. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -130,14 +130,14 @@ The return type is always bool.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/query/all.hpp>
              diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
              index 5255ddfe..31a573b9 100644
              --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
              +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              any
              - + Description

              A metafunction returning the result type of any.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.50. Parameters

              +

              Table 1.56. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -130,14 +130,14 @@ The return type is always bool.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/query/any.hpp>
              diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
              index b7aa7672..019790fc 100644
              --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
              +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ given the sequence and search types.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.55. Parameters

              +

              Table 1.61. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ int.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/query/count.hpp>
              diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
              index 19e2c20c..bec283a4 100644
              --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
              +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ given the sequence and predicate types.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.56. Parameters

              +

              Table 1.62. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ always int.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/query/count_if.hpp>
              diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
              index 222f4d62..a871f196 100644
              --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
              +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ search types.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.53. Parameters

              +

              Table 1.59. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -129,14 +129,14 @@ if there is no such element.

              - + Complexity

              Linear, at most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/find.hpp>
              diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
              index b6c46e76..22770e23 100644
              --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
              +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ predicate types.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.54. Parameters

              +

              Table 1.60. Parameters

              @@ -113,7 +113,7 @@

              - + Expression Semantics
              @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

              - + Complexity

              Linear. At most result_of::size<Sequence>::value comparisons.

              - + Header
              #include <boost/fusion/algorithm/query/find_if.hpp>
              diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
              index f879c199..e7d1480d 100644
              --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
              +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              A metafunction returning the result type of none.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.52. Parameters

              +

              Table 1.58. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -130,14 +130,14 @@ The return type is always bool.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/query/none.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
              index 701c0cac..58464381 100644
              --- a/doc/html/fusion/algorithm/transformation.html
              +++ b/doc/html/fusion/algorithm/transformation.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -35,7 +35,7 @@ by performing some sort of transformation. In reality the new sequences are views onto the data in the original sequences.

              -
              +
              @@ -47,7 +47,7 @@

              [Note] Note
              - + Header
              #include <boost/fusion/algorithm/transformation.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html
              index f961d36e..c72af4f3 100644
              --- a/doc/html/fusion/algorithm/transformation/functions.html
              +++ b/doc/html/fusion/algorithm/transformation/functions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index d106d878..03f4bb84 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              clear returns an empty sequence.

              - + Synposis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
               
              -

              Table 1.66. Parameters

              +

              Table 1.72. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -103,21 +103,21 @@ with no elements.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/clear.hpp>
               #include <boost/fusion/include/clear.hpp>
               
              - + Example
              assert(clear(make_vector(1,2,3)) == make_vector());
              diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
              index afc24220..51e86b68 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

              - + Synposis
              template<
              @@ -54,7 +54,7 @@
                   Sequence const& seq, First const& it1, Last const& it2);
               
              -

              Table 1.67. Parameters

              +

              Table 1.73. Parameters

              @@ -138,7 +138,7 @@

              - + Expression Semantics
              @@ -149,15 +149,15 @@

              Semantics: Returns a new sequence, containing @@ -171,15 +171,15 @@

              Semantics: Returns a new sequence, with @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/erase.hpp>
               #include <boost/fusion/include/erase.hpp>
               
              - + Example
              const vector<int, double, char> vec(1, 2.0, 'c');
              diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
              index 230ee63a..feaa03c9 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -39,7 +39,7 @@ key.

              - + Synposis
              template<
              @@ -49,7 +49,7 @@
               typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
               
              -

              Table 1.68. Parameters

              +

              Table 1.74. Parameters

              @@ -114,7 +114,7 @@

              - + Expression Semantics
              @@ -131,21 +131,21 @@ except those with key Key.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/erase_key.hpp>
               #include <boost/fusion/include/erase_key.hpp>
               
              - + Example
              assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
              diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
              index 0080ec95..72dcccf5 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ the elements of a specified type.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
               typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
               
              -

              Table 1.57. Parameters

              +

              Table 1.63. Parameters

              @@ -109,7 +109,7 @@

              - + Expression Semantics
              @@ -120,15 +120,15 @@

              Semantics: Returns a sequence containing @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/filter.hpp>
               #include <boost/fusion/include/filter.hpp>
               
              - + Example
              const vector<int,int,long,long> vec(1,2,3,4);
              diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
              index 4981ee5f..41277071 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
               
              -

              Table 1.58. Parameters

              +

              Table 1.64. Parameters

              @@ -111,7 +111,7 @@

              - + Expression Semantics
              @@ -122,15 +122,15 @@

              Semantics: Returns a sequence containing @@ -140,21 +140,21 @@ is the same as in the original sequence.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/filter_if.hpp>
               #include <boost/fusion/include/filter_if.hpp>
               
              - + Example
              const vector<int,int,double,double> vec(1,2,3.0,4.0);
              diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
              index 4e8fafe8..9f7bcaed 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

              - + Synposis
              template<
              @@ -47,7 +47,7 @@
                   Sequence const& seq, Pos const& pos, T const& t);
               
              -

              Table 1.69. Parameters

              +

              Table 1.75. Parameters

              @@ -129,7 +129,7 @@

              - + Expression Semantics
              @@ -140,15 +140,15 @@

              Semantics: Returns a new sequence, containing @@ -158,21 +158,21 @@ pos.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/insert.hpp>
               #include <boost/fusion/include/insert.hpp>
               
              - + Example
              const vector<int,int> vec(1,2);
              diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
              index 4639b782..9c88b89a 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ iterator.

              - + Synposis
              template<
              @@ -47,7 +47,7 @@
                   Sequence const& seq, Pos const& pos, Range const& range);
               
              -

              Table 1.70. Parameters

              +

              Table 1.76. Parameters

              @@ -130,7 +130,7 @@

              - + Expression Semantics
              @@ -141,15 +141,15 @@

              Semantics: Returns a new sequence, containing @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/insert_range.hpp>
               #include <boost/fusion/include/insert_range.hpp>
               
              - + Example
              const vector<int,int> vec(1,2);
              diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
              index 7886f09b..db1c3104 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/join.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ first followed by the elements of the second.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
               
              -

              Table 1.71. Parameters

              +

              Table 1.77. Parameters

              @@ -109,7 +109,7 @@

              - + Expression Semantics
              @@ -120,16 +120,16 @@

              Semantics: Returns a sequence containing @@ -138,21 +138,21 @@ The order of the elements is preserved.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/join.hpp>
               #include <boost/fusion/include/join.hpp>
               
              - + Example
              vector<int,char> v1(1, 'a');
              diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
              index f7211fcc..9b63f157 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns a new sequence, with the last element of the original removed.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
               
              -

              Table 1.73. Parameters

              +

              Table 1.79. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -99,15 +99,15 @@

              Semantics: Returns a new sequence containing @@ -116,21 +116,21 @@ same order as they were in seq.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/pop_back.hpp>
               #include <boost/fusion/include/pop_back.hpp>
               
              - + Example
              assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
              diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
              index 48724ab1..67c487d4 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns a new sequence, with the first element of the original removed.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
               
              -

              Table 1.74. Parameters

              +

              Table 1.80. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -99,15 +99,15 @@

              Semantics: Returns a new sequence containing @@ -116,21 +116,21 @@ same order as they were in seq.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/pop_front.hpp>
               #include <boost/fusion/include/pop_front.hpp>
               
              - + Example
              assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
              diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
              index b0c6ac5d..e9675a4e 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns a new sequence with an element added at the end.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
                   Sequence const& seq, T const& t);
               
              -

              Table 1.75. Parameters

              +

              Table 1.81. Parameters

              @@ -109,7 +109,7 @@

              - + Expression Semantics
              @@ -120,15 +120,15 @@

              Semantics: Returns a new sequence, containing @@ -137,21 +137,21 @@ to the end. The elements are in the same order as they were in seq.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/push_back.hpp>
               #include <boost/fusion/include/push_back.hpp>
               
              - + Example
              assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
              diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
              index c7b48845..34ac02cf 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns a new sequence with an element added at the beginning.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
                   Sequence const& seq, T const& t);
               
              -

              Table 1.76. Parameters

              +

              Table 1.82. Parameters

              @@ -109,7 +109,7 @@

              - + Expression Semantics
              @@ -120,15 +120,15 @@

              Semantics: Returns a new sequence, containing @@ -138,21 +138,21 @@ seq.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/push_front.hpp>
               #include <boost/fusion/include/push_front.hpp>
               
              - + Example
              assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
              diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
              index 016f1e3c..ebd6a967 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ except those of a given type.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
               typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
               
              -

              Table 1.63. Parameters

              +

              Table 1.69. Parameters

              @@ -109,7 +109,7 @@

              - + Expression Semantics
              @@ -120,15 +120,15 @@

              Semantics: Returns a new sequence, containing @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/remove.hpp>
               #include <boost/fusion/include/remove.hpp>
               
              - + Example
              const vector<int,double> vec(1,2.0);
              diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
              index 9f1d1f7c..4b0aab99 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
               typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
               
              -

              Table 1.64. Parameters

              +

              Table 1.70. Parameters

              @@ -110,7 +110,7 @@

              - + Expression Semantics
              @@ -121,15 +121,15 @@

              Semantics: Returns a new sequence, containing @@ -139,21 +139,21 @@ >(seq).

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/remove_if.hpp>
               #include <boost/fusion/include/remove_if.hpp>
               
              - + Example
              const vector<int,double> vec(1,2.0);
              diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
              index 3f5e3e60..6457ecf4 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ a new value.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
                   Sequence const& seq, T const& old_value, T const& new_value);
               
              -

              Table 1.61. Parameters

              +

              Table 1.67. Parameters

              @@ -132,7 +132,7 @@

              - + Expression Semantics
              @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/replace.hpp>
               #include <boost/fusion/include/replace.hpp>
               
              - + Example
              assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
              diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
              index 96993b23..dd6001ee 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ replaced with a new value.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
                   Sequence const& seq, F f, T const& new_value);
               
              -

              Table 1.62. Parameters

              +

              Table 1.68. Parameters

              @@ -131,7 +131,7 @@

              - + Expression Semantics
              @@ -149,21 +149,21 @@ evaluates to true.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/replace_if.hpp>
               #include <boost/fusion/include/replace_if.hpp>
               
              - + Example
              struct odd
              diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
              index d2cc0849..14a2d199 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns a new sequence with the elements of the original in reverse order.

              - + Synposis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
               
              -

              Table 1.65. Parameters

              +

              Table 1.71. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -99,20 +99,20 @@

              Semantics: Returns a new sequence containing @@ -120,21 +120,21 @@ in reverse order.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/reverse.hpp>
               #include <boost/fusion/include/reverse.hpp>
               
              - + Example
              assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
              diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
              index d95ec096..9ed51b99 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ of seq.

              - + Unary version synopsis
              @@ -50,7 +50,7 @@ Sequence const& seq, F f);
              -

              Table 1.59. Parameters

              +

              Table 1.65. Parameters

              @@ -118,7 +118,7 @@

              - + Expression Semantics
              @@ -134,7 +134,7 @@ within seq.

              - + Binary version synopsis
              @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
              -

              Table 1.60. Parameters

              +

              Table 1.66. Parameters

              @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/transform.hpp>
               #include <boost/fusion/include/transform.hpp>
               
              - + Example
              struct triple
              diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
              index bd03f5b8..30b1bbe6 100644
              --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
              +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              zip
              - + Description

              @@ -35,7 +35,7 @@ of the members of the component sequences.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
               
              -

              Table 1.72. Parameters

              +

              Table 1.78. Parameters

              @@ -93,7 +93,7 @@

              - + Expression Semantics
              @@ -114,21 +114,21 @@ 'c'))

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/zip.hpp>
               #include <boost/fusion/include/zip.hpp>
               
              - + Example
              vector<int,char> v1(1, 'a');
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html
              index bb379566..4cd4428a 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index 263a5f8c..536a1c04 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ type.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.86. Parameters

              +

              Table 1.92. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/clear.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
              index 8a615b63..4a8cf79f 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -31,11 +31,11 @@ and range delimiting iterator types.

              - + Description
              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.87. Parameters

              +

              Table 1.93. Parameters

              @@ -131,7 +131,7 @@

              - + Expression Semantics
              @@ -142,15 +142,15 @@

              Semantics: Returns a new sequence with @@ -168,14 +168,14 @@ and It2 removed.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/erase.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
              index b7a8994a..29cf0576 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ and key types.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.88. Parameters

              +

              Table 1.94. Parameters

              @@ -113,7 +113,7 @@

              - + Expression Semantics
              @@ -130,14 +130,14 @@ except those with key Key.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/erase_key.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
              index fcfb61d3..5a7f46ef 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ and type to retain.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.77. Parameter

              +

              Table 1.83. Parameter

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -123,15 +123,15 @@

              Semantics: Returns a sequence containing @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/filter.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
              index 56ada1c7..0b370c24 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ Lambda Expression predicate type.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
               };
               
              -

              Table 1.78. Parameter

              +

              Table 1.84. Parameter

              @@ -114,7 +114,7 @@

              - + Expression Semantics
              @@ -125,15 +125,15 @@

              Semantics: Returns a sequence containing @@ -142,14 +142,14 @@ to boost::mpl::true_.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/filter_if.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
              index cc8eb3c2..cb32c418 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ position iterator and insertion types.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
               };
               
              -

              Table 1.89. Parameters

              +

              Table 1.95. Parameters

              @@ -131,7 +131,7 @@

              - + Expression Semantics
              @@ -142,15 +142,15 @@

              Semantics: Returns a sequence with an @@ -159,14 +159,14 @@ in Sequence.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/insert.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
              index 527331b6..3ea03e80 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
               };
               
              -

              Table 1.90. Parameters

              +

              Table 1.96. Parameters

              @@ -132,7 +132,7 @@

              - + Expression Semantics
              @@ -143,15 +143,15 @@

              Semantics: Returns a sequence with the @@ -160,14 +160,14 @@ into Sequence.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/insert_range.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
              index 89df764c..17b8677b 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result of joining 2 sequences, given the sequence types.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              - + Expression Semantics
              @@ -58,16 +58,16 @@

              Semantics: Returns a sequence containing @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/join.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
              index 714754c4..2d0f615b 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ type.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.91. Parameters

              +

              Table 1.97. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -103,15 +103,15 @@

              Semantics: Returns a sequence with all @@ -119,14 +119,14 @@ except the last element.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/pop_back.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
              index 557190be..c3c6f92b 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ type.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.92. Parameters

              +

              Table 1.98. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -103,15 +103,15 @@

              Semantics: Returns a sequence with all @@ -119,14 +119,14 @@ except the first element.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/pop_front.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
              index ae176f0c..4b1da24e 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ the input sequence and element to push.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.93. Parameters

              +

              Table 1.99. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -123,15 +123,15 @@

              Semantics: Returns a sequence with the @@ -140,14 +140,14 @@ added to the end.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/push_back.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
              index 4e451464..5532c437 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ of the input sequence and element to push.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.94. Parameters

              +

              Table 1.100. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -123,15 +123,15 @@

              Semantics: Returns a sequence with the @@ -140,14 +140,14 @@ added to the beginning.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/push_front.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
              index b7cf546e..6ffbff29 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ removal types.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.83. Parameters

              +

              Table 1.89. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -123,15 +123,15 @@

              Semantics: Returns a sequence containing @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/remove.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
              index a83ff493..abde89d6 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ Lambda Expression predicate types.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
               };
               
              -

              Table 1.84. Parameters

              +

              Table 1.90. Parameters

              @@ -114,7 +114,7 @@

              - + Expression Semantics
              @@ -125,15 +125,15 @@

              Semantics: Returns a sequence containing @@ -142,14 +142,14 @@ to boost::mpl::false_.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/remove_if.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
              index 128c66af..edd0f07d 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ the input sequence and element to replace.

              - + Synopsis
              template<
              @@ -48,7 +48,7 @@
               };
               
              -

              Table 1.81. Parameters

              +

              Table 1.87. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ replace.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/replace.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
              index a973a0e9..b123c42a 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
               };
               
              -

              Table 1.82. Parameters

              +

              Table 1.88. Parameters

              @@ -131,7 +131,7 @@

              - + Expression Semantics
              @@ -146,14 +146,14 @@ replace_if.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/replace_if.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
              index f89e13cd..df2815c6 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ type.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.85. Parameters

              +

              Table 1.91. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -103,34 +103,34 @@

              Semantics: Returns a sequence with the elements in the reverse order to Sequence.

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/reverse.hpp>
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
              index b3f3b27a..0c91762a 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ of seq.

              - + Unary version synopsis
              @@ -50,7 +50,7 @@ Sequence const& seq, F f);
              -

              Table 1.79. Parameters

              +

              Table 1.85. Parameters

              @@ -118,7 +118,7 @@

              - + Expression Semantics
              @@ -129,15 +129,15 @@

              Semantics: Returns a new sequence, containing @@ -145,7 +145,7 @@ within seq.

              - + Binary version synopsis
              @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
              -

              Table 1.80. Parameters

              +

              Table 1.86. Parameters

              @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

              - + Complexity

              Constant. Returns a view which is lazily evaluated.

              - + Header
              #include <boost/fusion/algorithm/transformation/transform.hpp>
               #include <boost/fusion/include/transform.hpp>
               
              - + Example
              struct triple
              diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
              index 2c7742d7..a6be7da6 100644
              --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
              +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              zip
              - + Description

              @@ -35,7 +35,7 @@ of the members of the component sequences.

              - + Synopsis
              template<
              @@ -50,7 +50,7 @@
               };
               
              - + Expression Semantics
              @@ -72,14 +72,14 @@ 'c'))

              - + Complexity

              Constant.

              - + Header
              #include <boost/fusion/algorithm/transformation/zip.hpp>
              diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
              index f550c7d1..0eca28df 100644
              --- a/doc/html/fusion/change_log.html
              +++ b/doc/html/fusion/change_log.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -31,59 +31,63 @@

              diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index dd511152..28a1aff5 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -49,7 +49,7 @@ These containers are more or less counterparts of those in STL.

              - + Header

              #include <boost/fusion/container.hpp>
              diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
              index 59e055ce..0710dc14 100644
              --- a/doc/html/fusion/container/cons.html
              +++ b/doc/html/fusion/container/cons.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -42,21 +42,21 @@ Inlined Functions).

              - + Header
              #include <boost/fusion/container/list/cons.hpp>
               #include <boost/fusion/include/cons.hpp>
               
              - + Synopsis
              template <typename Car, typename Cdr = nil>
               struct cons;
               
              - + Template parameters
              @@ -119,11 +119,13 @@
              - + Model of
              - -
              + +

              Notation

              nil
              @@ -159,7 +161,7 @@
              - + Expression Semantics

              @@ -292,7 +294,7 @@

              - + Example
              cons<int, cons<float> > l(12, cons<float>(5.5f));
              diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
              index 78ad6ff5..971c64bd 100644
              --- a/doc/html/fusion/container/conversion.html
              +++ b/doc/html/fusion/container/conversion.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -35,7 +35,7 @@ types using one of these conversion functions.

              - + Header
              #include <boost/fusion/include/convert.hpp>
              diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html
              index cba92405..70174779 100644
              --- a/doc/html/fusion/container/conversion/functions.html
              +++ b/doc/html/fusion/container/conversion/functions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index 6bfadce9..9c367d87 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Convert a fusion sequence to a list.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               as_list(Sequence const& seq);
               
              - + Parameters
              @@ -91,7 +91,7 @@
              - + Expression Semantics
              @@ -105,14 +105,14 @@ seq, to a list.

              - + Header
              #include <boost/fusion/container/list/convert.hpp>
               #include <boost/fusion/include/as_list.hpp>
               
              - + Example
              as_list(make_vector('x', 123, "hello"))
              diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
              index a8710ba4..cf04a5fb 100644
              --- a/doc/html/fusion/container/conversion/functions/as_map.html
              +++ b/doc/html/fusion/container/conversion/functions/as_map.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Convert a fusion sequence to a map.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               as_map(Sequence const& seq);
               
              - + Parameters
              @@ -91,7 +91,7 @@
              - + Expression Semantics
              @@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

              - + Header
              #include <boost/fusion/container/map/convert.hpp>
               #include <boost/fusion/include/as_map.hpp>
               
              - + Example
              as_map(make_vector(
              diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
              index d8d1f03a..06247ab1 100644
              --- a/doc/html/fusion/container/conversion/functions/as_set.html
              +++ b/doc/html/fusion/container/conversion/functions/as_set.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Convert a fusion sequence to a set.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               as_set(Sequence const& seq);
               
              - + Parameters
              @@ -91,7 +91,7 @@
              - + Expression Semantics
              @@ -109,14 +109,14 @@ key types.

              - + Header
              #include <boost/fusion/container/set/convert.hpp>
               #include <boost/fusion/include/as_set.hpp>
               
              - + Example
              as_set(make_vector('x', 123, "hello"))
              diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
              index 51c126d3..e2102f69 100644
              --- a/doc/html/fusion/container/conversion/functions/as_vector.html
              +++ b/doc/html/fusion/container/conversion/functions/as_vector.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Convert a fusion sequence to a vector.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               as_vector(Sequence const& seq);
               
              - + Parameters
              @@ -91,7 +91,7 @@
              - + Expression Semantics
              @@ -105,14 +105,14 @@ seq, to a vector.

              - + Header
              #include <boost/fusion/container/vector/convert.hpp>
               #include <boost/fusion/include/as_vector.hpp>
               
              - + Example
              as_vector(make_list('x', 123, "hello"))
              diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html
              index bdfbebe3..978b38d7 100644
              --- a/doc/html/fusion/container/conversion/metafunctions.html
              +++ b/doc/html/fusion/container/conversion/metafunctions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index f9d88686..f1b288d3 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -22,26 +22,26 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of as_list.

              - + Synopsis
              template <typename Sequence>
               struct as_list;
               
              - + Parameters
              @@ -86,7 +86,7 @@
              - + Expression Semantics
              @@ -101,14 +101,14 @@ Sequence, to a list.

              - + Header
              #include <boost/fusion/container/list/convert.hpp>
               #include <boost/fusion/include/as_list.hpp>
               
              - + Example
              result_of::as_list<vector<char, int> >::type
              diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
              index 78cea414..289abbce 100644
              --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
              +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
              @@ -22,26 +22,26 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of as_map.

              - + Synopsis
              template <typename Sequence>
               struct as_map;
               
              - + Parameters
              @@ -86,7 +86,7 @@
              - + Expression Semantics
              @@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

              - + Header
              #include <boost/fusion/container/map/convert.hpp>
               #include <boost/fusion/include/as_map.hpp>
               
              - + Example
              result_of::as_map<vector<
              diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
              index ef914029..1bfa7cbc 100644
              --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
              +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
              @@ -22,26 +22,26 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of as_set.

              - + Synopsis
              template <typename Sequence>
               struct as_set;
               
              - + Parameters
              @@ -86,7 +86,7 @@
              - + Expression Semantics
              @@ -105,14 +105,14 @@ key types.

              - + Header
              #include <boost/fusion/container/set/convert.hpp>
               #include <boost/fusion/include/as_set.hpp>
               
              - + Example
              result_of::as_set<vector<char, int> >::type
              diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
              index 80ed6e5d..f8fc2a09 100644
              --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
              +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
              @@ -22,26 +22,26 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of as_vector.

              - + Synopsis
              template <typename Sequence>
               struct as_vector;
               
              - + Parameters
              @@ -86,7 +86,7 @@
              - + Expression Semantics
              @@ -101,14 +101,14 @@ Sequence, to a vector.

              - + Header
              #include <boost/fusion/container/vector/convert.hpp>
               #include <boost/fusion/include/as_vector.hpp>
               
              - + Example
              result_of::as_vector<list<char, int> >::type
              diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
              index e744c47d..f1d6aeee 100644
              --- a/doc/html/fusion/container/generation.html
              +++ b/doc/html/fusion/container/generation.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -34,7 +34,7 @@ These are the functions that you can use to generate various forms of Container from elemental values.

              - + Header
              #include <boost/fusion/container/generation.hpp>
              diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html
              index 2c1861cc..2ae8be84 100644
              --- a/doc/html/fusion/container/generation/functions.html
              +++ b/doc/html/fusion/container/generation/functions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index fee927fe..7f3d7340 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Constructs a tie using a list sequence.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -52,7 +52,7 @@
               
              #define FUSION_MAX_LIST_SIZE 20
               
              - + Parameters
              @@ -99,7 +99,7 @@
              - + Expression Semantics
              @@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

              - + Header
              #include <boost/fusion/container/generation/list_tie.hpp>
               #include <boost/fusion/include/list_tie.hpp>
               
              - + Example
              int i = 123;
              diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
              index e7bd87b0..af5277d5 100644
              --- a/doc/html/fusion/container/generation/functions/make_cons.html
              +++ b/doc/html/fusion/container/generation/functions/make_cons.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ and optional cdr (tail).

              - + Synopsis
              template <typename Car>
              @@ -48,7 +48,7 @@
               make_cons(Car const& car, Cdr const& cdr);
               
              - + Parameters
              @@ -112,7 +112,7 @@
              - + Expression Semantics
              @@ -127,20 +127,20 @@ (tail).

              - + Header
              #include <boost/fusion/container/generation/make_cons.hpp>
               #include <boost/fusion/include/make_cons.hpp>
               
              - + Example
              make_cons('x', make_cons(123))
               
              - + See also
              diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 8f429518..fd5bc1c4 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ from one or more values.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -53,7 +53,7 @@
               
              #define FUSION_MAX_LIST_SIZE 20
               
              - + Parameters
              @@ -100,7 +100,7 @@
              - + Expression Semantics
              @@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

              - + Header
              #include <boost/fusion/container/generation/make_list.hpp>
               #include <boost/fusion/include/make_list.hpp>
               
              - + Example
              make_list(123, "hello", 12.5)
               
              - + See also
              diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index b850a1bc..70549940 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ from one or more key/data pairs.

              - + Synopsis
              template <
              @@ -55,7 +55,7 @@
               
              #define FUSION_MAX_MAP_SIZE 20
               
              - + Parameters
              @@ -123,7 +123,7 @@
              - + Expression Semantics
              @@ -143,20 +143,20 @@ key types.

              - + Header
              #include <boost/fusion/container/generation/make_map.hpp>
               #include <boost/fusion/include/make_map.hpp>
               
              - + Example
              make_map<int, double>('X', "Men")
               
              - + See also
              diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 84f5b244..35e8e6fc 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ from one or more values.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -53,7 +53,7 @@
               
              #define FUSION_MAX_SET_SIZE 20
               
              - + Parameters
              @@ -100,7 +100,7 @@
              - + Expression Semantics
              @@ -117,20 +117,20 @@ key types.

              - + Header
              #include <boost/fusion/container/generation/make_set.hpp>
               #include <boost/fusion/include/make_set.hpp>
               
              - + Example
              make_set(123, "hello", 12.5)
               
              - + See also
              diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index 67ce0c5a..f53690d8 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ from one or more values.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -53,7 +53,7 @@
               
              #define FUSION_MAX_VECTOR_SIZE 20
               
              - + Parameters
              @@ -100,7 +100,7 @@
              - + Expression Semantics
              @@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

              - + Header
              #include <boost/fusion/container/generation/make_vector.hpp>
               #include <boost/fusion/include/make_vector.hpp>
               
              - + Example
              make_vector(123, "hello", 12.5)
               
              - + See also
              diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 5d790309..65872a2d 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Constructs a tie using a map sequence.

              - + Synopsis
              template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
              @@ -52,7 +52,7 @@
               
              #define FUSION_MAX_MAP_SIZE 20
               
              - + Parameters
              @@ -121,7 +121,7 @@
              - + Expression Semantics
              @@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

              - + Header
              #include <boost/fusion/container/generation/map_tie.hpp>
               #include <boost/fusion/include/map_tie.hpp>
               
              - + Example
              struct int_key;
              diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
              index 474ebeef..724b062e 100644
              --- a/doc/html/fusion/container/generation/functions/tiers.html
              +++ b/doc/html/fusion/container/generation/functions/tiers.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -33,9 +33,15 @@ flavors.

              Example: @@ -48,9 +54,7 @@ The vector_tie function creates a vector of type vector<int&, char&, double&>. The same result could be achieved - with the call make_vector(ref(i), ref(c), ref(a)) - [9] - . + with the call make_vector(ref(i), ref(c), ref(a)) [9].

              A tie can be used to 'unpack' another tuple into @@ -66,7 +70,7 @@ when calling functions which return sequences.

              - + Ignore

              @@ -80,10 +84,10 @@



              -

              [9] - see Boost.Ref - for details about ref -

              +

              [9] + see Boost.Ref + for details about ref +

              diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index de0afd4d..b259e980 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Constructs a tie using a vector sequence.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -52,7 +52,7 @@
               
              #define FUSION_MAX_VECTOR_SIZE 20
               
              - + Parameters
              @@ -99,7 +99,7 @@
              - + Expression Semantics
              @@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

              - + Header
              #include <boost/fusion/container/generation/vector_tie.hpp>
               #include <boost/fusion/include/vector_tie.hpp>
               
              - + Example
              int i = 123;
              diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html
              index c132393e..2746b1d4 100644
              --- a/doc/html/fusion/container/generation/metafunctions.html
              +++ b/doc/html/fusion/container/generation/metafunctions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index afa3a30c..bb0e823d 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of list_tie.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -51,7 +51,7 @@
               
              #define FUSION_MAX_LIST_SIZE 20
               
              - + Parameters
              @@ -98,7 +98,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

              - + Header
              #include <boost/fusion/container/generation/list_tie.hpp>
               #include <boost/fusion/include/list_tie.hpp>
               
              - + Example
              result_of::list_tie<int, double>::type
              diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
              index e9f56164..a6e61882 100644
              --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
              +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
              @@ -22,26 +22,26 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_cons.

              - + Synopsis
              template <typename Car, typename Cdr = nil>
               struct make_cons;
               
              - + Parameters
              @@ -105,7 +105,7 @@
              - + Expression Semantics
              @@ -122,14 +122,14 @@ (tail).

              - + Header
              #include <boost/fusion/container/generation/make_cons.hpp>
               #include <boost/fusion/include/make_cons.hpp>
               
              - + Example
              result_of::make_cons<char, result_of::make_cons<int>::type>::type
              diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
              index 6ce29e99..bb967fb4 100644
              --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
              +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_list.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -51,7 +51,7 @@
               
              #define FUSION_MAX_LIST_SIZE 20
               
              - + Parameters
              @@ -98,7 +98,7 @@
              - + Expression Semantics
              @@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

              - + Header
              #include <boost/fusion/container/generation/make_list.hpp>
               #include <boost/fusion/include/make_list.hpp>
               
              - + Example
              result_of::make_list<int, const char(&)[7], double>::type
              diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
              index 5c541b01..773ad3c2 100644
              --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
              +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_map.

              - + Synopsis
              template <
              @@ -53,7 +53,7 @@
               
              #define FUSION_MAX_MAP_SIZE 20
               
              - + Parameters
              @@ -121,7 +121,7 @@
              - + Expression Semantics
              @@ -140,20 +140,20 @@ key types.

              - + Header
              #include <boost/fusion/container/generation/make_map.hpp>
               #include <boost/fusion/include/make_map.hpp>
               
              - + Example
              result_of::make_map<int, double, char, double>::type
               
              - + See also
              diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 7f13a781..848e6858 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_set.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -51,7 +51,7 @@
               
              #define FUSION_MAX_SET_SIZE 20
               
              - + Parameters
              @@ -98,7 +98,7 @@
              - + Expression Semantics
              @@ -117,14 +117,14 @@ key types.

              - + Header
              #include <boost/fusion/container/generation/make_set.hpp>
               #include <boost/fusion/include/make_set.hpp>
               
              - + Example
              result_of::make_set<int, char, double>::type
              diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
              index 566422ff..c17ae4be 100644
              --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
              +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_vector.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -51,7 +51,7 @@
               
              #define FUSION_MAX_VECTOR_SIZE 20
               
              - + Parameters
              @@ -98,7 +98,7 @@
              - + Expression Semantics
              @@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

              - + Header
              #include <boost/fusion/container/generation/make_list.hpp>
               #include <boost/fusion/include/make_list.hpp>
               
              - + Example
              result_of::make_vector<int, const char(&)[7], double>::type
              diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
              index b6d7bef6..72675c76 100644
              --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
              +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of map_tie.

              - + Synopsis
              template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
              @@ -51,7 +51,7 @@
               
              #define FUSION_MAX_MAP_SIZE 20
               
              - + Parameters
              @@ -119,7 +119,7 @@
              - + Expression Semantics
              @@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

              - + Header
              #include <boost/fusion/container/generation/map_tie.hpp>
               #include <boost/fusion/include/map_tie.hpp>
               
              - + Example
              struct int_key;
              diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
              index 947f2949..b39ebce2 100644
              --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
              +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of vector_tie.

              - + Synopsis
              template <typename T0, typename T1,... typename TN>
              @@ -51,7 +51,7 @@
               
              #define FUSION_MAX_VECTOR_SIZE 20
               
              - + Parameters
              @@ -98,7 +98,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

              - + Header
              #include <boost/fusion/container/generation/vector_tie.hpp>
               #include <boost/fusion/include/vector_tie.hpp>
               
              - + Example
              result_of::vector_tie<int, double>::type
              diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
              index c6d8b05c..e9e6d381 100644
              --- a/doc/html/fusion/container/list.html
              +++ b/doc/html/fusion/container/list.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

              - + Header
              #include <boost/fusion/container/list.hpp>
              @@ -47,7 +47,7 @@
               #include <boost/fusion/include/list_fwd.hpp>
               
              - + Synopsis
              template <
              @@ -75,7 +75,7 @@
               
              #define FUSION_MAX_LIST_SIZE 20
               
              - + Template parameters
              @@ -120,11 +120,13 @@
              - + Model of
              - -
              + +

              Notation

              L
              @@ -152,7 +154,7 @@
              - + Expression Semantics

              @@ -259,7 +261,7 @@

              - + Example
              list<int, float> l(12, 5.5f);
              diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
              index 40a4ccf8..ab4fea6a 100644
              --- a/doc/html/fusion/container/map.html
              +++ b/doc/html/fusion/container/map.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +

              map

              - + Description

              @@ -40,16 +40,16 @@ (see Overloaded Functions).

              - + Header
              #include <boost/fusion/container/map.hpp>
               #include <boost/fusion/include/map.hpp>
              -#include <boost/fusion/container/map_fwd.hpp>
              +#include <boost/fusion/container/map/map_fwd.hpp>
               #include <boost/fusion/include/map_fwd.hpp>
               
              - + Synopsis
              template <
              @@ -77,7 +77,7 @@
               
              #define FUSION_MAX_MAP_SIZE 20
               
              - + Template parameters
              @@ -122,15 +122,19 @@
              - + Model of
              -
              +

              Notation

              M
              @@ -153,7 +157,7 @@
              - + Expression Semantics

              @@ -237,7 +241,7 @@

              - + Example
              typedef map<
              diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
              index 1b09487f..beb53c22 100644
              --- a/doc/html/fusion/container/set.html
              +++ b/doc/html/fusion/container/set.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +

              set

              - + Description

              @@ -39,16 +39,16 @@ Functions).

              - + Header
              #include <boost/fusion/container/set.hpp>
               #include <boost/fusion/include/set.hpp>
              -#include <boost/fusion/container/set_fwd.hpp>
              +#include <boost/fusion/container/set/set_fwd.hpp>
               #include <boost/fusion/include/set_fwd.hpp>
               
              - + Synopsis
              template <
              @@ -76,7 +76,7 @@
               
              #define FUSION_MAX_SET_SIZE 20
               
              - + Template parameters
              @@ -121,15 +121,19 @@
              - + Model of
              -
              +

              Notation

              S
              @@ -152,7 +156,7 @@
              - + Expression Semantics

              @@ -236,7 +240,7 @@

              - + Example
              typedef set<int, float> S;
              diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
              index df18a6fc..d4ff258e 100644
              --- a/doc/html/fusion/container/vector.html
              +++ b/doc/html/fusion/container/vector.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -39,7 +39,7 @@ efficient.

              - + Header
              #include <boost/fusion/container/vector.hpp>
              @@ -60,7 +60,7 @@
               #include <boost/fusion/include/vector50.hpp>
               
              - + Synopsis

              @@ -115,7 +115,7 @@

              #define FUSION_MAX_VECTOR_SIZE 20
               
              - + Template parameters
              @@ -160,12 +160,14 @@
              - + Model of
              - -
              + +

              Notation

              v
              @@ -188,7 +190,7 @@
              - + Expression Semantics

              @@ -271,7 +273,7 @@

              - + Example
              vector<int, float> v(12, 5.5f);
              diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
              index fb3b4cbf..b769a978 100644
              --- a/doc/html/fusion/extension.html
              +++ b/doc/html/fusion/extension.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index c4fdf23c..a4e20021 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -37,19 +37,20 @@

              1. - Enable the tag dispatching - mechanism used by Fusion for your sequence type -
              2. + Enable the tag + dispatching mechanism used by Fusion for your sequence + type +
              3. - Design an iterator type for the sequence -
              4. + Design an iterator type for the sequence +
              5. - Provide specialized behaviour for the intrinsic operations of the new Fusion - sequence -
              6. + Provide specialized behaviour for the intrinsic operations of the new + Fusion sequence +
              - + Our example

              @@ -79,7 +80,7 @@ Start guide.

              - + Enabling Tag Dispatching
              @@ -120,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
              - + Designing a suitable iterator
              @@ -154,23 +155,23 @@

              1. - The iterator is parameterized by the type it is iterating over, and the - index of the current element. -
              2. + The iterator is parameterized by the type it is iterating over, and the + index of the current element. +
              3. - The typedefs struct_type - and index provide convenient - access to information we will need later in the implementation. -
              4. + The typedefs struct_type + and index provide convenient + access to information we will need later in the implementation. +
              5. - The typedef category allows - the traits::category_of - metafunction to establish the traversal category of the iterator. -
              6. + The typedef category + allows the traits::category_of + metafunction to establish the traversal category of the iterator. +
              7. - The constructor stores a reference to the example_struct - being iterated over. -
              8. + The constructor stores a reference to the example_struct + being iterated over. +

              We also need to enable tag @@ -182,7 +183,7 @@ clearer as we add features to our implementation.

              - + A first couple of instructive features
              @@ -308,7 +309,7 @@ sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence is const.

              -
              +
              @@ -322,7 +323,7 @@

              [Note] Note
              - + Implementing the remaining iterator functionality
              @@ -373,7 +374,7 @@ are provided in the example code.

              - + Implementing the intrinsic functions of the sequence
              @@ -429,7 +430,7 @@ value_at_impl and at_impl.

              - + Enabling our type as an associative sequence
              @@ -493,7 +494,7 @@ are provided in the example code.

              - + Summary

              diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 9962539b..639d9b13 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -22,12 +22,12 @@

              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,14 +36,14 @@ iterator.

              - + Synopsis
              template<typename Derived, typename TravesalTag>
               struct iterator_facade;
               
              - + Usage

              @@ -57,7 +57,7 @@ type.

              -

              Table 1.97. Parameters

              +

              Table 1.103. Parameters

              @@ -106,7 +106,7 @@

              -

              Table 1.98. Key Expressions

              +

              Table 1.104. Key Expressions

              @@ -439,14 +439,14 @@

              - + Header
              #include <boost/fusion/iterator/iterator_facade.hpp>
               #include <boost/fusion/include/iterator_facade.hpp>
               
              - + Example

              diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index a2f7e666..ba420937 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -22,12 +22,12 @@

              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,14 +36,14 @@ iterator.

              - + Synopsis
              template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
               struct sequence_facade;
               
              - + Usage

              @@ -59,7 +59,7 @@ type.

              -

              Table 1.95. Parameters

              +

              Table 1.101. Parameters

              @@ -107,7 +107,7 @@

              -

              Table 1.96. Key Expressions

              +

              Table 1.102. Key Expressions

              @@ -244,14 +244,14 @@

              - + Include
              #include <boost/fusion/sequence/sequence_facade.hpp>
               #include <boost/fusion/include/sequence_facade.hpp>
               
              - + Example

              diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 881c40b7..818e8151 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -22,7 +22,7 @@

              PrevUpHomeNext
              -
              +
              @@ -63,13 +63,13 @@ through a function object interface.

              - + Header

              #include <boost/fusion/functional.hpp>
               

              - + Fused and unfused forms

              @@ -103,7 +103,7 @@ form of f'.

              - + Calling functions and function objects

              @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

              - + Making Fusion code callable through a function object interface

              diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index e62dfd4b..a299c6d0 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 343fefaf..b5b4b2d0 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -54,20 +54,20 @@ and boost::shared_ptr).

              - + Header
              #include <boost/fusion/functional/adapter/fused.hpp>
               
              - + Synopsis
              template <typename Function>
               class fused;
               
              - + Template parameters
              @@ -113,16 +113,20 @@
              - + Model of
              -
              +

              Notation

              R
              @@ -146,7 +150,7 @@
              - + Expression Semantics
              @@ -211,22 +215,32 @@
              - + Example
              fused< std::plus<long> > f;
               assert(f(make_vector(1,2l)) == 3l);
               
              - + See also
              diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index a9368476..079dcced 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

              - + Header
              #include <boost/fusion/functional/adapter/fused_function_object.hpp>
               
              - + Synopsis
              template <class Function>
               class fused_function_object;
               
              - + Template parameters
              @@ -103,17 +103,21 @@
              - + Model of
              -
              +

              Notation

              R
              @@ -137,7 +141,7 @@
              - + Expression Semantics
              @@ -202,7 +206,7 @@
              - + Example
              template<class SeqOfSeqs, class Func>
              @@ -239,16 +243,26 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index e516c166..f47958a2 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -62,20 +62,20 @@ case is not implemented).

              - + Header
              #include <boost/fusion/functional/adapter/fused_procedure.hpp>
               
              - + Synopsis
              template <typename Function>
               class fused_procedure;
               
              - + Template parameters
              @@ -121,17 +121,21 @@
              - + Model of
              -
              +

              Notation

              R
              @@ -155,7 +159,7 @@
              - + Expression Semantics
              @@ -220,7 +224,7 @@
              - + Example
              template<class SequenceOfSequences, class Func>
              @@ -240,15 +244,23 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index 9831ebab..3d7b36d6 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -22,18 +22,18 @@
              PrevUpHomeNext
              -
              +
              - + Header
              #include <boost/fusion/functional/adapter/limits.hpp>
               
              - + Macros

              @@ -43,11 +43,11 @@

              • - BOOST_FUSION_UNFUSED_MAX_ARITY -
              • + BOOST_FUSION_UNFUSED_MAX_ARITY +
              • - BOOST_FUSION_UNFUSED_TYPE_MAX_ARITY -
              • + BOOST_FUSION_UNFUSED_TYPE_MAX_ARITY +
              diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index 5f03f026..5a9e757c 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

              - + Header
              #include <boost/fusion/functional/adapter/unfused.hpp>
               
              - + Synopsis
              template <class Function, bool AllowNullary = true>
               class unfused;
               
              - + Template parameters
              @@ -135,16 +135,20 @@
              - + Model of
              -
              +

              Notation

              F
              @@ -172,7 +176,7 @@
              - + Expression Semantics
              @@ -237,7 +241,7 @@
              - + Example
              struct fused_incrementer
              @@ -264,12 +268,16 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index ca408c4a..af4b3961 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -66,20 +66,20 @@

              - + Header
              #include <boost/fusion/functional/adapter/unfused_typed.hpp>
               
              - + Synopsis
              template <class Function, class Sequence>
               class unfused_typed;
               
              - + Template parameters
              @@ -143,17 +143,21 @@
              - + Model of
              -
              +

              Notation

              F
              @@ -186,7 +190,7 @@
              - + Expression Semantics
              @@ -253,7 +257,7 @@
              - + Example
              struct add_assign // applies operator+=
              @@ -321,13 +325,19 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index c1eeed42..1f787792 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 87db5c48..01b7eaeb 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,22 +36,22 @@ of a function call operator.

              - + Models
              • - function pointer types -
              • + function pointer types +
              • - member (function or data) pointer types -
              • + member (function or data) pointer types +
              • - all kinds of function objects -
              • + all kinds of function objects +
              - + Examples
              & a_free_function
              diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
              index 93e05750..a801f71b 100644
              --- a/doc/html/fusion/functional/concepts/def_callable.html
              +++ b/doc/html/fusion/functional/concepts/def_callable.html
              @@ -22,13 +22,13 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,11 +37,13 @@ to determine the result of a call.

              - + Refinement of
              - + -
              +

              Notation

              F
              @@ -77,7 +79,7 @@
              - + Expression requirements
              @@ -115,20 +117,20 @@
              - + Models
              - + Examples
              & a_free_function
              diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
              index c6e7f372..40a69934 100644
              --- a/doc/html/fusion/functional/concepts/poly.html
              +++ b/doc/html/fusion/functional/concepts/poly.html
              @@ -22,13 +22,13 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,17 +36,21 @@ Callable Object type.

              - + Refinement of
              -
              +

              Notation

              F
              @@ -75,7 +79,7 @@
              - + Expression requirements
              @@ -124,22 +128,22 @@
              - + Models
              • - function pointers -
              • + function pointers +
              • - function objects of the Standard Library -
              • + function objects of the Standard Library +
              • - all Fusion functional adapters -
              • + all Fusion functional adapters +
              - + Examples
              & a_free_function
              diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
              index 2a805548..6ebcf9f6 100644
              --- a/doc/html/fusion/functional/concepts/reg_callable.html
              +++ b/doc/html/fusion/functional/concepts/reg_callable.html
              @@ -22,13 +22,13 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,12 +37,14 @@ can appear immediately to the left of a function call operator.

              - + Refinement of
              - -
              + +

              Notation

              F
              @@ -65,7 +67,7 @@
              - + Expression requirements
              @@ -112,19 +114,19 @@
              - + Models
              • - function pointer types -
              • + function pointer types +
              • - all kinds of function objects -
              • + all kinds of function objects +
              - + Examples
              & a_free_function
              diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html
              index 563f1d06..7eb36bd1 100644
              --- a/doc/html/fusion/functional/generation.html
              +++ b/doc/html/fusion/functional/generation.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 4ca2dcd2..343044c8 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index da8e441d..6a849754 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ conversion is applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -45,7 +45,7 @@
               make_fused(F const & f);
               
              - + Parameters
              @@ -91,7 +91,7 @@
              - + Expression Semantics
              @@ -104,14 +104,14 @@ Semantics: Returns a fused adapter for f.

              - + Header
              #include <boost/fusion/functional/generation/make_fused.hpp>
               #include <boost/fusion/include/make_fused.hpp>
               
              - + Example
              float sub(float a, float b) { return a - b; }
              @@ -126,14 +126,20 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html index ac8fe2ee..dedcbf46 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ conversion is applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -46,7 +46,7 @@
               make_fused_function_object(F const & f);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -106,14 +106,14 @@ for f.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
               #include <boost/fusion/include/make_fused_function_object.hpp>
               
              - + Example
              struct sub
              @@ -141,14 +141,20 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html index 5afa51b0..9a63ec60 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ conversion applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -46,7 +46,7 @@
               make_fused_procedure(F const & f);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -106,14 +106,14 @@ f.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
               #include <boost/fusion/include/make_fused_procedure.hpp>
               
              - + Example
              vector<int,int,int> v(1,2,3);
              @@ -122,14 +122,20 @@
               assert(front(v) == 0);
               
              - + See also
              diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index 428884a4..236dd164 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ conversion is applied to the target function.

              - + Synopsis
              template <typename F>
              @@ -46,7 +46,7 @@
               make_unfused(F const & f);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -105,14 +105,14 @@ Semantics: Returns a unfused adapter for f.

              - + Header
              #include <boost/fusion/functional/generation/make_unfused.hpp>
               #include <boost/fusion/include/make_unfused.hpp>
               
              - + Example
              struct fused_incrementer
              @@ -138,14 +138,20 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 63bd4e52..89e62b8a 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index 48b7c0cc..91461d55 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -22,27 +22,27 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_fused.

              - + Header
              #include <boost/fusion/functional/generation/make_fused.hpp>
               #include <boost/fusion/include/make_fused.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,11 +55,13 @@
               }
               
              - + See also
              - +
              diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html index 1c7bc1aa..6f246a41 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -22,27 +22,27 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_fused_function_object.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
               #include <boost/fusion/include/make_fused_function_object.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,11 +55,13 @@
               }
               
              - + See also
              - +
              diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html index 5f596268..fa197e53 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -22,27 +22,27 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_fused_procedure.

              - + Header
              #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
               #include <boost/fusion/include/make_fused_procedure.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,11 +55,13 @@
               }
               
              - + See also
              - +
              diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index f404fa0b..5fb2a50a 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -22,27 +22,27 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of make_unfused.

              - + Header
              #include <boost/fusion/functional/generation/make_unfused.hpp>
               #include <boost/fusion/include/make_unfused.hpp>
               
              - + Synopsis
              namespace result_of
              @@ -55,11 +55,13 @@
               }
               
              - + See also
              - +
              diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 02dae5c3..a298c656 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index 8868e636..70a1116f 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 147ca1b4..c318a3a9 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

              - + Synopsis
              template<
              @@ -67,7 +67,7 @@
               invoke(Function f, Sequence const & s);
               
              - + Parameters
              @@ -133,7 +133,7 @@
              - + Expression Semantics
              @@ -149,29 +149,39 @@ as arguments and returns the result of the call expression.

              - + Header
              #include <boost/fusion/functional/invocation/invoke.hpp>
               
              - + Example
              std::plus<int> add;
               assert(invoke(add,make_vector(1,1)) == 2);
               
              - + See also
              diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index f6c749b8..2a91e6e4 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -43,7 +43,7 @@ Constructors can be called applying Boost.Functional/Factory.

              - + Synopsis
              template<
              @@ -61,7 +61,7 @@
               invoke_function_object(Function f, Sequence const & s);
               
              - + Parameters
              @@ -127,7 +127,7 @@
              - + Expression Semantics
              @@ -143,13 +143,13 @@ as arguments and returns the result of the call expression.

              - + Header
              #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
               
              - + Example
              struct sub
              @@ -175,16 +175,26 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/invocation/functions/invoke_proc.html b/doc/html/fusion/functional/invocation/functions/invoke_proc.html index 0230f3ce..53683ee3 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -52,7 +52,7 @@ isn't implemented).

              - + Synopsis
              template<
              @@ -70,7 +70,7 @@
               invoke_procedure(Function f, Sequence const & s);
               
              - + Parameters
              @@ -136,7 +136,7 @@
              - + Expression Semantics
              @@ -151,13 +151,13 @@ as arguments.

              - + Header
              #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
               
              - + Example
              vector<int,int> v(1,2);
              @@ -166,16 +166,26 @@
               assert(front(v) == 3);
               
              - + See also
              diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 08dbe5be..f3401de4 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -22,18 +22,18 @@
              PrevUpHomeNext
              -
              +
              - + Header
              #include <boost/fusion/functional/invocation/limits.hpp>
               
              - + Macros

              @@ -42,14 +42,14 @@

              • - BOOST_FUSION_INVOKE_MAX_ARITY -
              • + BOOST_FUSION_INVOKE_MAX_ARITY +
              • - BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY -
              • + BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY +
              • - BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY -
              • + BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY +
              diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 2467e1b6..a52dcf91 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 94db530f..97b35100 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of invoke.

              - + Synopsis
              namespace result_of
              @@ -50,13 +50,17 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html index 0ac08c06..ed6346ad 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -22,20 +22,20 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html index 7e954db2..f647ecde 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -22,20 +22,20 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of invoke_procedure.

              - + Synopsis
              namespace result_of
              @@ -51,13 +51,17 @@
               }
               
              - + See also
              diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 6b680eb1..33ba14ec 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -116,10 +116,8 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types - [1] - . In MPL, Fusion - sequences follow MPL's + wish to work solely on types [1]. In MPL, + Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from an MPL sequence @@ -132,12 +130,12 @@



              -

              [1] - Choose MPL - over fusion when doing pure type calculations. Once the static type calculation - is finished, you can instantiate a fusion sequence (see Conversion) - for the runtime part. -

              +

              [1] + Choose MPL + over fusion when doing pure type calculations. Once the static type calculation + is finished, you can instantiate a fusion sequence (see Conversion) + for the runtime part. +

              diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 4d26d92b..5001eea9 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -81,7 +81,7 @@ Sequence.

              - + Header

              #include <boost/fusion/iterator.hpp>
              diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html
              index b4b03309..a035be85 100644
              --- a/doc/html/fusion/iterator/concepts.html
              +++ b/doc/html/fusion/iterator/concepts.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html index 33252858..37456418 100644 --- a/doc/html/fusion/iterator/concepts/associative_iterator.html +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ of the element of an associative forward, bidirectional or random access sequence.

              -
              +

              Notation

              i
              @@ -50,7 +50,7 @@
              - + Refinement of
              @@ -61,7 +61,7 @@ Access Iterator

              - + Expression requirements
              @@ -113,7 +113,7 @@
              - + Meta Expressions
              @@ -174,41 +174,41 @@
              - + Models
              diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 9bac55c3..7bdc76a3 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -22,20 +22,20 @@
              PrevUpHomeNext
              -
              +
              - + Description

              A Bidirectional Iterator traverses a Sequence allowing movement in either direction one element at a time.

              -
              +

              Notation

              i
              @@ -58,7 +58,7 @@
              - + Refinement of
              @@ -66,7 +66,7 @@ Forward Iterator

              - + Expression requirements
              @@ -173,7 +173,7 @@
              - + Meta Expressions
              @@ -208,7 +208,7 @@
              - + Expression Semantics
              @@ -248,7 +248,7 @@
              - + Invariants

              @@ -256,41 +256,48 @@ Iterator, the following invariants always hold:

              - + Models
              diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 2af24fa5..1046585f 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ allowing movement in only one direction through it's elements, one element at a time.

              -
              +

              Notation

              i, j
              @@ -59,7 +59,7 @@
              - + Expression requirements
              @@ -237,7 +237,7 @@
              - + Meta Expressions
              @@ -348,7 +348,7 @@
              - + Expression Semantics
              @@ -474,86 +474,93 @@
              - + Invariants

              The following invariants always hold:

                -
              • !(i - == j) == (i != j)
              • -
              • next(i) == advance_c<1>(i)
              • -
              • distance(i, advance_c<N>(i)) == N
              • - Using next to traverse the - sequence will never return to a previously seen position -
              • + !(i + == j) == (i != j) +
              • -deref(i) is equivalent to *i -
              • + next(i) == advance_c<1>(i) +
              • - If i == - j then *i is equivalent to *j -
              • + distance(i, advance_c<N>(i)) == N + +
              • + Using next to traverse the + sequence will never return to a previously seen position +
              • +
              • + deref(i) + is equivalent to *i +
              • +
              • + If i == + j then *i is equivalent to *j +
              - + Models
              diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index afca75db..65e76dfc 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ moving in either direction, permitting efficient arbitrary distance movements back and forward through the sequence.

              -
              +

              Notation

              i, j
              @@ -59,7 +59,7 @@
              - + Refinement of
              @@ -68,7 +68,7 @@ Iterator

              - + Expression requirements
              @@ -175,7 +175,7 @@
              - + Meta Expressions
              @@ -238,37 +238,37 @@
              - + Models
              diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 24ee01cd..931cb0ee 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index 89cb2f7b..5066415d 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Moves an iterator by a specified distance.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::advance<I, M>::type advance(I const& i);
               
              -

              Table 1.6. Parameters

              +

              Table 1.6. Parameters

              @@ -109,7 +109,7 @@

              - + Expression Semantics
              @@ -128,14 +128,14 @@ may be negative.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
              index b1ab20d6..ee54f294 100644
              --- a/doc/html/fusion/iterator/functions/advance_c.html
              +++ b/doc/html/fusion/iterator/functions/advance_c.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Moves an iterator by a specified distance.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::advance_c<I, N>::type advance_c(I const& i);
               
              -

              Table 1.7. Parameters

              +

              Table 1.7. Parameters

              @@ -108,7 +108,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ may be negative.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
              index 8d08053e..66a124c7 100644
              --- a/doc/html/fusion/iterator/functions/deref.html
              +++ b/doc/html/fusion/iterator/functions/deref.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Deferences an iterator.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::deref<I>::type deref(I const& i);
               
              -

              Table 1.2. Parameters

              +

              Table 1.2. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -102,14 +102,14 @@ i.

              - + Header
              #include <boost/fusion/iterator/deref.hpp>
               #include <boost/fusion/include/deref.hpp>
               
              - + Example
              typedef vector<int,int&> vec;
              diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
              index e01163fa..ebefed36 100644
              --- a/doc/html/fusion/iterator/functions/deref_data.html
              +++ b/doc/html/fusion/iterator/functions/deref_data.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ an associative iterator.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::deref_data<I>::type deref(I const& i);
               
              -

              Table 1.8. Parameters

              +

              Table 1.8. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

              - + Header
              #include <boost/fusion/iterator/deref_data.hpp>
               #include <boost/fusion/include/deref_data.hpp>
               
              - + Example
              typedef map<pair<float,int&> > map;
              diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
              index c4b65d06..0ba1e9f6 100644
              --- a/doc/html/fusion/iterator/functions/distance.html
              +++ b/doc/html/fusion/iterator/functions/distance.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the distance between 2 iterators.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::distance<I, J>::type distance(I const& i, J const& j);
               
              -

              Table 1.5. Parameters

              +

              Table 1.5. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ iterators i and j.

              - + Header
              #include <boost/fusion/iterator/distance.hpp>
               #include <boost/fusion/include/distance.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
              index 6a7246a8..5c9a726b 100644
              --- a/doc/html/fusion/iterator/functions/next.html
              +++ b/doc/html/fusion/iterator/functions/next.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Moves an iterator 1 position forwards.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::next<I>::type next(I const& i);
               
              -

              Table 1.3. Parameters

              +

              Table 1.3. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ next element after i.

              - + Header
              #include <boost/fusion/iterator/next.hpp>
               #include <boost/fusion/include/next.hpp>
               
              - + Example
              typedef vector<int,int,int> vec;
              diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
              index 7d38aa4a..72e54a82 100644
              --- a/doc/html/fusion/iterator/functions/prior.html
              +++ b/doc/html/fusion/iterator/functions/prior.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Moves an iterator 1 position backwards.

              - + Synopsis
              template<
              @@ -43,7 +43,7 @@
               typename result_of::prior<I>::type prior(I const& i);
               
              -

              Table 1.4. Parameters

              +

              Table 1.4. Parameters

              @@ -88,7 +88,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ element prior to i.

              - + Header
              #include <boost/fusion/iterator/prior.hpp>
               #include <boost/fusion/include/prior.hpp>
               
              - + Example
              typedef vector<int,int> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html
              index 197b5498..273c6087 100644
              --- a/doc/html/fusion/iterator/metafunctions.html
              +++ b/doc/html/fusion/iterator/metafunctions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index 239511bf..f86aed41 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Moves an iterator a specified distance.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.18. Parameters

              +

              Table 1.18. Parameters

              @@ -112,7 +112,7 @@

              - + Expression Semantics
              @@ -130,14 +130,14 @@ may be negative.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,double,char> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
              index 362907ff..d6b4a24b 100644
              --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
              +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Moves an iterator by a specified distance.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.19. Parameters

              +

              Table 1.19. Parameters

              @@ -111,7 +111,7 @@

              - + Expression Semantics
              @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

              - + Header
              #include <boost/fusion/iterator/advance.hpp>
               #include <boost/fusion/include/advance.hpp>
               
              - + Example
              typedef vector<int,double,char> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
              index 0bc05592..d651a46e 100644
              --- a/doc/html/fusion/iterator/metafunctions/deref.html
              +++ b/doc/html/fusion/iterator/metafunctions/deref.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the type that will be returned by dereferencing an iterator.

              - + Synposis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.13. Parameters

              +

              Table 1.13. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -105,14 +105,14 @@ an iterator of type I.

              - + Header
              #include <boost/fusion/iterator/deref.hpp>
               #include <boost/fusion/include/deref.hpp>
               
              - + Example
              typedef vector<int,int&> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
              index eca6d101..bba1e4d9 100644
              --- a/doc/html/fusion/iterator/metafunctions/deref_data.html
              +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ referenced by an associative iterator.

              - + Synposis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.22. Parameters

              +

              Table 1.22. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

              - + Header
              #include <boosta/fusion/iterator/deref_data.hpp>
               #include <boost/fusion/include/deref_data.hpp>
               
              - + Example
              typedef map<pair<float,int> > map;
              diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
              index 8e2fa565..b796b5d8 100644
              --- a/doc/html/fusion/iterator/metafunctions/distance.html
              +++ b/doc/html/fusion/iterator/metafunctions/distance.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the distance between two iterators.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.17. Parameters

              +

              Table 1.17. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -108,14 +108,14 @@ J.

              - + Header
              #include <boost/fusion/iterator/distance.hpp>
               #include <boost/fusion/include/distance.hpp>
               
              - + Example
              typedef vector<int,double,char> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
              index 44e9e8a4..0e3dc767 100644
              --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
              +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ and J are equal.

              - + Synopsis
              template<
              @@ -49,7 +49,7 @@
               };
               
              -

              Table 1.16. Parameters

              +

              Table 1.16. Parameters

              @@ -93,7 +93,7 @@

              - + Expression Semantics
              @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

              - + Header
              #include <boost/fusion/iterator/equal_to.hpp>
               #include <boost/fusion/include/equal_to.hpp>
               
              - + Example
              typedef vector<int,double> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
              index 2536f588..80d17c3e 100644
              --- a/doc/html/fusion/iterator/metafunctions/key_of.html
              +++ b/doc/html/fusion/iterator/metafunctions/key_of.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ iterator.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.20. Parameters

              +

              Table 1.20. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

              - + Header
              #include <boost/fusion/iterator/key_of.hpp>
               #include <boost/fusion/include/key_of.hpp>
               
              - + Example
              typedef map<pair<float,int> > vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
              index aeaea9b2..f8b7089e 100644
              --- a/doc/html/fusion/iterator/metafunctions/next.html
              +++ b/doc/html/fusion/iterator/metafunctions/next.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the type of the next iterator in a sequence.

              - + Synposis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.14. Parameters

              +

              Table 1.14. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ next element in the sequence after I.

              - + Header
              #include <boost/fusion/iterator/next.hpp>
               #include <boost/fusion/include/next.hpp>
               
              - + Example
              typedef vector<int,double> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
              index 4a9587fa..708ce55b 100644
              --- a/doc/html/fusion/iterator/metafunctions/prior.html
              +++ b/doc/html/fusion/iterator/metafunctions/prior.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the type of the previous iterator in a sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.15. Parameters

              +

              Table 1.15. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -106,14 +106,14 @@ previous element in the sequence before I.

              - + Header
              #include <boost/fusion/iterator/prior.hpp>
               #include <boost/fusion/include/prior.hpp>
               
              - + Example
              typedef vector<int,double> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
              index e948f865..db7f67ca 100644
              --- a/doc/html/fusion/iterator/metafunctions/value_of.html
              +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the type stored at the position of an iterator.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.12. Parameters

              +

              Table 1.12. Parameters

              @@ -91,7 +91,7 @@

              - + Expression Semantics
              @@ -105,14 +105,14 @@ a sequence at iterator position I.

              - + Header
              #include <boost/fusion/iterator/value_of.hpp>
               #include <boost/fusion/include/value_of.hpp>
               
              - + Example
              typedef vector<int,int&,const int&> vec;
              diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
              index d86c95f7..5254457f 100644
              --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
              +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ by an associative iterator references.

              - + Synopsis
              template<
              @@ -47,7 +47,7 @@
               };
               
              -

              Table 1.21. Parameters

              +

              Table 1.21. Parameters

              @@ -92,7 +92,7 @@

              - + Expression Semantics
              @@ -107,14 +107,14 @@ I.

              - + Header
              #include <boost/fusion/iterator/value_of_data.hpp>
               #include <boost/fusion/include/value_of_data.hpp>
               
              - + Example
              typedef map<pair<float,int> > vec;
              diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html
              index 7d3c9fff..72ece20b 100644
              --- a/doc/html/fusion/iterator/operator.html
              +++ b/doc/html/fusion/iterator/operator.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index 042994bf..59668b78 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -22,20 +22,20 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Compares 2 iterators for equality.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
               unspecified operator==(I const& i, J const& i);
               
              -

              Table 1.10. Parameters

              +

              Table 1.10. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -104,7 +104,7 @@ and j respectively.

              - + Header
              #include <boost/fusion/iterator/equal_to.hpp>
              diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
              index 97929f38..5f264e59 100644
              --- a/doc/html/fusion/iterator/operator/operator_inequality.html
              +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
              @@ -22,20 +22,20 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Compares 2 iterators for inequality.

              - + Synopsis
              template<
              @@ -45,7 +45,7 @@
               unspecified operator==(I const& i, J const& i);
               
              -

              Table 1.11. Parameters

              +

              Table 1.11. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -102,7 +102,7 @@ and j respectively.

              - + Header
              #include <boost/fusion/iterator/equal_to.hpp>
              diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
              index 03cb1699..03904564 100644
              --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
              +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
              @@ -22,20 +22,20 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Dereferences an iterator.

              - + Synopsis
              template<
              @@ -44,7 +44,7 @@
               typename result_of::deref<I>::type operator*(unspecified<I> const& i);
               
              -

              Table 1.9. Parameters

              +

              Table 1.9. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

              - + Header
              #include <boost/fusion/iterator/deref.hpp>
               #include <boost/fusion/include/deref.hpp>
               
              - + Example
              typedef vector<int,int&> vec;
              diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
              index 0b4c4536..ce4a787e 100644
              --- a/doc/html/fusion/notes.html
              +++ b/doc/html/fusion/notes.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +

              - + Recursive Inlined Functions

              @@ -40,7 +40,7 @@ remains linear.

              - + Overloaded Functions

              @@ -50,7 +50,7 @@ given a key, k.

              - + Tag Dispatching

              @@ -59,14 +59,14 @@

              1. - A type for which an appropriate template specialization is required -
              2. + A type for which an appropriate template specialization is required +
              3. - A metafunction that associates the type with a tag type -
              4. + A metafunction that associates the type with a tag type +
              5. - A template that is specialized for the tag type -
              6. + A template that is specialized for the tag type +

              For example, the fusion result_of::begin metafunction @@ -86,22 +86,22 @@

              1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl - is required -
              2. + Sequence is the type for + which a suitable implementation of result_of::begin_impl + is required +
              3. -traits::tag_of is the metafunction that associates - Sequence with an appropriate - tag -
              4. + traits::tag_of is the metafunction that associates + Sequence with an appropriate + tag +
              5. -result_of::begin_impl is the template which is specialized - to provide an implementation for each tag type -
              6. + result_of::begin_impl is the template which is specialized + to provide an implementation for each tag type +

              - + Extensibility

              @@ -136,7 +136,7 @@ it very cheap to pass around.

              - + Element Conversion

              @@ -157,9 +157,7 @@ Arrays:

              - Array arguments are deduced to reference to const types. For example - [10] - : + Array arguments are deduced to reference to const types. For example [10]:

              make_list("Donald", "Daisy")
               
              @@ -187,7 +185,7 @@
              list<void (*)(int)>
               

              - + boost::ref

              @@ -227,12 +225,12 @@



              -

              [10] - Note that the type of a string literal is an array of const characters, - not const char*. To get make_list to create a list with an element of a non-const - array type one must use the ref - wrapper (see boost::ref). -

              +

              [10] + Note that the type of a string literal is an array of const characters, not + const char*. To get make_list to create a list with an element of a non-const + array type one must use the ref + wrapper (see boost::ref). +

              diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index e591e554..efc1e401 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -35,18 +35,12 @@ The library is organized in three layers:

              - + Layers

              -
              -

              -

              -

              - fusion_org -

              -

              -

              -
              +

              + fusion_org +

              The entire library is found in the "boost/fusion" directory. Modules are organized in directories. Each module has its own header @@ -66,128 +60,128 @@ against.

              - + Directory

              • - tuple -
              • + tuple +
              • - algorithm -
                  + algorithm +
                  • - iteration -
                  • + iteration +
                  • - query -
                  • + query +
                  • - transformation -
                  • + transformation +
                  - +
                • - adapted -
                    + adapted +
                    • - array -
                    • + array +
                    • - mpl -
                    • + mpl +
                    • - boost::tuple -
                    • + boost::tuple +
                    • - std_pair -
                    • + std_pair +
                    • - struct -
                    • + struct +
                    • - variant -
                    • + variant +
                    - +
                  • - view -
                      + view +
                      • - filter_view -
                      • + filter_view +
                      • - iterator_range -
                      • + iterator_range +
                      • - joint_view -
                      • + joint_view +
                      • - reverse_view -
                      • + reverse_view +
                      • - single_view -
                      • + single_view +
                      • - transform_view -
                      • + transform_view +
                      • - zip_view -
                      • + zip_view +
                      - +
                    • - container -
                        + container +
                        • - deque -
                        • + deque +
                        • - list -
                        • + list +
                        • - map -
                        • + map +
                        • - set -
                        • + set +
                        • - vector -
                        • + vector +
                        • - generation -
                        • + generation +
                        - +
                      • - mpl -
                      • + mpl +
                      • - functional -
                      • + functional +
                      • - sequence -
                          + sequence +
                          • - comparison -
                          • + comparison +
                          • - intrinsic -
                          • + intrinsic +
                          • - io -
                          • + io +
                          - +
                        • - iterator -
                        • + iterator +
                        • - support -
                        • + support +

                        - + Example

                        @@ -202,15 +196,14 @@

                        The first includes all containers The second includes only list - [4] - . + [4].



                        -

                        [4] - Modules may contain smaller components. Header file information for each - component will be provided as part of the component's documentation. -

                        +

                        [4] + Modules may contain smaller components. Header file information for each + component will be provided as part of the component's documentation. +

              diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 55e9fde4..f4e461f6 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -22,30 +22,18 @@
              PrevUpHomeNext
              -
              +
              -
              -

              -

              -

              - “Algorithms + Data Structures = Programs.” -

              -

              -

              -
              -
              -

              -

              -

              - --Niklaus Wirth -

              -

              -

              -
              +

              + “Algorithms + Data Structures = Programs.” +

              +

              + --Niklaus Wirth +

              - + Description

              @@ -63,7 +51,7 @@ of compile time metaprogramming with runtime programming.

              - + Motivation

              @@ -89,7 +77,7 @@ an instant AHA! moment.

              - + How to use this manual

              @@ -97,7 +85,7 @@ icons precede some text to indicate:

              -

              Table 1.1. Icons

              +

              Table 1.1. Icons

              @@ -200,7 +188,7 @@ Tools.

              - + Support

              diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 7c8b90b5..79b6e7a5 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -22,7 +22,7 @@

              PrevUpHomeNext
              -
              +
              @@ -34,16 +34,13 @@

              For starters, we shall include all of Fusion's Sequence(s) - [2] - : + [2]:

              #include <boost/fusion/sequence.hpp>
               #include <boost/fusion/include/sequence.hpp>
               

              - Let's begin with a vector - [3] - : + Let's begin with a vector [3]:

              vector<int, char, std::string> stuff(1, 'x', "howdy");
               int i = at_c<0>(stuff);
              @@ -59,7 +56,7 @@
                     Let's see some examples.
                   

              - + Print the vector as XML

              @@ -98,7 +95,7 @@ it calls print_xml's operator() for each element in stuff.

              -
              +
              @@ -114,7 +111,7 @@ print just about any Fusion Sequence.

              - + Print only pointers

              @@ -146,7 +143,7 @@ Easy, right?

              - + Associative tuples

              @@ -218,7 +215,7 @@ a dog or a whole alternate_universe.

              - + Tip of the Iceberg

              @@ -229,16 +226,16 @@



              -

              [2] - There are finer grained header files available if you wish to have more - control over which components to include (see section Orgainization - for details). -

              -

              [3] - Unless otherwise noted, components are in namespace boost::fusion. - For the sake of simplicity, code in this quick start implies using directives for the fusion components - we will be using. -

              +

              [2] + There are finer grained header files available if you wish to have more control + over which components to include (see section Orgainization + for details). +

              +

              [3] + Unless otherwise noted, components are in namespace boost::fusion. + For the sake of simplicity, code in this quick start implies using directives for the fusion components + we will be using. +

              [Caution] Caution
              diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index 24845fd1..dfcd803a 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -21,39 +21,39 @@
              PrevUpHome
              -
              +
              1. -New - Iterator Concepts, David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. -
              2. + New + Iterator Concepts, David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. +
              3. -The Boost - Tuple Library, Jaakko Jarvi, 2001. -
              4. + The + Boost Tuple Library, Jaakko Jarvi, 2001. +
              5. -Spirit Parser Library, - Joel de Guzman, 2001-2006. -
              6. + Spirit Parser Library, + Joel de Guzman, 2001-2006. +
              7. -The Boost MPL Library, - Aleksey Gurtovoy and David Abrahams, 2002-2004. -
              8. + The Boost MPL Library, + Aleksey Gurtovoy and David Abrahams, 2002-2004. +
              9. -Boost Array, - Nicolai Josuttis, 2002-2004. -
              10. + Boost Array, + Nicolai Josuttis, 2002-2004. +
              11. -Standard Template Library Programmer's - Guide, Hewlett-Packard Company, 1994. -
              12. + Standard Template Library Programmer's + Guide, Hewlett-Packard Company, 1994. +
              13. -Boost.Ref, Jaakko - Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. -
              14. + Boost.Ref, + Jaakko Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. +
              diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index c5c3ea39..0ac4c573 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

              - + Header

              #include <boost/fusion/sequence.hpp>
              diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
              index ed58095b..95f9f77b 100644
              --- a/doc/html/fusion/sequence/concepts.html
              +++ b/doc/html/fusion/sequence/concepts.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

              - + Traversal

              @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

              - + Associativity

              diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 274f753b..46bf3a0b 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -22,13 +22,13 @@

              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ Fusion associative sequences have no implied ordering relation. Instead, type identity is used to impose an equivalence relation on keys.

              -
              +

              Notation

              s
              @@ -64,7 +64,7 @@
              - + Valid Expressions
              @@ -173,7 +173,7 @@
              - + Result Type Expressions
              @@ -247,7 +247,7 @@

              - + Expression Semantics
              @@ -302,35 +302,39 @@
              - + Models
              diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 0c78c2ba..58333c55 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,14 +37,14 @@ Iterator.

              - + Refinement of

              Forward Sequence

              -
              +

              Notation

              s
              @@ -66,7 +66,7 @@
              - + Valid Expressions
              @@ -198,7 +198,7 @@
              - + Result Type Expressions
              @@ -259,7 +259,7 @@
              - + Expression Semantics
              @@ -299,26 +299,34 @@
              - + Models
              diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 66b3bca1..58526672 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ equality (if the container's element type is Equality Comparable) and of lexicographical ordering (if the container's element type is LessThan Comparable).

              -
              +

              Notation

              s
              @@ -60,7 +60,7 @@
              - + Valid Expressions
              @@ -235,7 +235,7 @@
              - + Result Type Expressions
              @@ -320,7 +320,7 @@
              - + Expression Semantics
              @@ -408,7 +408,7 @@
              - + Invariants

              @@ -416,42 +416,71 @@

              • -[begin(s), end(s)) is always a valid range. -
              • + [begin(s), end(s)) is always a valid range. +
              • - An Algorithm that iterates through - the range [begin(s), end(s)) will pass through every element of - s exactly once. -
              • + An Algorithm that iterates + through the range [begin(s), end(s)) will pass through every element of + s exactly once. +
              • -begin(s) - is identical to end(s)) - if and only if s is empty. -
              • + begin(s) + is identical to end(s)) + if and only if s is + empty. +
              • - Two different iterations through s - will access its elements in the same order. -
              • + Two different iterations through s + will access its elements in the same order. +
              - + Models
              diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index a6f28299..556e2879 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ sequence elements.

              - + Refinement of
              @@ -46,7 +46,7 @@ Bidirectional Sequence

              -
              +

              Notation

              s
              @@ -73,7 +73,7 @@
              - + Valid Expressions
              @@ -205,7 +205,7 @@
              - + Result Type Expressions
              @@ -291,7 +291,7 @@

              - + Expression Semantics
              @@ -331,26 +331,34 @@
              - + Models
              diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 5da91cef..3641d9c3 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -36,12 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence - [5] - . + repertoire. They need to be implemented for each Fusion Sequence[5].

              - + Header
              #include <boost/fusion/sequence/intrinsic.hpp>
              @@ -49,10 +47,10 @@
               


              -

              [5] - In practice, many of intrinsic functions have default implementations - that will work in majority of cases -

              +

              [5] + In practice, many of intrinsic functions have default implementations that + will work in majority of cases +

              diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index cb1de60c..f3586f56 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 42732f02..8e50c4e7 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              at
              - + Description

              Returns the N-th element from the beginning of the sequence.

              - + Synopsis
              template <typename N, typename Sequence>
              @@ -46,7 +46,7 @@
               at(Sequence const& seq);
               
              - + Parameters
              @@ -112,7 +112,7 @@
              - + Expression Semantics
              @@ -138,14 +138,14 @@
              deref(advance<N>(begin(s)))
               
              - + Header
              #include <boost/fusion/sequence/intrinsic/at.hpp>
               #include <boost/fusion/include/at.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
              index 3dd435ba..374a911a 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the N-th element from the beginning of the sequence.

              - + Synopsis
              template <int N, typename Sequence>
              @@ -46,7 +46,7 @@
               at_c(Sequence const& seq);
               
              - + Parameters
              @@ -111,7 +111,7 @@
              - + Expression Semantics
              @@ -138,14 +138,14 @@
              deref(advance<N>(begin(s)))
               
              - + Header
              #include <boost/fusion/sequence/intrinsic/at_c.hpp>
               #include <boost/fusion/include/at_c.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
              index 7054e840..ebf8c1b2 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the element associated with a Key from the sequence.

              - + Synopsis
              template <typename Key, typename Sequence>
              @@ -46,7 +46,7 @@
               at_key(Sequence const& seq);
               
              - + Parameters
              @@ -111,7 +111,7 @@
              - + Expression Semantics
              @@ -134,14 +134,14 @@ with Key.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at_key.hpp>
               #include <boost/fusion/include/at_key.hpp>
               
              - + Example
              set<int, char, bool> s(1, 'x', true);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
              index a6ebe1b0..2cf83fcc 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the last element in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               back(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -115,14 +115,14 @@ in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/back.hpp>
               #include <boost/fusion/include/back.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
              index 20ff510c..c38bbe2e 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns an iterator pointing to the first element in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               begin(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -103,37 +103,37 @@

              Semantics: Returns an iterator pointing to the first element in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/begin.hpp>
               #include <boost/fusion/include/begin.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
              index abd9f157..ab5e14f9 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

              - + Synopsis
              template <typename Sequence>
              @@ -44,7 +44,7 @@
               empty(Sequence const& seq);
               
              - + Parameters
              @@ -90,7 +90,7 @@
              - + Expression Semantics
              @@ -104,14 +104,14 @@ to false.

              - + Header
              #include <boost/fusion/sequence/intrinsic/empty.hpp>
               #include <boost/fusion/include/empty.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
              index 5dafb92d..560cb4e9 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              end
              - + Description

              Returns an iterator pointing to one element past the end of the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               end(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -103,37 +103,37 @@

              Semantics: Returns an iterator pointing to one element past the end of the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/end.hpp>
               #include <boost/fusion/include/end.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
              index 90625861..1a734eb5 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the first element in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -46,7 +46,7 @@
               front(Sequence const& seq);
               
              - + Parameters
              @@ -92,7 +92,7 @@
              - + Expression Semantics
              @@ -115,14 +115,14 @@ in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/front.hpp>
               #include <boost/fusion/include/front.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
              index 34a255f3..f2b9952c 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ to false.

              - + Synopsis
              template <typename Key, typename Sequence>
              @@ -45,7 +45,7 @@
               has_key(Sequence const& seq);
               
              - + Parameters
              @@ -110,7 +110,7 @@
              - + Expression Semantics
              @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

              - + Header
              #include <boost/fusion/sequence/intrinsic/has_key.hpp>
               #include <boost/fusion/include/has_key.hpp>
               
              - + Example
              set<int, char, bool> s(1, 'x', true);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
              index 8979f928..e141bc03 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

              - + Synopsis
              template <typename Sequence>
              @@ -43,7 +43,7 @@
               size(Sequence const& seq);
               
              - + Parameters
              @@ -89,7 +89,7 @@
              - + Expression Semantics
              @@ -103,14 +103,14 @@ in the sequence.

              - + Header
              #include <boost/fusion/sequence/intrinsic/size.hpp>
               #include <boost/fusion/include/size.hpp>
               
              - + Example
              vector<int, int, int> v(1, 2, 3);
              diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
              index 2ff4f6db..a69b9c33 100644
              --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
              +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
              @@ -22,26 +22,26 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Performs an element by element swap of the elements in 2 sequences.

              - + Synopsis
              template<typename Seq1, typename Seq2>
               void swap(Seq1& seq1, Seq2& seq2);
               
              - + Parameters
              @@ -87,7 +87,7 @@
              - + Expression Semantics
              @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

              - + Example
              vector<int, std::string> v1(1, "hello"), v2(2, "world");
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html
              index 35b5be17..a8dfc9f2 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index 8fe3ff24..f5060623 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -22,21 +22,19 @@
              PrevUpHomeNext
              -
              +
              at
              - + Description

              - Returns the result type of at - [6] - . + Returns the result type of at[6].

              - + Synopsis
              template<
              @@ -48,7 +46,7 @@
               };
               
              -

              Table 1.29. Parameters

              +

              Table 1.29. Parameters

              @@ -113,7 +111,7 @@

              - + Expression Semantics
              @@ -127,14 +125,14 @@ using at to access the Nth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at.hpp>
               #include <boost/fusion/include/at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              @@ -142,12 +140,12 @@
               


              -

              [6] - result_of::at reflects the actual return - type of the function at. Sequence(s) - typically return references to its elements via the at function. If you want - to get the actual element type, use result_of::value_at -

              +

              [6] + result_of::at reflects the actual return + type of the function at. Sequence(s) + typically return references to its elements via the at function. If you want to + get the actual element type, use result_of::value_at +

              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 3034384a..bbc11396 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -22,21 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              - Returns the result type of at_c - [7] - . + Returns the result type of at_c[7].

              - + Synopsis
              template<
              @@ -48,7 +46,7 @@
               };
               
              -

              Table 1.30. Parameters

              +

              Table 1.30. Parameters

              @@ -112,7 +110,7 @@

              - + Expression Semantics
              @@ -126,14 +124,14 @@ using at_c to access the Mth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at.hpp>
               #include <boost/fusion/include/at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              @@ -141,12 +139,12 @@
               


              -

              [7] - result_of::at_c reflects the actual - return type of the function at_c. Sequence(s) - typically return references to its elements via the at_c function. If you want - to get the actual element type, use result_of::value_at_c -

              +

              [7] + result_of::at_c reflects the actual return + type of the function at_c. Sequence(s) + typically return references to its elements via the at_c function. If you want + to get the actual element type, use result_of::value_at_c +

              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index b84cd4f4..7d5c9449 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -22,21 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              - Returns the result type of at_key - [8] - . + Returns the result type of at_key[8].

              - + Synopsis
              template<
              @@ -48,7 +46,7 @@
               };
               
              -

              Table 1.34. Parameters

              +

              Table 1.34. Parameters

              @@ -112,7 +110,7 @@

              - + Expression Semantics
              @@ -128,14 +126,14 @@ Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/at_key.hpp>
               #include <boost/fusion/include/at_key.hpp>
               
              - + Example
              typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
              @@ -143,12 +141,12 @@
               


              -

              [8] - result_of::at_key reflects the actual - return type of the function at_key. _sequence_s - typically return references to its elements via the at_key function. If you - want to get the actual element type, use result_of::value_at_key -

              +

              [8] + result_of::at_key reflects the actual + return type of the function at_key. _sequence_s + typically return references to its elements via the at_key function. If you want + to get the actual element type, use result_of::value_at_key +

              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index e461325b..e3fc83e4 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -22,19 +22,19 @@
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of back.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.27. Parameters

              +

              Table 1.27. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

              - + Header
              #include <boost/fusion/sequence/intrinsic/back.hpp>
               #include <boost/fusion/include/back.hpp>
               
              - + Example
              typedef vector<int,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
              index dd7d329e..1d204889 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of begin.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.23. Parameters

              +

              Table 1.23. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -100,37 +100,37 @@

              Semantics: Returns the type of an iterator to the first element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/begin.hpp>
               #include <boost/fusion/include/begin.hpp>
               
              - + Example
              typedef vector<int> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
              index 8104fb56..4d7c8c7b 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of empty.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.25. Parameters

              +

              Table 1.25. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -105,14 +105,14 @@ mpl::false_ otherwise.

              - + Header
              #include <boost/fusion/sequence/intrinsic/empty.hpp>
               #include <boost/fusion/include/empty.hpp>
               
              - + Example
              typedef vector<> empty_vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
              index 3f25a7ee..3d5388c6 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              end
              - + Description

              Returns the result type of end.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.24. Parameters

              +

              Table 1.24. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -100,37 +100,37 @@

              Semantics: Returns the type of an iterator one past the end of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/end.hpp>
               #include <boost/fusion/include/end.hpp>
               
              - + Example
              typedef vector<int> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
              index e77dcdd6..c4bb9303 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of front.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.26. Parameters

              +

              Table 1.26. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

              - + Header
              #include <boost/fusion/sequence/intrinsic/front.hpp>
               #include <boost/fusion/include/front.hpp>
               
              - + Example
              typedef vector<int,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
              index e00e5d96..b30efb45 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of has_key.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.33. Parameters

              +

              Table 1.33. Parameters

              @@ -110,7 +110,7 @@

              - + Expression Semantics
              @@ -127,14 +127,14 @@ mpl::false_ otherwise.

              - + Header
              #include <boost/fusion/sequence/intrinsic/has_key.hpp>
               #include <boost/fusion/include/has_key.hpp>
               
              - + Example
              typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
              index d18c737b..bf27573e 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the result type of size.

              - + Synopsis
              template<typename Seq>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.28. Parameters

              +

              Table 1.28. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -104,14 +104,14 @@ in Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/size.hpp>
               #include <boost/fusion/include/size.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
              index c112ac4b..8e60838f 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the return type of swap.

              - + Synopsis
              template<typename Seq1, typename Seq2>
              @@ -44,7 +44,7 @@
               };
               
              -

              Table 1.36. Parameters

              +

              Table 1.36. Parameters

              @@ -89,7 +89,7 @@

              - + Expression Semantics
              @@ -102,7 +102,7 @@ Semantics: Always returns void.

              - + Header
              #include <boost/fusion/sequence/intrinsic/swap.hpp>
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
              index 8fd11cd7..5224e293 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the actual type at a given index from the Sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.31. Parameters

              +

              Table 1.31. Parameters

              @@ -111,7 +111,7 @@

              - + Expression Semantics
              @@ -125,14 +125,14 @@ the Nth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/value_at.hpp>
               #include <boost/fusion/include/value_at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
              index 36e02ef4..0df14f6e 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the actual type at a given index from the Sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.32. Parameters

              +

              Table 1.32. Parameters

              @@ -110,7 +110,7 @@

              - + Expression Semantics
              @@ -124,14 +124,14 @@ the Mth element of Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/value_at.hpp>
               #include <boost/fusion/include/value_at.hpp>
               
              - + Example
              typedef vector<int,float,char> vec;
              diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
              index c69676a1..b80b475e 100644
              --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
              +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Returns the actual element type associated with a Key from the Sequence.

              - + Synopsis
              template<
              @@ -46,7 +46,7 @@
               };
               
              -

              Table 1.35. Parameters

              +

              Table 1.35. Parameters

              @@ -110,7 +110,7 @@

              - + Expression Semantics
              @@ -125,14 +125,14 @@ in Seq.

              - + Header
              #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
               #include <boost/fusion/include/value_at_key.hpp>
               
              - + Example
              typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
              diff --git a/doc/html/fusion/sequence/operator.html b/doc/html/fusion/sequence/operator.html
              index be7e0c01..6d002b05 100644
              --- a/doc/html/fusion/sequence/operator.html
              +++ b/doc/html/fusion/sequence/operator.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index 549a516c..dd7afec0 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -49,7 +49,7 @@ only until the result is clear.

              - + Header
              #include <boost/fusion/sequence/comparison.hpp>
              diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
              index 6c531daa..497be9fa 100644
              --- a/doc/html/fusion/sequence/operator/comparison/equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
              @@ -22,19 +22,19 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              Compare two sequences for equality.

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -42,7 +42,7 @@
               operator==(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -88,7 +88,7 @@
              - + Expression Semantics
              @@ -123,14 +123,14 @@ true.

              - + Header
              #include <boost/fusion/sequence/comparison/equal_to.hpp>
               #include <boost/fusion/include/equal_to.hpp>
               
              - + Example
              vector<int, char> v1(5, 'a');
              diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
              index 7ef88393..c66d9774 100644
              --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
              +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              greater than @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator>(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Returns b < a.

              - + Header
              #include <boost/fusion/sequence/comparison/less_equal.hpp>
               #include <boost/fusion/include/less_equal.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
              index 6c1dd074..024f1e12 100644
              --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              greater than equal @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator>=(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

              - + Header
              #include <boost/fusion/sequence/comparison/greater_equal.hpp>
               #include <boost/fusion/include/greater_equal.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
              index d8c30206..e788621e 100644
              --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
              +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              less than @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator<(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -114,14 +114,14 @@ and b.

              - + Header
              #include <boost/fusion/sequence/comparison/less.hpp>
               #include <boost/fusion/include/less.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
              index 42124f53..aab0a2f5 100644
              --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              less than equal @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator<=(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

              - + Header
              #include <boost/fusion/sequence/comparison/less_equal.hpp>
               #include <boost/fusion/include/less_equal.hpp>
               
              - + Example
              vector<int, float> v1(4, 3.3f);
              diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
              index ddb184e0..771bc176 100644
              --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
              +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              not equal @@ -31,7 +31,7 @@ Compare two sequences for inequality.

              - + Synopsis
              template <typename Seq1, typename Seq2>
              @@ -39,7 +39,7 @@
               operator!=(Seq1 const& a, Seq2 const& b);
               
              - + Parameters
              @@ -85,7 +85,7 @@
              - + Expression Semantics
              @@ -115,14 +115,14 @@ Returns !(a == b).

              - + Header
              #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
               #include <boost/fusion/include/not_equal_to.hpp>
               
              - + Example
              vector<int, char> v3(5, 'b');
              diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
              index a747bb6e..d0d165ae 100644
              --- a/doc/html/fusion/sequence/operator/i_o.html
              +++ b/doc/html/fusion/sequence/operator/i_o.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +

              I/O

              @@ -54,7 +54,7 @@

              The library defines three manipulators for changing the default behavior:

              -
              +

              Manipulators

              tuple_open(arg)
              @@ -113,7 +113,7 @@ representation may not be unambiguously parseable.

              - + Header
              #include <boost/fusion/sequence/io.hpp>
              diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
              index 188205d8..e7a29d3a 100644
              --- a/doc/html/fusion/sequence/operator/i_o/in.html
              +++ b/doc/html/fusion/sequence/operator/i_o/in.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              in
              - + Description

              @@ -35,7 +35,7 @@ stream.

              - + Synopsis
              template <typename IStream, typename Sequence>
              @@ -43,7 +43,7 @@
               operator>>(IStream& is, Sequence& seq);
               
              - + Parameters
              @@ -107,7 +107,7 @@
              - + Expression Semantics
              @@ -122,14 +122,14 @@ e.

              - + Header
              #include <boost/fusion/sequence/io/in.hpp>
               #include <boost/fusion/include/in.hpp>
               
              - + Example
              vector<int, std::string, char> v;
              diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
              index 5f63c0f8..7c970379 100644
              --- a/doc/html/fusion/sequence/operator/i_o/out.html
              +++ b/doc/html/fusion/sequence/operator/i_o/out.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              out
              - + Description

              @@ -35,7 +35,7 @@ stream.

              - + Synopsis
              template <typename OStream, typename Sequence>
              @@ -43,7 +43,7 @@
               operator<<(OStream& os, Sequence& seq);
               
              - + Parameters
              @@ -107,7 +107,7 @@
              - + Expression Semantics
              @@ -122,14 +122,14 @@ e.

              - + Header
              #include <boost/fusion/sequence/io/out.hpp>
               #include <boost/fusion/include/out.hpp>
               
              - + Example
              std::cout << make_vector(123, "Hello", 'x') << std::endl;
              diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html
              index 6949af9b..354d106b 100644
              --- a/doc/html/fusion/support.html
              +++ b/doc/html/fusion/support.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index eb7ee456..cdacae86 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ Sequence Concepts).

              - + Synopsis
              namespace traits
              @@ -50,7 +50,7 @@
               }
               
              - + Parameters
              @@ -95,7 +95,7 @@
              - + Expression Semantics
              @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

              - + Header
              #include <boost/fusion/support/category_of.hpp>
               #include <boost/fusion/include/category_of.hpp>
               
              - + Example
              using boost::is_base_of;
              diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
              index a0ceb5ec..37183e1e 100644
              --- a/doc/html/fusion/support/deduce.html
              +++ b/doc/html/fusion/support/deduce.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

              - + Header
              #include <boost/fusion/support/deduce.hpp>
               #include <boost/fusion/include/deduce.hpp>
               
              - + Synopsis
              namespace traits
              @@ -60,7 +60,7 @@
               }
               
              - + Example
              template <typename T>
              @@ -80,10 +80,12 @@
               }
               
              - + See also
              - +
              diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index fe813226..a14b8f19 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,14 +38,14 @@ original type as its argument.

              - + Header
              #include <boost/fusion/support/deduce_sequence.hpp>
               #include <boost/fusion/include/deduce_sequence.hpp>
               
              - + Synopsis
              namespace traits
              @@ -58,7 +58,7 @@
               }
               
              - + Example
              template <class Seq>
              @@ -80,10 +80,12 @@
               }
               
              - + See also
              - +
              diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index e3390861..ce646d6b 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -22,12 +22,12 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ conforming sequences.

              - + Synopsis
              namespace traits
              @@ -51,7 +51,7 @@
               }
               
              - + Parameters
              @@ -96,7 +96,7 @@
              - + Expression Semantics
              @@ -113,14 +113,14 @@ otherwise.

              - + Header
              #include <boost/fusion/support/is_sequence.hpp>
               #include <boost/fusion/include/is_sequence.hpp>
               
              - + Example
              BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
              diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
              index 2c81660f..5064d55d 100644
              --- a/doc/html/fusion/support/is_view.html
              +++ b/doc/html/fusion/support/is_view.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

              - + Synopsis
              namespace traits
              @@ -54,7 +54,7 @@
               }
               
              - + Parameters
              @@ -99,7 +99,7 @@
              - + Expression Semantics
              typedef traits::is_view<T>::type c;
              @@ -115,14 +115,14 @@
                       otherwise.
                     

              - + Header
              #include <boost/fusion/support/is_view.hpp>
               #include <boost/fusion/include/is_view.hpp>
               
              - + Example
              BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
              diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
              index 18054712..d488059a 100644
              --- a/doc/html/fusion/support/pair.html
              +++ b/doc/html/fusion/support/pair.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

              - + Synopsis
              template <typename First, typename Second>
              @@ -60,7 +60,7 @@
               make_pair(Second const &);
               
              - + Template parameters
              @@ -107,7 +107,7 @@
              -
              +

              Notation

              P
              @@ -137,7 +137,7 @@
              - + Expression Semantics
              @@ -317,14 +317,14 @@
              - + Header
              #include <boost/fusion/support/pair.hpp>
               #include <boost/fusion/include/pair.hpp>
               
              - + Example
              pair<int, char> p('X');
              diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
              index 142ebe3e..263e11e6 100644
              --- a/doc/html/fusion/support/tag_of.html
              +++ b/doc/html/fusion/support/tag_of.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -41,7 +41,7 @@ conforming sequences.

              - + Synopsis
              namespace traits
              @@ -54,7 +54,7 @@
               }
               
              - + Parameters
              @@ -99,7 +99,7 @@
              - + Expression Semantics
              typedef traits::tag_of<T>::type tag;
              @@ -112,14 +112,14 @@
                       with T.
                     

              - + Header
              #include <boost/fusion/support/tag_of.hpp>
               #include <boost/fusion/include/tag_of.hpp>
               
              - + Example
              typedef traits::tag_of<list<> >::type tag1;
              diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html
              index 2858e0c6..da2e41f0 100644
              --- a/doc/html/fusion/tuple.html
              +++ b/doc/html/fusion/tuple.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 30aab276..80c566fa 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -22,7 +22,7 @@
              PrevUpHomeNext
              -
              +
              @@ -48,7 +48,7 @@ in future releases of fusion.

              - + Synopsis
              template<
              diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
              index 56d0db77..aabd0354 100644
              --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
              +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,10 +38,10 @@ in this section.

              - + Specification
              -
              +

              Notation

              T1 ... diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index ae2a443d..e92963d3 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

              - + Specification
              template<int I, T>
              diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
              index 89d8bc8f..94bd7285 100644
              --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
              +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
              @@ -22,13 +22,13 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,10 +36,10 @@ Tuple provides the standard boolean relational operators.

              - + Specification
              -
              +

              Notation

              T1 ... diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 05ddbb44..0dd38f24 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -22,13 +22,13 @@
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,7 +38,7 @@ functions are described in this section.

              - + Specification
              template<typename T1, typename T2, ..., typename TN>
              diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
              index 8667fd8f..5de79621 100644
              --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
              +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
              @@ -22,13 +22,13 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -37,7 +37,7 @@ tuple size, and the element types.

              - + Specification
              tuple_size<T>::value
              diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
              index a97a103b..087ed9e9 100644
              --- a/doc/html/fusion/tuple/pairs.html
              +++ b/doc/html/fusion/tuple/pairs.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

              - + Specification
              tuple_size<std::pair<T1, T2> >::value
              diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
              index 0dfbef98..5078bd66 100644
              --- a/doc/html/fusion/view.html
              +++ b/doc/html/fusion/view.html
              @@ -22,7 +22,7 @@
               
              PrevUpHomeNext
              -
              +
              @@ -46,7 +46,7 @@ to copy and be passed around by value.

              - + Header

              #include <boost/fusion/view.hpp>
              diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
              index a93671b3..ad376bdf 100644
              --- a/doc/html/fusion/view/filter_view.html
              +++ b/doc/html/fusion/view/filter_view.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

              - + Header
              #include <boost/fusion/view/filter_view.hpp>
               #include <boost/fusion/include/filter_view.hpp>
               
              - + Synopsis
              template <typename Sequence, typename Pred>
               struct filter_view;
               
              - + Template parameters
              @@ -115,19 +115,21 @@
              - + Model of
              -
              +

              Notation

              F
              @@ -146,7 +148,7 @@
              - + Expression Semantics

              @@ -216,7 +218,7 @@

              - + Example
              using boost::mpl::_;
              diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
              index 328c666a..78ab5603 100644
              --- a/doc/html/fusion/view/iterator_range.html
              +++ b/doc/html/fusion/view/iterator_range.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

              - + Header
              #include <boost/fusion/view/iterator_range.hpp>
               #include <boost/fusion/include/iterator_range.hpp>
               
              - + Synopsis
              template <typename First, typename Last>
               struct iterator_range;
               
              - + Template parameters
              @@ -111,27 +111,27 @@
              - + Model of
              -
              +

              Notation

              IR
              @@ -153,7 +153,7 @@
              - + Expression Semantics
              @@ -227,7 +227,7 @@
              - + Example
              char const* s = "Ruby";
              diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
              index 255036f7..6977b599 100644
              --- a/doc/html/fusion/view/joint_view.html
              +++ b/doc/html/fusion/view/joint_view.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

              - + Header
              #include <boost/fusion/view/joint_view.hpp>
               #include <boost/fusion/include/joint_view.hpp>
               
              - + Synopsis
              template <typename Sequence1, typename Sequence2>
               struct joint_view;
               
              - + Template parameters
              @@ -113,20 +113,22 @@
              - + Model of
              -
              +

              Notation

              JV
              @@ -148,7 +150,7 @@
              - + Expression Semantics

              @@ -220,7 +222,7 @@

              - + Example
              vector<int, char> v1(3, 'x');
              diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
              index b9d73600..6a3bb39f 100644
              --- a/doc/html/fusion/view/nview.html
              +++ b/doc/html/fusion/view/nview.html
              @@ -22,12 +22,12 @@
               
              PrevUpHomeNext
              -
              +
              - + Description

              @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

              - + Header
              #include <boost/fusion/view/nview.hpp>
               #include <boost/fusion/include/nview.hpp>
               
              - + Synopsis
              template <typename Sequence, typename Indicies>
              @@ -56,7 +56,7 @@
               as_nview(Sequence& s);
               
              - + Template parameters
              @@ -137,15 +137,15 @@
              - + Model of
              -
            +

            Notation

            NV
            @@ -163,7 +163,7 @@
            - + Expression Semantics

            @@ -239,7 +239,7 @@ of references to the elements of the original Fusion Sequence

            - + Example
            typedef vector<int, char, double> vec;
            diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
            index b8c28bc5..1cfc654a 100644
            --- a/doc/html/fusion/view/reverse_view.html
            +++ b/doc/html/fusion/view/reverse_view.html
            @@ -22,7 +22,7 @@
             
            PrevUpHomeNext
            -
            +
            @@ -32,21 +32,21 @@ element will be its first.

            - + Header
            #include <boost/fusion/view/reverse_view.hpp>
             #include <boost/fusion/include/reverse_view.hpp>
             
            - + Synopsis
            template <typename Sequence>
             struct reverse_view;
             
            - + Template parameters
            @@ -91,27 +91,27 @@
            - + Model of
            -
            +

            Notation

            RV
            @@ -129,7 +129,7 @@
            - + Expression Semantics
            @@ -201,7 +201,7 @@
            - + Example
            typedef vector<int, short, double> vector_type;
            diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
            index 6cda3797..edf9436f 100644
            --- a/doc/html/fusion/view/single_view.html
            +++ b/doc/html/fusion/view/single_view.html
            @@ -22,7 +22,7 @@
             
            PrevUpHomeNext
            -
            +
            @@ -31,21 +31,21 @@ a value as a single element sequence.

            - + Header
            #include <boost/fusion/view/single_view.hpp>
             #include <boost/fusion/include/single_view.hpp>
             
            - + Synopsis
            template <typename T>
             struct single_view;
             
            - + Template parameters
            @@ -89,11 +89,13 @@
            - + Model of
            - -
            + +

            Notation

            S
            @@ -111,7 +113,7 @@
            - + Expression Semantics

            @@ -182,7 +184,7 @@

            - + Example
            single_view<int> view(3);
            diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
            index 6cda1fe0..9c87479e 100644
            --- a/doc/html/fusion/view/transform_view.html
            +++ b/doc/html/fusion/view/transform_view.html
            @@ -22,7 +22,7 @@
             
            PrevUpHomeNext
            -
            +
            @@ -36,14 +36,14 @@ Traversal Concept) of its underlying sequence or sequences.

            - + Header
            #include <boost/fusion/view/transform_view.hpp>
             #include <boost/fusion/include/transform_view.hpp>
             
            - + Synopsis

            @@ -59,7 +59,7 @@ struct transform_view;

            - + Template parameters
            @@ -179,18 +179,18 @@
            - + Model of
            -
            + Forward Sequence, + Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see + Sequence Traversal + Concept) of its underlying sequence. +
          +

          Notation

          TV
          @@ -234,7 +234,7 @@
          - + Expression Semantics
          @@ -329,7 +329,7 @@
          - + Example
          struct square
          diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
          index 6d7eb0bd..19aee352 100644
          --- a/doc/html/fusion/view/zip_view.html
          +++ b/doc/html/fusion/view/zip_view.html
          @@ -22,12 +22,12 @@
           
          PrevUpHomeNext
          -
          +
          - + Description

          @@ -38,21 +38,21 @@ to the component _sequence_s.

          - + Header
          #include <boost/fusion/view/zip_view.hpp>
           #include <boost/fusion/include/zip_view.hpp>
           
          - + Synopsis
          template <typename Sequences>
           struct zip_view;
           
          - + Template parameters
          @@ -97,18 +97,18 @@
          - + Model of
          -
          + Forward Sequence, + Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see + Sequence Traversal + Concept) of its underlying sequence. +
        +

        Notation

        ZV
        @@ -126,7 +126,7 @@
        - + Expression Semantics

        @@ -197,7 +197,7 @@

        - + Example
        typedef vector<int,int> vec1;
        diff --git a/doc/html/index.html b/doc/html/index.html
        index 51e5c6f1..55f5835f 100644
        --- a/doc/html/index.html
        +++ b/doc/html/index.html
        @@ -18,7 +18,7 @@
         
         
        Next
        -
        +

        Chapter 1. Fusion 2.0

        @@ -33,8 +33,8 @@
        -
        -

        +

        +

        Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

        @@ -256,7 +256,7 @@
        - +

        Last revised: April 11, 2010 at 14:53:40 GMT

        Last revised: June 18, 2010 at 17:16:15 GMT


        diff --git a/doc/view.qbk b/doc/view.qbk index d4521e4e..f4a00a78 100644 --- a/doc/view.qbk +++ b/doc/view.qbk @@ -548,4 +548,70 @@ of the original Fusion __sequence__ [endsect] + +[section repetitive_view] + +[heading Description] + +`repetitive_view` presents a view which iterates over a given +__sequence__ repeatedly. Because a `repetitive_view` +has infinite length, it can only be used when some external +condition determines the end. Thus, initializing a fixed +length sequence with a `repetitive_view` is okay, but +printing a `repetitive_view` to `std::cout` is not. + +[heading Header] + + #include + #include + +[heading Synopsis] + + template + struct repetitive_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Sequence`] [An arbitrary Fusion __forward_sequence__] + []] +] + +[variablelist Notation + [[`RV`] [A `repetitive_view` type]] + [[`s`] [An instance of `Sequences`]] + [[`rv`, `rv1`, `rv2`] [Instances of `RV`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Return Type] [Semantics]] + [[`RV(s)`] [] [Creates an `repetitive_view` given the underlying sequence.]] + [[`RV(rv1)`] [] [Copy constructs an `repetitive_view` from another `repetitive_view`, `rv1`.]] + [[`rv1 = rv2`] [] [Assigns to a `repetitive_view`, `rv1`, from another `repetitive_view`, `rv2`.]] + [[`__begin__(rv)`] [__forward_iterator__] []] + [[`__end__(rv)`] [__forward_iterator__] [Creates an unreachable iterator (since the sequnce is infinite)]] +] + +[heading Result Type Expressions] + +[table + [[Expression]] + [[`__result_of_begin__::type`]] + [[`__result_of_end__::type`]] +] + +[heading Example] + typedef __vector__ vec1; + typedef __vector__ vec2; + + vec1 v1(1, 'c', 2.0); + vec2 v2(repetitive_view(v1)); + + std::cout << v2 << std::endl; // 1, 'c', 2.0, 1, 'c' + +[endsect] + [endsect] diff --git a/include/boost/fusion/adapted.hpp b/include/boost/fusion/adapted.hpp index 0dd1f0e7..09684204 100644 --- a/include/boost/fusion/adapted.hpp +++ b/include/boost/fusion/adapted.hpp @@ -8,11 +8,12 @@ #if !defined(BOOST_FUSION_ADAPTED_30122005_1420) #define BOOST_FUSION_ADAPTED_30122005_1420 -#include -#include #include -#include -#include +#include +#include #include +#include +#include +#include #endif diff --git a/include/boost/fusion/adapted/boost_array/array_iterator.hpp b/include/boost/fusion/adapted/boost_array/array_iterator.hpp index dbad7763..5453a639 100644 --- a/include/boost/fusion/adapted/boost_array/array_iterator.hpp +++ b/include/boost/fusion/adapted/boost_array/array_iterator.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion : iterator_facade, random_access_traversal_tag> { BOOST_MPL_ASSERT_RELATION(Pos, >=, 0); - BOOST_MPL_ASSERT_RELATION(Pos, <=, Array::static_size); + BOOST_MPL_ASSERT_RELATION(Pos, <=, static_cast(Array::static_size)); typedef mpl::int_ index; typedef Array array_type; diff --git a/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp index cf3183b1..553429e3 100644 --- a/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -47,8 +47,8 @@ namespace boost { namespace fusion { typedef Cons cons_type; - explicit boost_tuple_iterator(Cons& cons) - : cons(cons) {} + explicit boost_tuple_iterator(Cons& in_cons) + : cons(in_cons) {} Cons& cons; template @@ -127,6 +127,10 @@ namespace boost { namespace fusion return type(); } }; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + boost_tuple_iterator& operator= (boost_tuple_iterator const&); }; template diff --git a/include/boost/fusion/adapted/class/adapt_assoc_class.hpp b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp index 26eb3ae6..60d8d9e4 100644 --- a/include/boost/fusion/adapted/class/adapt_assoc_class.hpp +++ b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp @@ -62,6 +62,7 @@ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ assoc_struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_CLASS_C) @@ -70,6 +71,16 @@ (0), \ (0)(NAME), \ assoc_struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_C) + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + assoc_struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_CLASS_C) diff --git a/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp b/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp index e73b1fe2..99e45ada 100644 --- a/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp +++ b/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp @@ -17,7 +17,7 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_ASSOC_CLASS( \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_AS_VIEW( \ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ ATTRIBUTES) diff --git a/include/boost/fusion/adapted/class/adapt_class.hpp b/include/boost/fusion/adapted/class/adapt_class.hpp index f3ee7e93..fdd56216 100644 --- a/include/boost/fusion/adapted/class/adapt_class.hpp +++ b/include/boost/fusion/adapted/class/adapt_class.hpp @@ -48,6 +48,7 @@ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_CLASS_C) @@ -56,6 +57,16 @@ (0), \ (0)(NAME), \ struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_CLASS_C) + +#define BOOST_FUSION_ADAPT_CLASS_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_CLASS_C) diff --git a/include/boost/fusion/adapted/class/adapt_class_named.hpp b/include/boost/fusion/adapted/class/adapt_class_named.hpp index 4dec9064..bbc1d1ae 100644 --- a/include/boost/fusion/adapted/class/adapt_class_named.hpp +++ b/include/boost/fusion/adapted/class/adapt_class_named.hpp @@ -19,7 +19,7 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_CLASS( \ + BOOST_FUSION_ADAPT_CLASS_AS_VIEW( \ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ ATTRIBUTES) diff --git a/include/boost/fusion/adapted/class/class_iterator.hpp b/include/boost/fusion/adapted/class/class_iterator.hpp deleted file mode 100644 index 639ee927..00000000 --- a/include/boost/fusion/adapted/class/class_iterator.hpp +++ /dev/null @@ -1,105 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M) -#define FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - template - struct class_iterator - : iterator_facade, random_access_traversal_tag> - { - BOOST_MPL_ASSERT_RELATION(N_, >=, 0); - BOOST_MPL_ASSERT_RELATION(N_, <=, extension::class_size::value); - - typedef mpl::int_ index; - typedef Class class_type; - - class_iterator(Class& class_) - : class_(class_) {} - Class& class_; - - template - struct value_of - : extension::class_member - { - }; - - template - struct deref - { - typedef typename - mpl::if_< - is_const - , typename extension::class_member::get_type - , typename extension::class_member::proxy - >::type - type; - - static type - call(Iterator const& iter) - { - return extension::class_member:: - call(iter.class_); - } - }; - - template - struct advance - { - typedef typename Iterator::index index; - typedef typename Iterator::class_type class_type; - typedef class_iterator type; - - static type - call(Iterator const& iter) - { - return type(iter.class_); - } - }; - - template - struct next : advance > {}; - - template - struct prior : advance > {}; - - template - struct distance : mpl::minus - { - typedef typename - mpl::minus< - typename I2::index, typename I1::index - >::type - type; - - static type - call(I1 const&, I2 const&) - { - return type(); - } - }; - }; -}} - -#endif - - diff --git a/include/boost/fusion/adapted/class/detail/adapt_base.hpp b/include/boost/fusion/adapted/class/detail/adapt_base.hpp index 54b701f3..264390a6 100644 --- a/include/boost/fusion/adapted/class/detail/adapt_base.hpp +++ b/include/boost/fusion/adapted/class/detail/adapt_base.hpp @@ -45,8 +45,8 @@ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) rvalue; \ \ - class_member_proxy(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj)\ - : obj(obj) \ + class_member_proxy(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& o) \ + : obj(o) \ {} \ \ template \ @@ -63,6 +63,9 @@ } \ \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj; \ + \ + private: \ + class_member_proxy& operator= (class_member_proxy const&); \ }; \ \ template< \ diff --git a/include/boost/fusion/adapted/class/detail/at_impl.hpp b/include/boost/fusion/adapted/class/detail/at_impl.hpp deleted file mode 100644 index 12b5171f..00000000 --- a/include/boost/fusion/adapted/class/detail/at_impl.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM) -#define BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct at_impl; - - template - struct class_member; - - template - struct class_size; - - template <> - struct at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_MPL_ASSERT_RELATION( - n_value, <=, extension::class_size::value); - - typedef typename - extension::class_member - element; - - typedef typename - mpl::if_< - is_const - , typename class_member::get_type - , typename class_member::proxy - >::type - type; - - static type - call(Sequence& seq) - { - return extension:: - class_member::call(seq); - } - - //~ static typename class_member::get_type - //~ call(Sequence const& seq) - //~ { - //~ return extension:: - //~ class_member::call(seq); - //~ } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/at_key_impl.hpp b/include/boost/fusion/adapted/class/detail/at_key_impl.hpp deleted file mode 100644 index 9df985bf..00000000 --- a/include/boost/fusion/adapted/class/detail/at_key_impl.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2007 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM) -#define BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct at_key_impl; - - template - struct class_assoc_member; - - template <> - struct at_key_impl - { - template - struct apply - { - typedef typename - extension::class_assoc_member - element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - static type - call(Sequence& seq) - { - return extension:: - class_assoc_member::call(seq); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/begin_impl.hpp b/include/boost/fusion/adapted/class/detail/begin_impl.hpp deleted file mode 100644 index 4fadac4e..00000000 --- a/include/boost/fusion/adapted/class/detail/begin_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM) -#define BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef class_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/category_of_impl.hpp b/include/boost/fusion/adapted/class/detail/category_of_impl.hpp deleted file mode 100644 index 821cf38b..00000000 --- a/include/boost/fusion/adapted/class/detail/category_of_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - struct random_access_traversal_tag; - - namespace extension - { - template - struct category_of_impl; - - template<> - struct category_of_impl - { - template - struct apply - { - typedef random_access_traversal_tag type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/end_impl.hpp b/include/boost/fusion/adapted/class/detail/end_impl.hpp deleted file mode 100644 index 81c02c30..00000000 --- a/include/boost/fusion/adapted/class/detail/end_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_END_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct end_impl; - - template - struct class_size; - - template <> - struct end_impl - { - template - struct apply - { - typedef - class_iterator< - Sequence - , class_size::value - > - type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/has_key_impl.hpp b/include/boost/fusion/adapted/class/detail/has_key_impl.hpp deleted file mode 100644 index 27f1adce..00000000 --- a/include/boost/fusion/adapted/class/detail/has_key_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2007 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_HAS_KEY_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_HAS_KEY_IMPL_OCTOBER_4_2009_919PM - -#include -#include - -namespace boost { namespace fusion { - - struct class_tag; - - namespace extension - { - struct no_such_member; - - template - struct has_key_impl; - - template - struct class_assoc_member; - - template<> - struct has_key_impl - { - template - struct apply - : mpl::not_::type> > - { - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp deleted file mode 100644 index c1d35de1..00000000 --- a/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/is_view_impl.hpp b/include/boost/fusion/adapted/class/detail/is_view_impl.hpp deleted file mode 100644 index 86ce0074..00000000 --- a/include/boost/fusion/adapted/class/detail/is_view_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_IS_VIEW_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - { - template - struct apply : mpl::false_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/size_impl.hpp b/include/boost/fusion/adapted/class/detail/size_impl.hpp deleted file mode 100644 index de34a3b1..00000000 --- a/include/boost/fusion/adapted/class/detail/size_impl.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_SIZE_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - namespace extension - { - template - struct class_size; - } - - struct class_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : extension::class_size {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/value_at_impl.hpp b/include/boost/fusion/adapted/class/detail/value_at_impl.hpp deleted file mode 100644 index 64d2fc3a..00000000 --- a/include/boost/fusion/adapted/class/detail/value_at_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_OCTOBER_4_2009_918PM) -#define BOOST_FUSION_VALUE_AT_IMPL_OCTOBER_4_2009_918PM - -#include -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct value_at_impl; - - template - struct class_member; - - template - struct class_size; - - template <> - struct value_at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_MPL_ASSERT_RELATION( - n_value, <=, extension::class_size::value); - - typedef typename - extension::class_member::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp b/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp deleted file mode 100644 index f9adc104..00000000 --- a/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2007 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_OCTOBER_4_2009_918PM) -#define BOOST_FUSION_VALUE_AT_KEY_IMPL_OCTOBER_4_2009_918PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct value_at_key_impl; - - template - struct class_assoc_member; - - template <> - struct value_at_key_impl - { - template - struct apply - { - typedef typename - extension::class_assoc_member::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/extension.hpp b/include/boost/fusion/adapted/class/extension.hpp deleted file mode 100644 index 28d0a223..00000000 --- a/include/boost/fusion/adapted/class/extension.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM) -#define FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM - -#include - -namespace boost { namespace fusion { namespace extension -{ - template - struct class_member; - - template - struct class_size; - - template - struct class_member : class_member {}; - //~ { - //~ typedef typename class_member::type type; - //~ typedef typename class_member::get_type get_type; - //~ typedef typename class_member::proxy proxy; - - //~ static get_type& - //~ call(Class const& class_) - //~ { - //~ return class_member::call( - //~ const_cast(class_)); - //~ } - //~ }; - - template - struct class_size - : class_size - {}; - - struct no_such_member; - - template - struct class_assoc_member - { - typedef no_such_member type; - }; - - template - struct class_assoc_member - { - typedef typename - add_const::type>::type - type; - - static type& - call(Class const& class_) - { - return class_assoc_member::call( - const_cast(class_)); - } - }; - -}}} - -#endif - - diff --git a/include/boost/fusion/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/adapted/mpl/mpl_iterator.hpp index c99b5804..9c82028a 100644 --- a/include/boost/fusion/adapted/mpl/mpl_iterator.hpp +++ b/include/boost/fusion/adapted/mpl/mpl_iterator.hpp @@ -80,7 +80,7 @@ namespace boost { namespace fusion type; static type - call(Iterator const& i) + call(Iterator const& /*i*/) { return type(); } diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index c6c991d1..865d9284 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -34,9 +34,9 @@ #include #include -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0(X, Y, Z)\ +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0(X, Y, Z) \ ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1 -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1(X, Y, Z)\ +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1(X, Y, Z) \ ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0_END #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1_END @@ -59,7 +59,7 @@ TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, ATTRIBUTE) \ \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY(),ATTRIBUTE) + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE) #define BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( \ TEMPLATE_PARAMS_SEQ, NAME_SEQ, ATTRIBUTES) \ @@ -68,6 +68,7 @@ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ assoc_struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) @@ -76,6 +77,16 @@ (0), \ (0)(NAME), \ assoc_struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + assoc_struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp index d4c3cdc2..996c9f47 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp @@ -11,11 +11,12 @@ #include #include -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_C( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, ATTRIBUTE) \ - \ - BOOST_FUSION_ADAPT_ASSOC_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, obj., ATTRIBUTE) +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0(X, Y, Z) \ + (X, obj.Y, Z) BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_1 +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_1(X, Y, Z) \ + (X, obj.Y, Z) BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0 +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0_END +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_1_END #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS( \ WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ @@ -23,13 +24,10 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_STRUCT_BASE( \ - (0), \ - (0)(BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ - (0)NAMESPACE_SEQ)NAME), \ - assoc_struct_tag, \ - BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ - BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_C) + BOOST_FUSION_ADAPT_ASSOC_STRUCT_AS_VIEW( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ + BOOST_PP_CAT( \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0 ATTRIBUTES,_END)) #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS( \ diff --git a/include/boost/fusion/adapted/struct/adapt_struct.hpp b/include/boost/fusion/adapted/struct/adapt_struct.hpp index 0758af53..066da8aa 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct.hpp @@ -38,13 +38,14 @@ #define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\ BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY(),ATTRIBUTE,2) + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE,2) #define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \ BOOST_FUSION_ADAPT_STRUCT_BASE( \ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_STRUCT_C) @@ -53,6 +54,16 @@ (0), \ (0)(NAME), \ struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_C) + +#define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_STRUCT_C) diff --git a/include/boost/fusion/adapted/struct/adapt_struct_named.hpp b/include/boost/fusion/adapted/struct/adapt_struct_named.hpp index 37ea1af1..ef13be02 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct_named.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct_named.hpp @@ -14,11 +14,12 @@ #include #include -#define BOOST_FUSION_ADAPT_STRUCT_NAMED_C( \ - TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE) \ - \ - BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, obj., ATTRIBUTE, 2) +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0(X, Y) \ + (X, obj.Y) BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_1 +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_1(X, Y) \ + (X, obj.Y) BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0 +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0_END +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_1_END #define BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ @@ -26,13 +27,9 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_STRUCT_BASE( \ - (0), \ - (0)(BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ - (0)NAMESPACE_SEQ)NAME), \ - struct_tag, \ - BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ - BOOST_FUSION_ADAPT_STRUCT_NAMED_C) + BOOST_FUSION_ADAPT_STRUCT_AS_VIEW( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0 ATTRIBUTES,_END)) #define BOOST_FUSION_ADAPT_STRUCT_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ diff --git a/include/boost/fusion/adapted/struct/detail/adapt_base.hpp b/include/boost/fusion/adapted/struct/detail/adapt_base.hpp index c1b1b923..b2d81cf8 100644 --- a/include/boost/fusion/adapted/struct/detail/adapt_base.hpp +++ b/include/boost/fusion/adapted/struct/detail/adapt_base.hpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -116,7 +117,7 @@ static type \ call(Seq& seq) \ { \ - return seq.PREFIX \ + return seq.PREFIX() \ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE); \ } \ }; \ @@ -141,7 +142,12 @@ }; #define BOOST_FUSION_ADAPT_STRUCT_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ,TAG,ATTRIBUTES_SEQ,ATTRIBUTES_CALLBACK) \ + TEMPLATE_PARAMS_SEQ, \ + NAME_SEQ, \ + TAG, \ + IS_VIEW, \ + ATTRIBUTES_SEQ, \ + ATTRIBUTES_CALLBACK) \ \ namespace boost \ { \ @@ -169,6 +175,16 @@ namespace boost > \ struct struct_size \ : mpl::int_ \ + {}; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_is_view< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ + > \ + : mpl::BOOST_PP_IF(IS_VIEW,true_,false_) \ {}; \ } \ } \ diff --git a/include/boost/fusion/adapted/struct/detail/define_struct.hpp b/include/boost/fusion/adapted/struct/detail/define_struct.hpp index 42bc6dcd..5f761463 100644 --- a/include/boost/fusion/adapted/struct/detail/define_struct.hpp +++ b/include/boost/fusion/adapted/struct/detail/define_struct.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -42,7 +43,7 @@ #define BOOST_FUSION_DEFINE_STRUCT_ASSIGN_FILLER_I( \ R, ATTRIBUTE_TUPEL_SIZE, I_, ATTRIBUTE) \ \ - BOOST_PP_IF( \ + BOOST_PP_EXPR_IF( \ I_, \ typedef typename \ boost::fusion::result_of::next< \ @@ -50,9 +51,8 @@ >::type \ BOOST_PP_CAT(I,I_); \ BOOST_PP_CAT(I,I_) BOOST_PP_CAT(i,I_)= \ - boost::fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(I_)));, \ - BOOST_PP_EMPTY() \ - ) \ + boost::fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(I_))); \ + ) \ \ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)= \ boost::fusion::deref(BOOST_PP_CAT(i,I_)); diff --git a/include/boost/fusion/adapted/struct/detail/extension.hpp b/include/boost/fusion/adapted/struct/detail/extension.hpp index 4896859d..2ba3bf70 100644 --- a/include/boost/fusion/adapted/struct/detail/extension.hpp +++ b/include/boost/fusion/adapted/struct/detail/extension.hpp @@ -33,11 +33,15 @@ namespace boost { namespace fusion template struct struct_member_name; + template + struct struct_size; + + template + struct struct_is_view; + template struct struct_assoc_key; - template - struct struct_size; } }} diff --git a/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp b/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp index 0580018d..eae0b364 100644 --- a/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp @@ -10,8 +10,6 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP -#include - namespace boost { namespace fusion { namespace extension { template @@ -22,7 +20,7 @@ namespace boost { namespace fusion { namespace extension { template struct apply - : mpl::false_ + : struct_is_view::type> {}; }; diff --git a/include/boost/fusion/adapted/struct/detail/proxy_type.hpp b/include/boost/fusion/adapted/struct/detail/proxy_type.hpp index 062f24a1..bf0a6ebd 100644 --- a/include/boost/fusion/adapted/struct/detail/proxy_type.hpp +++ b/include/boost/fusion/adapted/struct/detail/proxy_type.hpp @@ -18,11 +18,14 @@ \ struct NAME \ { \ - NAME(WRAPPED_TYPE& obj) \ - : obj(obj) \ + NAME(WRAPPED_TYPE& in_obj) \ + : obj(in_obj) \ {} \ \ WRAPPED_TYPE& obj; \ + \ + private: \ + NAME& operator= (NAME const&); \ }; \ \ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) diff --git a/include/boost/fusion/algorithm/iteration.hpp b/include/boost/fusion/algorithm/iteration.hpp index 5d0fefa0..c94d4786 100644 --- a/include/boost/fusion/algorithm/iteration.hpp +++ b/include/boost/fusion/algorithm/iteration.hpp @@ -10,5 +10,8 @@ #include #include #include +#include +#include +#include #endif diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp index 3d0685f7..aa52a99b 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -22,14 +22,14 @@ namespace boost { namespace fusion } template - inline typename result_of::accumulate::type + inline typename result_of::accumulate::type accumulate(Sequence& seq, State const& state, F f) { return fusion::fold(seq, state, f); } template - inline typename result_of::accumulate::type + inline typename result_of::accumulate::type accumulate(Sequence const& seq, State const& state, F f) { return fusion::fold(seq, state, f); diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index 62a677de..3ce672b3 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -1,278 +1,434 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_FOLD_HPP_20070528_1253) -#define BOOST_FUSION_FOLD_HPP_20070528_1253 -#include -#include -#include -#include +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOLD_HPP + +#include #include #include +#include +#include +#include #include #include +#include #include -#include +#include +#include +#include +#include #include - #include #include -namespace boost { namespace fusion { -namespace result_of -{ - template - struct fold; -} -namespace detail -{ - template - struct apply_fold_result - { - template - struct apply - : boost::result_of - {}; - }; - - template - struct fold_apply - { - typedef typename result_of::deref::type dereferenced; - typedef typename add_reference::type>::type lvalue_state; - typedef typename boost::result_of::type type; - }; - - template - struct static_fold; - - template - struct next_result_of_fold - { - typedef typename - static_fold< - typename result_of::next::type - , Last - , typename fold_apply::type - , F - >::type - type; - }; - - template - struct static_fold - { - typedef typename - mpl::if_< - result_of::equal_to - , mpl::identity - , next_result_of_fold - >::type - result; - - typedef typename result::type type; - }; - - template - struct result_of_unrolled_fold; - - template - struct unrolled_fold - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - typedef typename result_of::next::type I1; - I1 i1 = fusion::next(i0); - typedef typename result_of::next::type I2; - I2 i2 = fusion::next(i1); - typedef typename result_of::next::type I3; - I3 i3 = fusion::next(i2); - typedef typename result_of::next::type I4; - I4 i4 = fusion::next(i3); - - return unrolled_fold::call(f(f(f(f(state, *i0), *i1), *i2), *i3), i4, f); - } - }; - - template<> - struct unrolled_fold<3> - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - typedef typename result_of::next::type I1; - I1 i1 = fusion::next(i0); - typedef typename result_of::next::type I2; - I2 i2 = fusion::next(i1); - return f(f(f(state, *i0), *i1), *i2); - } - }; - - template<> - struct unrolled_fold<2> - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - typedef typename result_of::next::type I1; - I1 i1 = fusion::next(i0); - return f(f(state, *i0), *i1); - } - }; - - template<> - struct unrolled_fold<1> - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - return f(state, *i0); - } - }; - - template<> - struct unrolled_fold<0> - { - template - static State call(State const& state, I0 const&, F) - { - return state; - } - }; - - // terminal case - template - inline State const& - linear_fold(First const&, Last const&, State const& state, F, mpl::true_) - { - return state; - } - - // non-terminal case - template - inline typename static_fold::type - linear_fold( - First const& first - , Last const& last - , State const& state - , F f - , mpl::false_) - { - return detail::linear_fold( - fusion::next(first) - , last - , f(state, *first) - , f - , result_of::equal_to::type, Last>() - ); - } - - template - struct result_of_unrolled_fold - { - typedef typename result_of::next::type I1; - typedef typename result_of::next::type I2; - typedef typename result_of::next::type I3; - typedef typename result_of::next::type I4; - typedef typename fold_apply::type Rest1; - typedef typename fold_apply::type Rest2; - typedef typename fold_apply::type Rest3; - typedef typename fold_apply::type Rest4; - - typedef typename result_of_unrolled_fold::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef typename result_of::next::type I1; - typedef typename result_of::next::type I2; - typedef typename fold_apply::type Rest; - typedef typename fold_apply::type Rest2; - typedef typename fold_apply::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef typename result_of::next::type I1; - typedef typename fold_apply::type Rest; - typedef typename fold_apply::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef typename fold_apply::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef State type; - }; - - template - struct choose_fold; - - template - struct choose_fold - { - typedef typename result_of::begin::type begin; - typedef typename result_of::end::type end; - typedef typename result_of_unrolled_fold< - State, begin, F, result_of::distance::type::value>::type type; - }; - - template - struct choose_fold - { - typedef typename - detail::static_fold< - typename result_of::begin::type - , typename result_of::end::type - , State - , F - >::type - type; - }; - - template - typename result_of::fold::type - fold(Sequence& seq, State const& state, F f, Tag) - { - return linear_fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>() - ); - } - - template - typename result_of::fold::type - fold(Sequence& seq, State const& state, F f, random_access_traversal_tag) - { - typedef typename result_of::begin::type begin; - typedef typename result_of::end::type end; - return unrolled_fold::type::value>::call( - state - , fusion::begin(seq) - , f); - } -}}} - #endif + +#ifdef BOOST_FUSION_REVERSE_FOLD +# ifdef BOOST_FUSION_ITER_FOLD +# define BOOST_FUSION_FOLD_NAME reverse_iter_fold +# else +# define BOOST_FUSION_FOLD_NAME reverse_fold +# endif + +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION end +# define BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION prior +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM(IT) \ + typename fusion::result_of::prior::type +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM(IT) fusion::prior(IT) +#else +# ifdef BOOST_FUSION_ITER_FOLD +# define BOOST_FUSION_FOLD_NAME iter_fold +# else +# define BOOST_FUSION_FOLD_NAME fold +# endif + +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION begin +# define BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION next +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM(IT) IT +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM(IT) IT +#endif +#ifdef BOOST_FUSION_ITER_FOLD +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM(IT) IT& +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(IT) IT +#else +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM(IT) \ + typename fusion::result_of::deref::type +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(IT) fusion::deref(IT) +#endif + +namespace boost { namespace fusion +{ + namespace detail + { + template + struct BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state) + : boost::result_of< + F( + typename add_reference::type>::type, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM(It)) + > + {}; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + It1; + It1 it1 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0); + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It1 + >::type + It2; + It2 it2 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1); + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It2 + >::type + It3; + It3 it3 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it2); + + return BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME)< + Result + , N-4 + >::call( + f( + f( + f( + f( + state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM( + it0) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it1) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it2) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it3) + ), + fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it3), + f); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + It1; + It1 it1 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0); + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It1 + >::type + It2; + It2 it2 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1); + + return f( + f( + f( + state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it1) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM( + fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1) + )); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + return f( + f(state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0)), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM( + fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0))); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + return f(state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0)); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + return static_cast(state); + } + }; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME) + { + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + >::type + rest1; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + it1; + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest1 + , it1 + , F + >::type + rest2; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION::type + it2; + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest2 + , it2 + , F + >::type + rest3; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION::type + it3; + + typedef typename + BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + typename BOOST_PP_CAT( + BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest3 + , it3 + , F + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + it3 + >::type + , F + , N-4 + >::type + type; + }; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 3 + > + { + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + >::type + rest1; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + it1; + + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + typename BOOST_PP_CAT( + BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest1 + , it1 + , F + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + it1 const + >::type const + , F + >::type + type; + }; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 2 + > + : BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + typename BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type const + , F + > + {}; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 1 + > + : BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + > + {}; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 0 + > + { + typedef StateRef type; + }; + + template + struct BOOST_PP_CAT(result_of_first_unrolled,BOOST_FUSION_FOLD_NAME) + { + typedef typename + BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + typename boost::result_of< + F( + StateRef, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM( + It0 const) + ) + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + , F + , SeqSize-1 + >::type + type; + }; + + template + struct BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME,_impl) + { + typedef typename + BOOST_PP_CAT( + result_of_first_unrolled,BOOST_FUSION_FOLD_NAME)< + StateRef + , BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM(It0) + , F + , SeqSize + >::type + type; + + static type + call(StateRef state, It0 const& it0, F f) + { + return BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME)< + type + , SeqSize + >::call(state,BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM(it0),f); + } + }; + + template + struct BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME,_impl)<0,StateRef,It0,F> + { + typedef StateRef type; + + static StateRef + call(StateRef state, It0 const&, F) + { + return static_cast(state); + } + }; + } + + namespace result_of + { + template + struct BOOST_FUSION_FOLD_NAME + : detail::BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME,_impl)< + size::value + , typename add_reference< + typename add_const::type + >::type + , typename BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION::type + , F + > + {}; + } + + template + inline typename result_of::fold::type + BOOST_FUSION_FOLD_NAME(Seq& seq,State const& state,F f) + { + return result_of::BOOST_FUSION_FOLD_NAME::call( + state, + fusion::BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION(seq), + f); + } + + template + inline typename result_of::fold::type + BOOST_FUSION_FOLD_NAME(Seq const& seq,State const& state,F f) + { + return result_of::BOOST_FUSION_FOLD_NAME::call( + state, + fusion::BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION(seq), + f); + } +}} + +#undef BOOST_FUSION_FOLD_NAME +#undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION +#undef BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION +#undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM +#undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM +#undef BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM +#undef BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp index 75c63b8f..347fb4f1 100644 --- a/include/boost/fusion/algorithm/iteration/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/fold.hpp @@ -1,48 +1,15 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman Copyright (c) 2007 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_FOLD_05052005_1214) -#define BOOST_FUSION_FOLD_05052005_1214 + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP #include -#include -#include - -#include -#include - -namespace boost { namespace fusion { - - struct random_access_traversal_tag; - - namespace result_of - { - template - struct fold - : fusion::detail::choose_fold< - Sequence, State, F - , is_base_of::type>::value> - {}; - } - - template - inline typename result_of::fold::type - fold(Sequence& seq, State const& state, F f) - { - return detail::fold(seq, state, f, typename traits::category_of::type()); - } - - template - inline typename result_of::fold::type - fold(Sequence const& seq, State const& state, F f) - { - return detail::fold(seq, state, f, typename traits::category_of::type()); - } -}} #endif - diff --git a/include/boost/fusion/algorithm/iteration/iter_fold.hpp b/include/boost/fusion/algorithm/iteration/iter_fold.hpp new file mode 100644 index 00000000..59cbfd8c --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/iter_fold.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_ITER_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_ITER_FOLD_HPP + +#define BOOST_FUSION_ITER_FOLD + +#include + +#undef BOOST_FUSION_ITER_FOLD + +#endif diff --git a/include/boost/fusion/algorithm/iteration/reverse_fold.hpp b/include/boost/fusion/algorithm/iteration/reverse_fold.hpp new file mode 100644 index 00000000..bb09db5d --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/reverse_fold.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_FOLD_HPP + +#define BOOST_FUSION_REVERSE_FOLD + +#include + +#undef BOOST_FUSION_REVERSE_FOLD + +#endif diff --git a/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp b/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp new file mode 100644 index 00000000..80079f48 --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_ITER_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_ITER_FOLD_HPP + +#define BOOST_FUSION_REVERSE_FOLD +#define BOOST_FUSION_ITER_FOLD + +#include + +#undef BOOST_FUSION_REVERSE_FOLD +#undef BOOST_FUSION_ITER_FOLD + +#endif diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp index 51fd393f..c9284e86 100644 --- a/include/boost/fusion/algorithm/query/detail/all.hpp +++ b/include/boost/fusion/algorithm/query/detail/all.hpp @@ -106,7 +106,7 @@ namespace boost { namespace fusion { namespace detail struct unrolled_all<0> { template - static bool call(It const& it, F f) + static bool call(It const& /*it*/, F /*f*/) { return true; } diff --git a/include/boost/fusion/algorithm/query/detail/count.hpp b/include/boost/fusion/algorithm/query/detail/count.hpp index ff17adbd..6c4254c3 100644 --- a/include/boost/fusion/algorithm/query/detail/count.hpp +++ b/include/boost/fusion/algorithm/query/detail/count.hpp @@ -7,10 +7,16 @@ #if !defined(FUSION_COUNT_09162005_0158) #define FUSION_COUNT_09162005_0158 +#include #include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { namespace detail { template @@ -44,8 +50,8 @@ namespace boost { namespace fusion { namespace detail struct count_compare { typedef typename detail::call_param::type param; - count_compare(param x) - : x(x) {} + count_compare(param in_x) + : x(in_x) {} template bool @@ -64,5 +70,9 @@ namespace boost { namespace fusion { namespace detail }; }}} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp index c9f849cb..992a76ee 100644 --- a/include/boost/fusion/algorithm/transformation/clear.hpp +++ b/include/boost/fusion/algorithm/transformation/clear.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion template inline typename result_of::clear::type - clear(Sequence const& seq) + clear(Sequence const& /*seq*/) { return vector0<>(); } diff --git a/include/boost/fusion/algorithm/transformation/detail/replace.hpp b/include/boost/fusion/algorithm/transformation/detail/replace.hpp index 9e20f79f..8005aad0 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion { namespace detail template struct replacer { - replacer(T const& old_value, T const& new_value) - : old_value(old_value), new_value(new_value) {} + replacer(T const& in_old_value, T const& in_new_value) + : old_value(in_old_value), new_value(in_new_value) {} template struct result; diff --git a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp index db0434c6..fa6068aa 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion { namespace detail template struct replacer_if { - replacer_if(F f, T const& new_value) - : f(f), new_value(new_value) {} + replacer_if(F in_f, T const& in_new_value) + : f(in_f), new_value(in_new_value) {} template struct result; diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 01f017e9..b5c9edd8 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -68,7 +68,7 @@ namespace boost { namespace fusion { {} template - deque(Sequence const& seq, typename disable_if >::type* dummy = 0) + deque(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) : base(base::from_iterator(fusion::begin(seq))) {} diff --git a/include/boost/fusion/container/deque/deque_iterator.hpp b/include/boost/fusion/container/deque/deque_iterator.hpp index c6e46d54..7a2fcf45 100644 --- a/include/boost/fusion/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/container/deque/deque_iterator.hpp @@ -100,6 +100,10 @@ namespace boost { namespace fusion { {}; Seq& seq_; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + deque_iterator& operator= (deque_iterator const&); }; }} diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp index 8e500f66..e2745616 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -46,11 +46,11 @@ namespace boost { namespace fusion nil() {} template - nil(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) + nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) {} template - void assign_from_iter(Iterator const& iter) + void assign_from_iter(Iterator const& /*iter*/) { } }; @@ -69,13 +69,13 @@ namespace boost { namespace fusion cons() : car(), cdr() {} - explicit cons(typename detail::call_param::type car) - : car(car), cdr() {} + explicit cons(typename detail::call_param::type in_car) + : car(in_car), cdr() {} cons( - typename detail::call_param::type car - , typename detail::call_param::type cdr) - : car(car), cdr(cdr) {} + typename detail::call_param::type in_car + , typename detail::call_param::type in_cdr) + : car(in_car), cdr(in_cdr) {} template cons(cons const& rhs) @@ -92,7 +92,7 @@ namespace boost { namespace fusion is_convertible // use copy ctor instead , is_convertible // use copy to car instead > - >::type* dummy = 0 + >::type* /*dummy*/ = 0 ) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/container/list/cons_iterator.hpp b/include/boost/fusion/container/list/cons_iterator.hpp index 9d67a649..1eff1535 100644 --- a/include/boost/fusion/container/list/cons_iterator.hpp +++ b/include/boost/fusion/container/list/cons_iterator.hpp @@ -35,8 +35,8 @@ namespace boost { namespace fusion typename add_const::type> identity; - explicit cons_iterator(cons_type& cons) - : cons(cons) {} + explicit cons_iterator(cons_type& in_cons) + : cons(in_cons) {} cons_type& cons; diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index e8284ca8..8eaa6a6f 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -111,7 +111,7 @@ namespace boost { namespace fusion typename add_reference< typename mpl::at::type >::type - at_impl(I index) + at_impl(I /*index*/) { return vec.at_impl(mpl::int_()); } @@ -122,7 +122,7 @@ namespace boost { namespace fusion typename mpl::at::type >::type >::type - at_impl(I index) const + at_impl(I /*index*/) const { return vec.at_impl(mpl::int_()); } diff --git a/include/boost/fusion/container/vector/vector10.hpp b/include/boost/fusion/container/vector/vector10.hpp index 929815ab..f1af70d7 100644 --- a/include/boost/fusion/container/vector/vector10.hpp +++ b/include/boost/fusion/container/vector/vector10.hpp @@ -52,7 +52,7 @@ namespace boost { namespace fusion vector0() {} template - vector0(Sequence const& seq) + vector0(Sequence const& /*seq*/) {} }; diff --git a/include/boost/fusion/container/vector/vector_iterator.hpp b/include/boost/fusion/container/vector/vector_iterator.hpp index d7ba8c88..8faa13ad 100644 --- a/include/boost/fusion/container/vector/vector_iterator.hpp +++ b/include/boost/fusion/container/vector/vector_iterator.hpp @@ -7,11 +7,6 @@ #if !defined(FUSION_VECTOR_ITERATOR_05042005_0635) #define FUSION_VECTOR_ITERATOR_05042005_0635 -#if defined (BOOST_MSVC) -# pragma warning(push) -# pragma warning (disable: 4512) // assignment operator could not be generated. -#endif - #include #include #include @@ -41,15 +36,15 @@ namespace boost { namespace fusion typedef vector_iterator_identity< typename add_const::type, N> identity; - vector_iterator(Vector& vec) - : vec(vec) {} + vector_iterator(Vector& in_vec) + : vec(in_vec) {} Vector& vec; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + vector_iterator& operator= (vector_iterator const&); }; }} -#if defined (BOOST_MSVC) -# pragma warning(pop) -#endif - #endif diff --git a/include/boost/fusion/functional/adapter/fused.hpp b/include/boost/fusion/functional/adapter/fused.hpp index 08e8897a..91ae1f2c 100644 --- a/include/boost/fusion/functional/adapter/fused.hpp +++ b/include/boost/fusion/functional/adapter/fused.hpp @@ -10,10 +10,16 @@ #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED #include +#include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template class fused; @@ -81,5 +87,9 @@ namespace boost { namespace fusion }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/functional/adapter/fused_function_object.hpp b/include/boost/fusion/functional/adapter/fused_function_object.hpp index 12cd1e27..da8ac99b 100644 --- a/include/boost/fusion/functional/adapter/fused_function_object.hpp +++ b/include/boost/fusion/functional/adapter/fused_function_object.hpp @@ -10,10 +10,16 @@ #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED #include +#include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template class fused_function_object; @@ -86,5 +92,9 @@ namespace boost { namespace fusion }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/functional/adapter/fused_procedure.hpp b/include/boost/fusion/functional/adapter/fused_procedure.hpp index 78034b97..10c7c7a0 100644 --- a/include/boost/fusion/functional/adapter/fused_procedure.hpp +++ b/include/boost/fusion/functional/adapter/fused_procedure.hpp @@ -10,10 +10,16 @@ #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED #include +#include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template class fused_procedure; @@ -66,5 +72,9 @@ namespace boost { namespace fusion }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/functional/adapter/unfused.hpp b/include/boost/fusion/functional/adapter/unfused.hpp index 48baf756..b0d02bc4 100755 --- a/include/boost/fusion/functional/adapter/unfused.hpp +++ b/include/boost/fusion/functional/adapter/unfused.hpp @@ -17,11 +17,18 @@ #include +#include + #include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template @@ -87,6 +94,10 @@ namespace boost { namespace fusion }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + namespace boost { template diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 9ee3a7a6..0f19f28f 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -28,6 +28,11 @@ #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { @@ -69,6 +74,10 @@ namespace boost { namespace fusion }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + namespace boost { template diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index f021d923..085beb7e 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -199,6 +199,8 @@ namespace boost { namespace fusion Function(BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M +#if N > 0 + template static inline result_type call(F & f, Sequence & s) @@ -206,6 +208,17 @@ namespace boost { namespace fusion #define M(z,j,data) fusion::at_c(s) return f( BOOST_PP_ENUM(N,M,~) ); } + +#else + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; @@ -245,16 +258,28 @@ namespace boost { namespace fusion Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T)) >::type result_type; +#if N > 0 + template static inline result_type call(F & f, Sequence & s) { -#if N > 0 typename seq::I0 i0 = fusion::begin(s); BOOST_PP_REPEAT_FROM_TO(1,N,M,~) -#endif return f( BOOST_PP_ENUM_PARAMS(N,*i) ); } + +#else + + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; #if N > 0 diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index 24c02c2b..81c33f92 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -118,6 +118,8 @@ namespace boost { namespace fusion Function (BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M +#if N > 0 + template static inline result_type call(F & f, Sequence & s) @@ -126,6 +128,18 @@ namespace boost { namespace fusion return f( BOOST_PP_ENUM(N,M,~) ); #undef M } + +#else + + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; template @@ -138,20 +152,32 @@ namespace boost { namespace fusion Function (BOOST_PP_ENUM_PARAMS(N,typename seq::T)) >::type result_type; +#if N > 0 + template static inline result_type call(F & f, Sequence & s) { -#if N > 0 typename seq::I0 i0 = fusion::begin(s); #define M(z,j,data) \ typename seq::I##j i##j = \ fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j))); BOOST_PP_REPEAT_FROM_TO(1,N,M,~) #undef M -#endif return f( BOOST_PP_ENUM_PARAMS(N,*i) ); } + +#else + + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; template diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp index 502b38aa..ddb5e506 100644 --- a/include/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -106,10 +106,23 @@ namespace boost { namespace fusion template struct invoke_procedure_impl { + +#if N > 0 + static inline void call(Function & f, Sequence & s) { f(BOOST_PP_ENUM(N,M,~)); } + +#else + + static inline void call(Function & f, Sequence & /*s*/) + { + f(); + } + +#endif + }; #if N > 0 @@ -135,15 +148,25 @@ namespace boost { namespace fusion template struct invoke_procedure_impl { + +#if N > 0 + static inline void call(Function & f, Sequence & s) { -#if N > 0 typedef typename result_of::begin::type I0; I0 i0 = fusion::begin(s); BOOST_PP_REPEAT_FROM_TO(1,N,M,~) -#endif f( BOOST_PP_ENUM_PARAMS(N,*i) ); } + +#else + static inline void call(Function & f, Sequence & /*s*/) + { + f(); + } + +#endif + }; #if N > 0 diff --git a/include/boost/fusion/include/has_key.hpp b/include/boost/fusion/include/has_key.hpp index 4eef64a1..b696241d 100644 --- a/include/boost/fusion/include/has_key.hpp +++ b/include/boost/fusion/include/has_key.hpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_INCLUDE_HAS_KEY) -#define FUSION_INCLUDE_EMPTY +#define FUSION_INCLUDE_HAS_KEY #include diff --git a/include/boost/fusion/include/iter_fold.hpp b/include/boost/fusion/include/iter_fold.hpp new file mode 100644 index 00000000..ba6f9b7e --- /dev/null +++ b/include/boost/fusion/include/iter_fold.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ITER_FOLD_HPP +#define BOOST_FUSION_INCLUDE_ITER_FOLD_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/reverse_fold.hpp b/include/boost/fusion/include/reverse_fold.hpp new file mode 100644 index 00000000..f2379e67 --- /dev/null +++ b/include/boost/fusion/include/reverse_fold.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_REVERSE_FOLD_HPP +#define BOOST_FUSION_INCLUDE_REVERSE_FOLD_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/reverse_iter_fold.hpp b/include/boost/fusion/include/reverse_iter_fold.hpp new file mode 100644 index 00000000..ba92d5fe --- /dev/null +++ b/include/boost/fusion/include/reverse_iter_fold.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_REVERSE_ITER_FOLD_HPP +#define BOOST_FUSION_INCLUDE_REVERSE_ITER_FOLD_HPP + +#include + +#endif diff --git a/include/boost/fusion/iterator/basic_iterator.hpp b/include/boost/fusion/iterator/basic_iterator.hpp index 33c514f3..4327a8ce 100644 --- a/include/boost/fusion/iterator/basic_iterator.hpp +++ b/include/boost/fusion/iterator/basic_iterator.hpp @@ -122,8 +122,8 @@ namespace boost { namespace fusion : seq(it.seq) {} - basic_iterator(Seq& seq, int) - : seq(&seq) + basic_iterator(Seq& in_seq, int) + : seq(&in_seq) {} template diff --git a/include/boost/fusion/iterator/mpl/convert_iterator.hpp b/include/boost/fusion/iterator/mpl/convert_iterator.hpp index 5716ce4e..6cec5104 100644 --- a/include/boost/fusion/iterator/mpl/convert_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/convert_iterator.hpp @@ -37,7 +37,7 @@ namespace boost { namespace fusion } static mpl_iterator - call(T const& x, mpl::false_) + call(T const& /*x*/, mpl::false_) { return mpl_iterator(); } diff --git a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp index 150db549..b18ef8f0 100644 --- a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp @@ -16,6 +16,27 @@ #include #include #include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + +template +struct to_mpl_category { + typedef typename mpl::eval_if< + is_base_of, + mpl::random_access_iterator_tag, + mpl::eval_if< + is_base_of, + mpl::bidirectional_iterator_tag, + mpl::forward_iterator_tag + > + >::type type; +}; + +}}} namespace boost { namespace mpl { @@ -23,7 +44,8 @@ namespace boost { namespace mpl struct fusion_iterator { typedef typename fusion::result_of::value_of::type type; - typedef typename fusion::traits::category_of::type category; + typedef typename fusion::traits::category_of::type fusion_category; + typedef typename fusion::detail::to_mpl_category::type category; typedef Iterator iterator; }; diff --git a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp index 6c78408a..40cd96f4 100644 --- a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -50,7 +50,7 @@ namespace boost { namespace fusion { namespace detail { template static bool - call(I1 const& a, I2 const& b) + call(I1 const& /*a*/, I2 const& /*b*/) { return false; } diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp index fb27f15c..0c8a37e4 100644 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -13,6 +13,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4100) // unreferenced formal parameter +#endif namespace boost { namespace fusion { @@ -43,4 +49,8 @@ namespace boost { namespace fusion using operators::operator==; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp index cf285714..a4ad4ee5 100644 --- a/include/boost/fusion/support/pair.hpp +++ b/include/boost/fusion/support/pair.hpp @@ -10,6 +10,12 @@ #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -99,4 +105,8 @@ namespace boost { namespace fusion } }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index a8e2ed07..cba06067 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -46,39 +46,6 @@ namespace boost { namespace fusion namespace detail { BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag) - - template - struct is_specialized - : mpl::false_ - {}; - - template < - class T0, class T1, class T2, class T3, class T4, - class T5, class T6, class T7, class T8, class T9 - > - struct is_specialized > - : mpl::true_ - {}; - - template - struct is_specialized > - : mpl::true_ - {}; - - template <> - struct is_specialized - : mpl::true_ - {}; - - template - struct is_specialized > - : mpl::true_ - {}; - - template - struct is_specialized > - : mpl::true_ - {}; } namespace traits @@ -88,9 +55,7 @@ namespace boost { namespace fusion : mpl::if_< fusion::detail::is_mpl_sequence, mpl::identity, mpl::identity >::type - { - BOOST_MPL_ASSERT_NOT((fusion::detail::is_specialized)); - }; + {}; template struct tag_of >::type> diff --git a/include/boost/fusion/view.hpp b/include/boost/fusion/view.hpp index 12d5cc5d..f1d837cf 100644 --- a/include/boost/fusion/view.hpp +++ b/include/boost/fusion/view.hpp @@ -10,8 +10,10 @@ #include #include #include -#include +#include +#include #include +#include #include #endif diff --git a/include/boost/fusion/view/filter_view/filter_view.hpp b/include/boost/fusion/view/filter_view/filter_view.hpp index 69f17329..76ce031a 100644 --- a/include/boost/fusion/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/view/filter_view/filter_view.hpp @@ -21,7 +21,6 @@ #include #include - namespace boost { namespace fusion { struct filter_view_tag; @@ -46,8 +45,8 @@ namespace boost { namespace fusion typedef typename result_of::end::type last_type; typedef Pred pred_type; - filter_view(Sequence& seq) - : seq(seq) + filter_view(Sequence& in_seq) + : seq(in_seq) {} first_type first() const { return fusion::begin(seq); } diff --git a/include/boost/fusion/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/view/filter_view/filter_view_iterator.hpp index 5d1efc87..8ce63cbd 100644 --- a/include/boost/fusion/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/view/filter_view/filter_view_iterator.hpp @@ -54,10 +54,14 @@ namespace boost { namespace fusion typedef last_iter last_type; typedef Pred pred_type; - filter_iterator(First const& first) - : first(filter::call(first_converter::call(first))) {} + filter_iterator(First const& in_first) + : first(filter::call(first_converter::call(in_first))) {} first_type first; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + filter_iterator& operator= (filter_iterator const&); }; }} diff --git a/include/boost/fusion/view/iterator_range/iterator_range.hpp b/include/boost/fusion/view/iterator_range/iterator_range.hpp index 14bb2457..4d16ca6c 100644 --- a/include/boost/fusion/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range/iterator_range.hpp @@ -17,6 +17,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -35,15 +41,19 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; - iterator_range(First const& first, Last const& last) - : first(convert_iterator::call(first)) - , last(convert_iterator::call(last)) {} + iterator_range(First const& in_first, Last const& in_last) + : first(convert_iterator::call(in_first)) + , last(convert_iterator::call(in_last)) {} begin_type first; end_type last; }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/view/joint_view/joint_view.hpp b/include/boost/fusion/view/joint_view/joint_view.hpp index 48d912cd..e0d5c090 100644 --- a/include/boost/fusion/view/joint_view/joint_view.hpp +++ b/include/boost/fusion/view/joint_view/joint_view.hpp @@ -52,9 +52,9 @@ namespace boost { namespace fusion typedef typename result_of::end::type concat_last_type; typedef typename mpl::plus, result_of::size >::type size; - joint_view(Sequence1& seq1, Sequence2& seq2) - : seq1(seq1) - , seq2(seq2) + joint_view(Sequence1& in_seq1, Sequence2& in_seq2) + : seq1(in_seq1) + , seq2(in_seq2) {} first_type first() const { return fusion::begin(seq1); } @@ -62,6 +62,8 @@ namespace boost { namespace fusion concat_last_type concat_last() const { return fusion::end(seq2); } private: + // silence MSVC warning C4512: assignment operator could not be generated + joint_view& operator= (joint_view const&); typename mpl::if_, Sequence1, Sequence1&>::type seq1; typename mpl::if_, Sequence2, Sequence2&>::type seq2; diff --git a/include/boost/fusion/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/view/joint_view/joint_view_iterator.hpp index 0fd4c636..79b4d115 100644 --- a/include/boost/fusion/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/view/joint_view/joint_view_iterator.hpp @@ -40,13 +40,17 @@ namespace boost { namespace fusion typedef Category category; BOOST_STATIC_ASSERT((!result_of::equal_to::value)); - joint_view_iterator(First const& first, Concat const& concat) - : first(first_converter::call(first)) - , concat(concat_converter::call(concat)) + joint_view_iterator(First const& in_first, Concat const& in_concat) + : first(first_converter::call(in_first)) + , concat(concat_converter::call(in_concat)) {} first_type first; concat_type concat; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + joint_view_iterator& operator= (joint_view_iterator const&); }; }} diff --git a/include/boost/fusion/view/nview/detail/distance_impl.hpp b/include/boost/fusion/view/nview/detail/distance_impl.hpp index 9bc860c5..8b1906f6 100644 --- a/include/boost/fusion/view/nview/detail/distance_impl.hpp +++ b/include/boost/fusion/view/nview/detail/distance_impl.hpp @@ -31,7 +31,7 @@ namespace boost { namespace fusion >::type type; static type - call(First const& first, Last const& last) + call(First const& /*first*/, Last const& /*last*/) { return type(); } diff --git a/include/boost/fusion/view/nview/nview_iterator.hpp b/include/boost/fusion/view/nview/nview_iterator.hpp index 4fc06a85..3b7ec1f9 100644 --- a/include/boost/fusion/view/nview/nview_iterator.hpp +++ b/include/boost/fusion/view/nview/nview_iterator.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef mpl_iterator first_type; - explicit nview_iterator(Sequence& seq) - : seq(seq) {} + explicit nview_iterator(Sequence& in_seq) + : seq(in_seq) {} Sequence& seq; diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp index 050affb1..509db859 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp @@ -37,10 +37,14 @@ namespace boost { namespace fusion mpl::if_, Sequence, sequence_type&>::type stored_seq_type; - repetitive_view(Sequence& seq) - : seq(seq) {} + repetitive_view(Sequence& in_seq) + : seq(in_seq) {} stored_seq_type seq; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + repetitive_view& operator= (repetitive_view const&); }; }} diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp index 9a7334de..4dff006e 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp @@ -35,15 +35,19 @@ namespace boost { namespace fusion typedef typename convert_iterator::type>::type end_type; typedef single_pass_traversal_tag category; - explicit repetitive_view_iterator(Sequence& seq) - : seq(seq), pos(begin(seq)) {} + explicit repetitive_view_iterator(Sequence& in_seq) + : seq(in_seq), pos(begin(in_seq)) {} - repetitive_view_iterator(Sequence& seq, pos_type const& pos) - : seq(seq), pos(pos) {} + repetitive_view_iterator(Sequence& in_seq, pos_type const& in_pos) + : seq(in_seq), pos(in_pos) {} Sequence& seq; pos_type pos; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + repetitive_view_iterator& operator= (repetitive_view_iterator const&); }; }} diff --git a/include/boost/fusion/view/reverse_view/reverse_view.hpp b/include/boost/fusion/view/reverse_view/reverse_view.hpp index 19b51d13..f3e8ffea 100644 --- a/include/boost/fusion/view/reverse_view/reverse_view.hpp +++ b/include/boost/fusion/view/reverse_view/reverse_view.hpp @@ -49,13 +49,17 @@ namespace boost { namespace fusion bidirectional_traversal_tag , typename traits::category_of::type>::value)); - reverse_view(Sequence& seq) - : seq(seq) + reverse_view(Sequence& in_seq) + : seq(in_seq) {} first_type first() const { return fusion::begin(seq); } last_type last() const { return fusion::end(seq); } typename mpl::if_, Sequence, Sequence&>::type seq; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + reverse_view& operator= (reverse_view const&); }; }} diff --git a/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp index af2267e3..ddf2e9be 100644 --- a/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp @@ -41,10 +41,14 @@ namespace boost { namespace fusion bidirectional_traversal_tag , category>::value)); - reverse_view_iterator(First const& first) - : first(converter::call(first)) {} + reverse_view_iterator(First const& in_first) + : first(converter::call(in_first)) {} first_type first; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + reverse_view_iterator& operator= (reverse_view_iterator const&); }; }} diff --git a/include/boost/fusion/view/single_view/single_view.hpp b/include/boost/fusion/view/single_view/single_view.hpp index 7c10afe6..03087cd6 100644 --- a/include/boost/fusion/view/single_view/single_view.hpp +++ b/include/boost/fusion/view/single_view/single_view.hpp @@ -15,6 +15,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -35,8 +41,8 @@ namespace boost { namespace fusion single_view() : val() {} - explicit single_view(typename detail::call_param::type val) - : val(val) {} + explicit single_view(typename detail::call_param::type in_val) + : val(in_val) {} value_type val; }; @@ -49,6 +55,10 @@ namespace boost { namespace fusion } }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/view/single_view/single_view_iterator.hpp b/include/boost/fusion/view/single_view/single_view_iterator.hpp index 1a44bb15..fa249015 100644 --- a/include/boost/fusion/view/single_view/single_view_iterator.hpp +++ b/include/boost/fusion/view/single_view/single_view_iterator.hpp @@ -12,6 +12,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -42,6 +48,10 @@ namespace boost { namespace fusion }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/view/transform_view/transform_view.hpp b/include/boost/fusion/view/transform_view/transform_view.hpp index 78b6560e..3d330b76 100644 --- a/include/boost/fusion/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/view/transform_view/transform_view.hpp @@ -55,10 +55,10 @@ namespace boost { namespace fusion typedef Sequence2 sequence2_type; typedef F transform_type; - transform_view(Sequence1& seq1, Sequence2& seq2, F const& binop) + transform_view(Sequence1& in_seq1, Sequence2& in_seq2, F const& binop) : f(binop) - , seq1(seq1) - , seq2(seq2) + , seq1(in_seq1) + , seq2(in_seq2) {} first1_type first1() const { return fusion::begin(seq1); } @@ -69,6 +69,10 @@ namespace boost { namespace fusion transform_type f; typename mpl::if_, Sequence1, Sequence1&>::type seq1; typename mpl::if_, Sequence2, Sequence2&>::type seq2; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + transform_view& operator= (transform_view const&); }; // Unary Version @@ -90,9 +94,9 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef F transform_type; - transform_view(Sequence& seq, F const& f) - : seq(seq) - , f(f) + transform_view(Sequence& in_seq, F const& in_f) + : seq(in_seq) + , f(in_f) {} first_type first() const { return fusion::begin(seq); } diff --git a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp index fde67323..2c31b261 100644 --- a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -34,8 +34,8 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; typedef F transform_type; - transform_view_iterator(First const& first, F const& f) - : first(converter::call(first)), f(f) {} + transform_view_iterator(First const& in_first, F const& in_f) + : first(converter::call(in_first)), f(in_f) {} first_type first; transform_type f; @@ -60,8 +60,8 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; typedef F transform_type; - transform_view_iterator2(First1 const& first1, First2 const& first2, F const& f) - : first1(converter1::call(first1)), first2(converter2::call(first2)), f(f) {} + transform_view_iterator2(First1 const& in_first1, First2 const& in_first2, F const& in_f) + : first1(converter1::call(in_first1)), first2(converter2::call(in_first2)), f(in_f) {} first1_type first1; first2_type first2; diff --git a/include/boost/fusion/view/zip_view/detail/distance_impl.hpp b/include/boost/fusion/view/zip_view/detail/distance_impl.hpp index 61447278..b2febd5b 100644 --- a/include/boost/fusion/view/zip_view/detail/distance_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/distance_impl.hpp @@ -70,7 +70,7 @@ namespace boost { namespace fusion { : detail::zip_view_iterator_distance::type { static typename detail::zip_view_iterator_distance::type - call(It1 const& it1, It2 const& it2) + call(It1 const& /*it1*/, It2 const& /*it2*/) { return typename detail::zip_view_iterator_distance::type(); } diff --git a/test/Jamfile b/test/Jamfile index 2ddf7912..dba81ec5 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -23,9 +23,11 @@ import testing ; [ run algorithm/find.cpp : : : : ] [ run algorithm/find_if.cpp : : : : ] [ run algorithm/fold.cpp : : : : ] + [ run algorithm/fold2.cpp : : : : ] [ run algorithm/for_each.cpp : : : : ] [ run algorithm/insert.cpp : : : : ] [ run algorithm/insert_range.cpp : : : : ] + [ run algorithm/iter_fold.cpp : : : : ] [ run algorithm/none.cpp : : : : ] [ run algorithm/pop_back.cpp : : : : ] [ run algorithm/pop_front.cpp : : : : ] @@ -35,6 +37,8 @@ import testing ; [ run algorithm/remove_if.cpp : : : : ] [ run algorithm/replace.cpp : : : : ] [ run algorithm/replace_if.cpp : : : : ] + [ run algorithm/reverse_fold.cpp : : : : ] + [ run algorithm/reverse_iter_fold.cpp : : : : ] [ run algorithm/reverse.cpp : : : : ] [ run algorithm/transform.cpp : : : : ] [ run algorithm/join.cpp : : : : ] diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp index a4c7f32c..7bfefdaa 100644 --- a/test/algorithm/all.cpp +++ b/test/algorithm/all.cpp @@ -16,8 +16,8 @@ namespace { struct search_for { - explicit search_for(int search) - : search(search) + explicit search_for(int in_search) + : search(in_search) {} template diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp index 69f114f8..e2c42f8d 100644 --- a/test/algorithm/any.cpp +++ b/test/algorithm/any.cpp @@ -17,8 +17,8 @@ namespace { struct search_for { - explicit search_for(int search) - : search(search) + explicit search_for(int in_search) + : search(in_search) {} template diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index ec51b406..38178c75 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -43,7 +43,7 @@ struct add_ints_only template State - operator()(State const& state, T const& x) const + operator()(State const& state, T const& /*x*/) const { return state; } @@ -81,8 +81,8 @@ struct count_ints typename result::type operator()(CountT const&, T const&) const { - typedef typename result::type result; - return result(); + typedef typename result::type result_; + return result_(); } }; diff --git a/test/algorithm/fold.hpp b/test/algorithm/fold.hpp new file mode 100644 index 00000000..df42d7d7 --- /dev/null +++ b/test/algorithm/fold.hpp @@ -0,0 +1,212 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace mpl=boost::mpl; +namespace fusion=boost::fusion; + +#ifdef BOOST_FUSION_TEST_REVERSE_FOLD +# ifdef BOOST_FUSION_TEST_ITER_FOLD +# define BOOST_FUSION_TEST_FOLD_NAME reverse_iter_fold +# else +# define BOOST_FUSION_TEST_FOLD_NAME reverse_fold +# endif +#else +# ifdef BOOST_FUSION_TEST_ITER_FOLD +# define BOOST_FUSION_TEST_FOLD_NAME iter_fold +# else +# define BOOST_FUSION_TEST_FOLD_NAME fold +# endif +#endif + +struct sum +{ + template + struct result; + + template + struct result + : fusion::result_of::make_pair< + mpl::int_< + boost::remove_reference< + State + >::type::first_type::value+1 + > + , int + > + { + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + }; + +#ifdef BOOST_FUSION_TEST_ITER_FOLD + template + typename result::type + operator()(State const& state, It const& it)const + { + static const int n=State::first_type::value; + return fusion::make_pair >( + state.second+fusion::deref(it)*n); + } +#else + template + typename result::type + operator()(State const& state, int const& e)const + { + static const int n=State::first_type::value; + return fusion::make_pair >(state.second+e*n); + } +#endif +}; + +struct meta_sum +{ + template + struct result; + + template + struct result + { + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + + typedef typename boost::remove_reference::type state; + static const int n=mpl::front::type::value; + +#ifdef BOOST_FUSION_TEST_ITER_FOLD + typedef typename + fusion::result_of::value_of< + typename boost::remove_reference::type + >::type + t; +#else + typedef typename boost::remove_reference::type t; +#endif + + typedef + mpl::vector< + mpl::int_ + , mpl::int_< + mpl::back::type::value+t::value*n + > + > + type; + }; + + template + typename result::type + operator()(State const&, T const&)const; +}; + +struct fold_test_n +{ + template + void + operator()(I)const + { + static const int n=I::value; + typedef mpl::range_c range; + + static const int squares_sum=n*(n+1)*(2*n+1)/6; + + { + mpl::range_c init_range; + typename fusion::result_of::as_vector< + typename mpl::transform< + range + , mpl::always + , mpl::back_inserter > + >::type + >::type vec( +#ifdef BOOST_FUSION_TEST_REVERSE_FOLD + fusion::reverse(init_range) +#else + init_range +#endif + ); + + int result=BOOST_FUSION_TEST_FOLD_NAME( + vec, + fusion::make_pair >(0), + sum()).second; + std::cout << n << ": " << result << std::endl; + BOOST_TEST(result==squares_sum); + } + + { + typedef typename +#ifdef BOOST_FUSION_TEST_REVERSE_FOLD + fusion::result_of::as_vector< + typename mpl::copy< + mpl::range_c + , mpl::front_inserter > + >::type + >::type +#else + fusion::result_of::as_vector >::type +#endif + vec; + + typedef + boost::is_same< + typename fusion::result_of::BOOST_FUSION_TEST_FOLD_NAME< + vec + , mpl::vector, mpl::int_<0> > + , meta_sum + >::type + , typename mpl::if_c< + !n + , mpl::vector, mpl::int_<0> > const& + , mpl::vector, mpl::int_ > + >::type + > + result_test; + + BOOST_MPL_ASSERT((result_test)); + } + } +}; + +int +main() +{ + mpl::for_each >(fold_test_n()); + + return boost::report_errors(); +} + +#undef BOOST_FUSION_TEST_FOLD_NAME + diff --git a/test/algorithm/fold2.cpp b/test/algorithm/fold2.cpp new file mode 100644 index 00000000..51ef975d --- /dev/null +++ b/test/algorithm/fold2.cpp @@ -0,0 +1,8 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#include "fold.hpp" diff --git a/test/algorithm/iter_fold.cpp b/test/algorithm/iter_fold.cpp new file mode 100644 index 00000000..b37f90db --- /dev/null +++ b/test/algorithm/iter_fold.cpp @@ -0,0 +1,10 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#define BOOST_FUSION_TEST_ITER_FOLD +#include "fold.hpp" +#undef BOOST_FUSION_TEST_ITER_FOLD diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp index ec5676b6..148ad652 100644 --- a/test/algorithm/none.cpp +++ b/test/algorithm/none.cpp @@ -16,8 +16,8 @@ namespace { struct search_for { - explicit search_for(int search) - : search(search) + explicit search_for(int in_search) + : search(in_search) {} template diff --git a/test/algorithm/reverse_fold.cpp b/test/algorithm/reverse_fold.cpp new file mode 100644 index 00000000..7742bca8 --- /dev/null +++ b/test/algorithm/reverse_fold.cpp @@ -0,0 +1,10 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#define BOOST_FUSION_TEST_REVERSE_FOLD +#include "fold.hpp" +#undef BOOST_FUSION_TEST_REVERSE_FOLD diff --git a/test/algorithm/reverse_iter_fold.cpp b/test/algorithm/reverse_iter_fold.cpp new file mode 100644 index 00000000..31e4cf26 --- /dev/null +++ b/test/algorithm/reverse_iter_fold.cpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#define BOOST_FUSION_TEST_REVERSE_FOLD +#define BOOST_FUSION_TEST_ITER_FOLD +#include "fold.hpp" +#undef BOOST_FUSION_TEST_ITER_FOLD +#undef BOOST_FUSION_TEST_REVERSE_FOLD diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp deleted file mode 100644 index 4dcc7449..00000000 --- a/test/functional/make_unfused_generic.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_generic< test_func<> >::type unfused_func = - fusion::make_unfused_generic(f); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_generic(ref(f_nc)); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_generic(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(const_(unfused_func)(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused_lvalue_args.cpp deleted file mode 100644 index af94256c..00000000 --- a/test/functional/make_unfused_lvalue_args.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value + elem; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_lvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_lvalue_args(f); - - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_lvalue_args(ref(f_nc)); - - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_lvalue_args(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; - long expected; - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(const_(unfused_func)(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); - - return boost::report_errors(); -} - diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp deleted file mode 100644 index 383fcc0b..00000000 --- a/test/functional/make_unfused_rvalue_args.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_rvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_rvalue_args(f); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_rvalue_args(ref(f_nc)); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_rvalue_args(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(const_(unfused_func)(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp deleted file mode 100644 index f1f86515..00000000 --- a/test/functional/unfused_generic.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self (Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - - template - struct result; - - template struct result< Self(T0,T1) > - : mpl::identity - { }; - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_generic< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_generic< test_func<> > unfused_func; - fusion::unfused_generic< test_func & > unfused_func_ref(f); - fusion::unfused_generic< test_func<> const > unfused_func_c; - fusion::unfused_generic< test_func<> > const unfused_func_c2; - fusion::unfused_generic< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - // also test const lvalues to pick up compiler deficiencies in that area - int const clvalue_1 = 1; - long const clvalue_2 = 2; - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,clvalue_1,clvalue_2,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_c(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c2(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 10*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp deleted file mode 100644 index e7972499..00000000 --- a/test/functional/unfused_lvalue_args.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include - -#include - -#include -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value + elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_lvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_lvalue_args< test_func<> > unfused_func; - fusion::unfused_lvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_lvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_lvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_lvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; - long expected; - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c2(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+5*sizeof(lv1) && lv2 == 3+5*sizeof(lv2) && lv3 == 7+5*sizeof(lv3)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp deleted file mode 100644 index 349bf7fa..00000000 --- a/test/functional/unfused_rvalue_args.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_rvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_rvalue_args< test_func<> > unfused_func; - fusion::unfused_rvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_rvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_rvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_rvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c2(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index 2d49f77f..85783c86 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -15,6 +15,7 @@ #include #include +#include #include diff --git a/test/sequence/adapt_assoc_class.cpp b/test/sequence/adapt_assoc_class.cpp index cdbdd36b..67f1c657 100644 --- a/test/sequence/adapt_assoc_class.cpp +++ b/test/sequence/adapt_assoc_class.cpp @@ -31,7 +31,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -98,14 +98,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_class_named.cpp b/test/sequence/adapt_assoc_class_named.cpp index 8f6ec592..0979970c 100644 --- a/test/sequence/adapt_assoc_class_named.cpp +++ b/test/sequence/adapt_assoc_class_named.cpp @@ -31,7 +31,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -63,7 +63,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep(123, 456); adapted::point p(basep); @@ -102,7 +102,7 @@ main() // conversion from adapted::point to vector ns::point basep(5, 3); adapted::point p(basep); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } @@ -110,7 +110,7 @@ main() // conversion from adated::point to list ns::point basep(5, 3); adapted::point p(basep); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp index b9000bbd..2e3f14ea 100644 --- a/test/sequence/adapt_assoc_struct.cpp +++ b/test/sequence/adapt_assoc_struct.cpp @@ -104,14 +104,14 @@ main() { // conversion from ns::point to vector ns::point p = {5, 3}; - fusion::vector v(p); + fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p = {5, 3}; - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_struct_named.cpp b/test/sequence/adapt_assoc_struct_named.cpp index 2cbf2f53..3ae0a380 100644 --- a/test/sequence/adapt_assoc_struct_named.cpp +++ b/test/sequence/adapt_assoc_struct_named.cpp @@ -48,7 +48,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep = {123, 456}; adapted::point p(basep); @@ -88,7 +88,7 @@ main() // conversion from adapted::point to vector ns::point basep = {5, 3}; adapted::point p(basep); - vector v(p); + vector v(p); v = p; } @@ -96,7 +96,7 @@ main() // conversion from adapted::point to list ns::point basep = {5, 3}; adapted::point p(basep); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_tpl_class.cpp b/test/sequence/adapt_assoc_tpl_class.cpp index 31a37d4c..d0647ae7 100644 --- a/test/sequence/adapt_assoc_tpl_class.cpp +++ b/test/sequence/adapt_assoc_tpl_class.cpp @@ -32,7 +32,7 @@ namespace ns public: point() : x(0), y(0) {} - point(X x, Y y) : x(x), y(y) {} + point(X in_x, Y in_y) : x(in_x), y(in_y) {} X get_x() const { return x; } Y get_y() const { return y; } @@ -102,14 +102,14 @@ main() { // conversion from point to vector point p(5, 3); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } { // conversion from point to list point p(5, 3); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_tpl_struct.cpp b/test/sequence/adapt_assoc_tpl_struct.cpp index b148c22b..ca751283 100644 --- a/test/sequence/adapt_assoc_tpl_struct.cpp +++ b/test/sequence/adapt_assoc_tpl_struct.cpp @@ -102,14 +102,14 @@ main() { // conversion from point to vector point p = {5, 3}; - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p = {5, 3}; - list l(p); + list l(p); l = p; } diff --git a/test/sequence/adapt_class.cpp b/test/sequence/adapt_class.cpp index d0081808..a584f49f 100644 --- a/test/sequence/adapt_class.cpp +++ b/test/sequence/adapt_class.cpp @@ -38,7 +38,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -106,14 +106,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - fusion::vector v(p); + fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_class_named.cpp b/test/sequence/adapt_class_named.cpp index a67d68da..8321a8be 100644 --- a/test/sequence/adapt_class_named.cpp +++ b/test/sequence/adapt_class_named.cpp @@ -38,7 +38,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -71,7 +71,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep(123, 456); adapted::point p(basep); @@ -112,7 +112,7 @@ main() ns::point basep(5, 3); adapted::point p(basep); - fusion::vector v(p); + fusion::vector v(p); v = p; } @@ -121,7 +121,7 @@ main() ns::point basep(5, 3); adapted::point p(basep); - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index 981b9c13..7fd5cac0 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -97,14 +97,14 @@ main() { // conversion from ns::point to vector ns::point p = {5, 3}; - fusion::vector v(p); + fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p = {5, 3}; - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_struct_named.cpp b/test/sequence/adapt_struct_named.cpp index 8dabc56c..ec803854 100644 --- a/test/sequence/adapt_struct_named.cpp +++ b/test/sequence/adapt_struct_named.cpp @@ -63,7 +63,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep = {123, 456}; adapted::point p(basep); @@ -103,7 +103,7 @@ main() // conversion from adapted::point to vector ns::point basep = {5, 3}; adapted::point p(basep); - fusion::vector v(p); + fusion::vector v(p); v = p; } @@ -111,7 +111,7 @@ main() // conversion from adapted::point to list ns::point basep = {5, 3}; adapted::point p(basep); - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_tpl_class.cpp b/test/sequence/adapt_tpl_class.cpp index 7a1b0be9..2478a570 100644 --- a/test/sequence/adapt_tpl_class.cpp +++ b/test/sequence/adapt_tpl_class.cpp @@ -40,7 +40,7 @@ namespace ns public: point() : x(0), y(0) {} - point(X x, Y y) : x(x), y(y) {} + point(X x_, Y y_) : x(x_), y(y_) {} X get_x() const { return x; } Y get_y() const { return y; } @@ -110,14 +110,14 @@ main() { // conversion from point to vector point p(5, 3); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } { // conversion from point to list point p(5, 3); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_tpl_struct.cpp b/test/sequence/adapt_tpl_struct.cpp index 13e4446c..0218fbae 100644 --- a/test/sequence/adapt_tpl_struct.cpp +++ b/test/sequence/adapt_tpl_struct.cpp @@ -97,14 +97,14 @@ main() { // conversion from point to vector point p = {5, 3}; - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p = {5, 3}; - list l(p); + list l(p); l = p; } diff --git a/test/sequence/cons.cpp b/test/sequence/cons.cpp index 3bd6437f..8df03a63 100644 --- a/test/sequence/cons.cpp +++ b/test/sequence/cons.cpp @@ -26,6 +26,7 @@ main() { using namespace boost::fusion; using boost::is_same; + namespace fusion = boost::fusion; std::cout << tuple_open('['); std::cout << tuple_close(']'); @@ -39,18 +40,18 @@ main() make_cons(1, make_cons(hello)); BOOST_TEST((*begin(ns) == 1)); - BOOST_TEST((*next(begin(ns)) == hello)); + BOOST_TEST((*fusion::next(begin(ns)) == hello)); *begin(ns) += 1; - *next(begin(ns)) += ' '; + *fusion::next(begin(ns)) += ' '; BOOST_TEST((*begin(ns) == 2)); - BOOST_TEST((*next(begin(ns)) == hello + ' ')); + BOOST_TEST((*fusion::next(begin(ns)) == hello + ' ')); for_each(ns, boost::lambda::_1 += ' '); BOOST_TEST((*begin(ns) == 2 + ' ')); - BOOST_TEST((*next(begin(ns)) == hello + ' ' + ' ')); + BOOST_TEST((*fusion::next(begin(ns)) == hello + ' ' + ' ')); } { diff --git a/test/sequence/define_assoc_struct.cpp b/test/sequence/define_assoc_struct.cpp index bacc0bff..6f6326ec 100644 --- a/test/sequence/define_assoc_struct.cpp +++ b/test/sequence/define_assoc_struct.cpp @@ -75,14 +75,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/define_assoc_tpl_struct.cpp b/test/sequence/define_assoc_tpl_struct.cpp index 88623bcb..ec3c7f3b 100644 --- a/test/sequence/define_assoc_tpl_struct.cpp +++ b/test/sequence/define_assoc_tpl_struct.cpp @@ -79,14 +79,14 @@ main() { // conversion from point to vector point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/define_struct.cpp b/test/sequence/define_struct.cpp index 8aa535e8..8d839781 100644 --- a/test/sequence/define_struct.cpp +++ b/test/sequence/define_struct.cpp @@ -72,14 +72,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/define_tpl_struct.cpp b/test/sequence/define_tpl_struct.cpp index 58c1758b..a2193709 100644 --- a/test/sequence/define_tpl_struct.cpp +++ b/test/sequence/define_tpl_struct.cpp @@ -75,14 +75,14 @@ main() { // conversion from point to vector point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp index 5c4c1a0c..c052a37b 100644 --- a/test/sequence/filter_view.cpp +++ b/test/sequence/filter_view.cpp @@ -80,7 +80,9 @@ main() BOOST_STATIC_ASSERT(result_of::size::value == 4); } - { + //cschmidt: This is illegal C++. ADL instantiates less<_, int_<3> > - which + //leads to compile errors. + /*{ // $$$ JDG $$$ For some obscure reason, EDG based compilers // (e.g. comeau 4.3.3, intel) have problems with this. // vc7.1 and g++ are ok. The errors from comeau are useless. @@ -94,7 +96,7 @@ main() BOOST_TEST((view == make_vector(1, 2, 0, -1))); BOOST_STATIC_ASSERT(result_of::size::value == 4); #endif - } + }*/ { // Previous filtering out all values caused problems as begin was not equal to end diff --git a/test/sequence/iterator_range.cpp b/test/sequence/iterator_range.cpp index d4062840..51288dbd 100644 --- a/test/sequence/iterator_range.cpp +++ b/test/sequence/iterator_range.cpp @@ -28,6 +28,7 @@ int main() { using namespace boost::fusion; + namespace fusion = boost::fusion; std::cout << tuple_open('['); std::cout << tuple_close(']'); @@ -104,9 +105,9 @@ main() BOOST_MPL_ASSERT((boost::is_same::type>::type>::type, char>)); std::cout << deref_data(begin(r)) << std::endl; - std::cout << deref_data(next(begin(r))) << std::endl; + std::cout << deref_data(fusion::next(begin(r))) << std::endl; BOOST_TEST((deref_data(begin(r)) == "foo")); - BOOST_TEST((deref_data(next(begin(r))) == 'x')); + BOOST_TEST((deref_data(fusion::next(begin(r))) == 'x')); } return boost::report_errors(); diff --git a/test/sequence/joint_view.cpp b/test/sequence/joint_view.cpp index e53d333c..900b9a68 100644 --- a/test/sequence/joint_view.cpp +++ b/test/sequence/joint_view.cpp @@ -34,6 +34,7 @@ int main() { using namespace boost::fusion; + namespace fusion = boost::fusion; std::cout << tuple_open('['); std::cout << tuple_close(']'); @@ -175,11 +176,11 @@ main() , float>)); std::cout << deref_data(begin(j)) << std::endl; - std::cout << deref_data(boost::fusion::next(begin(j))) << std::endl; - std::cout << deref_data(next(boost::fusion::next(begin(j)))) << std::endl; + std::cout << deref_data(fusion::next(begin(j))) << std::endl; + std::cout << deref_data(fusion::next(fusion::next(begin(j)))) << std::endl; BOOST_TEST((deref_data(begin(j)) == 0)); - BOOST_TEST((deref_data(boost::fusion::next(begin(j))) == "foo")); - BOOST_TEST((deref_data(next(boost::fusion::next(begin(j)))) == 1.3f)); + BOOST_TEST((deref_data(fusion::next(begin(j))) == "foo")); + BOOST_TEST((deref_data(fusion::next(fusion::next(begin(j)))) == 1.3f)); } return boost::report_errors(); diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp index d4e1cfa3..e419a7e0 100644 --- a/test/sequence/map.cpp +++ b/test/sequence/map.cpp @@ -29,6 +29,7 @@ main() using namespace boost::fusion; using namespace boost; using namespace std; + namespace fusion = boost::fusion; using boost::fusion::pair; using boost::fusion::make_pair; @@ -66,15 +67,15 @@ main() BOOST_STATIC_ASSERT((!result_of::has_key::value)); std::cout << deref_data(begin(m)) << std::endl; - std::cout << deref_data(next(begin(m))) << std::endl; + std::cout << deref_data(fusion::next(begin(m))) << std::endl; BOOST_TEST(deref_data(begin(m)) == 'X'); - BOOST_TEST(deref_data(next(begin(m))) == "Men"); + BOOST_TEST(deref_data(fusion::next(begin(m))) == "Men"); - BOOST_STATIC_ASSERT((is_same::type>::type, int>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, double>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type, char>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, std::string>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, int>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, double>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, char>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, std::string>::value)); } { diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp index 4c51a18c..c5b58b45 100644 --- a/test/sequence/misc.hpp +++ b/test/sequence/misc.hpp @@ -151,7 +151,7 @@ test() { // testing front & back typedef FUSION_SEQUENCE tup; - tup t(1, 2.2, "Kimpo"); + tup t(1, 2.2f, "Kimpo"); BOOST_TEST(front(t) == 1); #if !defined(FUSION_FORWARD_ONLY) // list has no back diff --git a/test/sequence/nview.cpp b/test/sequence/nview.cpp index e8110f79..dab982a5 100644 --- a/test/sequence/nview.cpp +++ b/test/sequence/nview.cpp @@ -26,7 +26,7 @@ BOOST_FUSION_ADAPT_STRUCT( (int, int_) (std::string, string_) (double, double_) -); +) namespace fusion = boost::fusion; diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp index 7be0b078..4a39c89a 100644 --- a/test/sequence/set.cpp +++ b/test/sequence/set.cpp @@ -29,6 +29,7 @@ main() using namespace boost::fusion; using namespace boost; using namespace std; + namespace fusion = boost::fusion; using boost::fusion::pair; using boost::fusion::make_pair; @@ -61,15 +62,15 @@ main() BOOST_STATIC_ASSERT((!result_of::has_key::value)); std::cout << deref_data(begin(m)) << std::endl; - std::cout << deref_data(next(begin(m))) << std::endl; + std::cout << deref_data(fusion::next(begin(m))) << std::endl; BOOST_TEST(deref_data(begin(m)) == 123); - BOOST_TEST(deref_data(next(begin(m))) == "Hola"); + BOOST_TEST(deref_data(fusion::next(begin(m))) == "Hola"); - BOOST_STATIC_ASSERT((is_same::type>::type, int>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, std::string>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type, int>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, std::string>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, int>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, std::string>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, int>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, std::string>::value)); } { diff --git a/test/sequence/tr1_tuple_auto_conv.cpp b/test/sequence/tr1_tuple_auto_conv.cpp index 0c20fa3f..010d4c71 100644 --- a/test/sequence/tr1_tuple_auto_conv.cpp +++ b/test/sequence/tr1_tuple_auto_conv.cpp @@ -48,7 +48,7 @@ namespace Core } // namespace Core -int main(int argc, char* argv[]) +int main() { std::tr1::tuple test = Core::Demo(); return 0; From 02b2a88beaf38b67149f86ff7e395da9d9360547 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sat, 3 Jul 2010 20:31:16 +0000 Subject: [PATCH 37/82] merged fusion from the trunk (2) [SVN r63562] --- .../iteration/functions/iter_fold.html | 253 ++++++++++++++++++ .../iteration/functions/reverse_fold.html | 253 ++++++++++++++++++ .../functions/reverse_iter_fold.html | 253 ++++++++++++++++++ .../iteration/metafunctions/iter_fold.html | 213 +++++++++++++++ .../iteration/metafunctions/reverse_fold.html | 213 +++++++++++++++ .../metafunctions/reverse_iter_fold.html | 213 +++++++++++++++ 6 files changed, 1398 insertions(+) create mode 100644 doc/html/fusion/algorithm/iteration/functions/iter_fold.html create mode 100644 doc/html/fusion/algorithm/iteration/functions/reverse_fold.html create mode 100644 doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html create mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html create mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html create mode 100644 doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html new file mode 100644 index 00000000..3999f587 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html @@ -0,0 +1,253 @@ + + + +iter_fold + + + + + + + + + + + + + + + +
        Boost C++ LibrariesHomeLibrariesPeopleFAQMore
        +
        +
        +PrevUpHomeNext +
        +
        + +

        + +

        +
        + + Description +
        +

        +

        +

        + For a sequence seq, + initial state initial_state, + and binary function object or function pointer f, + iter_fold returns the result of the repeated application + of binary f to the + result of the previous f + invocation (inital_state + if it is the first call) and iterators on each element of seq. +

        +

        + +

        +
        + + Synopsis +
        +

        + +

        +
        template<
        +    typename Sequence,
        +    typename State,
        +    typename F
        +    >
        +typename result_of::iter_fold<Sequence, State const, F>::type iter_fold(
        +    Sequence& seq, State const& initial_state, F f);
        +    
        +template<
        +    typename Sequence,
        +    typename State,
        +    typename F
        +    >
        +typename result_of::iter_fold<Sequence const, State const, F>::type iter_fold(
        +    Sequence const& seq, State const& initial_state, F f);
        +
        +

        +

        +
        +

        Table 1.39. Parameters

        +
        +++++ + + + + + + + + + + + + + + + + + + + + + + +
        +

        + Parameter +

        +
        +

        + Requirement +

        +
        +

        + Description +

        +
        +

        + seq +

        +
        +

        + A model of Forward + Sequence +

        +
        +

        + Operation's argument +

        +
        +

        + initial_state +

        +
        +

        + Any type +

        +
        +

        + Initial state +

        +
        +

        + f +

        +
        +

        + f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression + for current state s + of type S, + and for each iterator it + of type It + on an element of seq +

        +
        +

        + Operation's argument +

        +
        +
        +


        + +

        +
        + + Expression + Semantics +
        +

        + +

        +
        iter_fold(seq, initial_state, f);
        +
        +

        +

        +

        + Return type: Any type +

        +

        +

        +

        + Semantics: Equivalent to f(... + f(f(initial_state,it1),it2) ...itN) where it1 ...itN + are consecutive iterators on the elements of seq. +

        +

        + +

        +
        + + Complexity +
        +

        +

        +

        + Linear, exactly result_of::size<Sequence>::value applications of f. +

        +

        + +

        +
        + + Header +
        +

        + +

        +
        #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
        +#include <boost/fusion/include/iter_fold.hpp>
        +
        +

        + +

        +
        + + Example +
        +

        + +

        +
        struct make_string
        +{
        +    typedef std::string result_type;
        +
        +    template<typename T>
        +    std::string operator()(const std::string& str, const T& t) const
        +    {
        +        return str + boost::lexical_cast<std::string>(deref(t));
        +    }
        +};
        +...
        +const vector<int,int> vec(1,2);
        +assert(iter_fold(vec,std::string(""), make_string()) == "12");
        +
        +

        +

        +
        + + + +
        +
        +
        +PrevUpHomeNext +
        + + diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html new file mode 100644 index 00000000..184365dc --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html @@ -0,0 +1,253 @@ + + + +reverse_fold + + + + + + + + + + + + + + + +
        Boost C++ LibrariesHomeLibrariesPeopleFAQMore
        +
        +
        +PrevUpHomeNext +
        +
        + +

        + +

        +
        + + Description +
        +

        +

        +

        + For a sequence seq, + initial state initial_state, + and binary function object or function pointer f, + reverse_fold returns the result of the repeated + application of binary f + to the result of the previous f + invocation (inital_state + if it is the first call) and each element of seq. +

        +

        + +

        +
        + + Synopsis +
        +

        + +

        +
        template<
        +    typename Sequence,
        +    typename State,
        +    typename F
        +    >
        +typename result_of::reverse_fold<Sequence, State const, F>::type reverse_fold(
        +    Sequence& seq, State const& initial_state, F f);
        +    
        +template<
        +    typename Sequence,
        +    typename State,
        +    typename F
        +    >
        +typename result_of::reverse_fold<Sequence const, State const, F>::type reverse_fold(
        +    Sequence const& seq, State const& initial_state, F f);
        +
        +

        +

        +
        +

        Table 1.38. Parameters

        +
        +++++ + + + + + + + + + + + + + + + + + + + + + + +
        +

        + Parameter +

        +
        +

        + Requirement +

        +
        +

        + Description +

        +
        +

        + seq +

        +
        +

        + A model of Forward + Sequence +

        +
        +

        + Operation's argument +

        +
        +

        + initial_state +

        +
        +

        + Any type +

        +
        +

        + Initial state +

        +
        +

        + f +

        +
        +

        + f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E + in seq +

        +
        +

        + Operation's argument +

        +
        +
        +


        + +

        +
        + + Expression + Semantics +
        +

        + +

        +
        reverse_fold(seq, initial_state, f);
        +
        +

        +

        +

        + Return type: Any type +

        +

        +

        +

        + Semantics: Equivalent to f(... + f(f(initial_state,eN),eN-1) ...e1) where e1 ...eN + are the consecutive elements of seq. +

        +

        + +

        +
        + + Complexity +
        +

        +

        +

        + Linear, exactly result_of::size<Sequence>::value applications of f. +

        +

        + +

        +
        + + Header +
        +

        + +

        +
        #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
        +#include <boost/fusion/include/reverse_fold.hpp>
        +
        +

        + +

        +
        + + Example +
        +

        + +

        +
        struct make_string
        +{
        +    typedef std::string result_type;
        +
        +    template<typename T>
        +    std::string operator()(const std::string& str, const T& t) const
        +    {
        +        return str + boost::lexical_cast<std::string>(t);
        +    }
        +};
        +...
        +const vector<int,int> vec(1,2);
        +assert(reverse_fold(vec,std::string(""), make_string()) == "21");
        +
        +

        +

        +
        + + + +
        +
        +
        +PrevUpHomeNext +
        + + diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html new file mode 100644 index 00000000..54c8bdca --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html @@ -0,0 +1,253 @@ + + + +reverse_iter_fold + + + + + + + + + + + + + + + +
        Boost C++ LibrariesHomeLibrariesPeopleFAQMore
        +
        +
        +PrevUpHomeNext +
        +
        + +

        + +

        +
        + + Description +
        +

        +

        +

        + For a sequence seq, + initial state initial_state, + and binary function object or function pointer f, + reverse_iter_fold returns the result of the repeated + application of binary f + to the result of the previous f + invocation (inital_state + if it is the first call) and iterators on each element of seq. +

        +

        + +

        +
        + + Synopsis +
        +

        + +

        +
        template<
        +    typename Sequence,
        +    typename State,
        +    typename F
        +    >
        +typename result_of::reverse_iter_fold<Sequence, State const, F>::type reverse_iter_fold(
        +    Sequence& seq, State const& initial_state, F f);
        +    
        +template<
        +    typename Sequence,
        +    typename State,
        +    typename F
        +    >
        +typename result_of::reverse_iter_fold<Sequence const, State const, F>::type reverse_iter_fold(
        +    Sequence const& seq, State const& initial_state, F f);
        +
        +

        +

        +
        +

        Table 1.40. Parameters

        +
        +++++ + + + + + + + + + + + + + + + + + + + + + + +
        +

        + Parameter +

        +
        +

        + Requirement +

        +
        +

        + Description +

        +
        +

        + seq +

        +
        +

        + A model of Forward + Sequence +

        +
        +

        + Operation's argument +

        +
        +

        + initial_state +

        +
        +

        + Any type +

        +
        +

        + Initial state +

        +
        +

        + f +

        +
        +

        + f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression + for current state s + of type S, + and for each iterator it + of type It + on an element of seq +

        +
        +

        + Operation's argument +

        +
        +
        +


        + +

        +
        + + Expression + Semantics +
        +

        + +

        +
        reverse_iter_fold(seq, initial_state, f);
        +
        +

        +

        +

        + Return type: Any type +

        +

        +

        +

        + Semantics: Equivalent to f(... + f(f(initial_state,itN),itN-1) ...it1) where it1 + ...itN are consecutive iterators on the elements of seq. +

        +

        + +

        +
        + + Complexity +
        +

        +

        +

        + Linear, exactly result_of::size<Sequence>::value applications of f. +

        +

        + +

        +
        + + Header +
        +

        + +

        +
        #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
        +#include <boost/fusion/include/reverse_iter_fold.hpp>
        +
        +

        + +

        +
        + + Example +
        +

        + +

        +
        struct make_string
        +{
        +    typedef std::string result_type;
        +
        +    template<typename T>
        +    std::string operator()(const std::string& str, const T& t) const
        +    {
        +        return str + boost::lexical_cast<std::string>(deref(t));
        +    }
        +};
        +...
        +const vector<int,int> vec(1,2);
        +assert(reverse_iter_fold(vec,std::string(""), make_string()) == "21");
        +
        +

        +

        +
        + + + +
        +
        +
        +PrevUpHomeNext +
        + + diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html new file mode 100644 index 00000000..d07c9c4a --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html @@ -0,0 +1,213 @@ + + + +iter_fold + + + + + + + + + + + + + + + +
        Boost C++ LibrariesHomeLibrariesPeopleFAQMore
        +
        +
        +PrevUpHomeNext +
        +
        + +

        + +

        +
        + + Description +
        +

        +

        +

        + Returns the result type of iter_fold. +

        +

        + +

        +
        + + Synopsis +
        +

        + +

        +
        template<
        +    typename Sequence,
        +    typename State,
        +    typename F>
        +struct iter_fold
        +{
        +    typedef unspecified type;
        +};
        +
        +

        +

        +
        +

        Table 1.45. Parameters

        +
        +++++ + + + + + + + + + + + + + + + + + + + + + + +
        +

        + Parameter +

        +
        +

        + Requirement +

        +
        +

        + Description +

        +
        +

        + Sequence +

        +
        +

        + A model of Forward + Sequence +

        +
        +

        + The sequence to iterate +

        +
        +

        + State +

        +
        +

        + Any type +

        +
        +

        + The initial state for the first application of F +

        +
        +

        + F +

        +
        +

        + boost::result_of<F(S,It)>::type is the return type + of f(s,it) with current state s of type S, and an iterator it of type It on an element of seq +

        +
        +

        + The operation to be applied on traversal +

        +
        +
        +


        + +

        +
        + + Expression + Semantics +
        +

        + +

        +
        iter_fold<Sequence, State, F>::type
        +
        +

        +

        +

        + Return type: Any type +

        +

        +

        +

        + Semantics: Returns the result of applying + iter_fold to a sequence of + type Sequence, with + an initial state of type State + and binary function object or function pointer of type F. +

        +

        + +

        +
        + + Complexity +
        +

        +

        +

        + Linear, exactly result_of::size<Sequence>::value applications of F. +

        +

        + +

        +
        + + Header +
        +

        + +

        +
        #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
        +#include <boost/fusion/include/iter_fold.hpp>
        +
        +

        +

        +
        + + + +
        +
        +
        +PrevUpHomeNext +
        + + diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html new file mode 100644 index 00000000..771ff2f6 --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html @@ -0,0 +1,213 @@ + + + +reverse_fold + + + + + + + + + + + + + + + +
        Boost C++ LibrariesHomeLibrariesPeopleFAQMore
        +
        +
        +PrevUpHomeNext +
        +
        + +

        + +

        +
        + + Description +
        +

        +

        +

        + Returns the result type of reverse_fold. +

        +

        + +

        +
        + + Synopsis +
        +

        + +

        +
        template<
        +    typename Sequence,
        +    typename State,
        +    typename F>
        +struct reverse_fold
        +{
        +    typedef unspecified type;
        +};
        +
        +

        +

        +
        +

        Table 1.44. Parameters

        +
        +++++ + + + + + + + + + + + + + + + + + + + + + + +
        +

        + Parameter +

        +
        +

        + Requirement +

        +
        +

        + Description +

        +
        +

        + Sequence +

        +
        +

        + A model of Forward + Sequence +

        +
        +

        + The sequence to iterate +

        +
        +

        + State +

        +
        +

        + Any type +

        +
        +

        + The initial state for the first application of F +

        +
        +

        + F +

        +
        +

        + boost::result_of<F(S,E)>::type is the return type + of f(s,e) with current state s of type S, and an element e of type E in seq +

        +
        +

        + The operation to be applied on traversal +

        +
        +
        +


        + +

        +
        + + Expression + Semantics +
        +

        + +

        +
        reverse_fold<Sequence, State, F>::type
        +
        +

        +

        +

        + Return type: Any type +

        +

        +

        +

        + Semantics: Returns the result of applying + reverse_fold to a sequence + of type Sequence, with + an initial state of type State + and binary function object or function pointer of type F. +

        +

        + +

        +
        + + Complexity +
        +

        +

        +

        + Linear, exactly result_of::size<Sequence>::value applications of F. +

        +

        + +

        +
        + + Header +
        +

        + +

        +
        #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
        +#include <boost/fusion/include/reverse_fold.hpp>
        +
        +

        +

        +
        + + + +
        +
        +
        +PrevUpHomeNext +
        + + diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html new file mode 100644 index 00000000..e950bb7b --- /dev/null +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html @@ -0,0 +1,213 @@ + + + +reverse_iter_fold + + + + + + + + + + + + + + + +
        Boost C++ LibrariesHomeLibrariesPeopleFAQMore
        +
        +
        +PrevUpHomeNext +
        +
        + +

        + +

        +
        + + Description +
        +

        +

        +

        + Returns the result type of reverse_iter_fold. +

        +

        + +

        +
        + + Synopsis +
        +

        + +

        +
        template<
        +    typename Sequence,
        +    typename State,
        +    typename F>
        +struct reverse_iter_fold
        +{
        +    typedef unspecified type;
        +};
        +
        +

        +

        +
        +

        Table 1.46. Parameters

        +
        +++++ + + + + + + + + + + + + + + + + + + + + + + +
        +

        + Parameter +

        +
        +

        + Requirement +

        +
        +

        + Description +

        +
        +

        + Sequence +

        +
        +

        + A model of Forward + Sequence +

        +
        +

        + The sequence to iterate +

        +
        +

        + State +

        +
        +

        + Any type +

        +
        +

        + The initial state for the first application of F +

        +
        +

        + F +

        +
        +

        + boost::result_of<F(S,It)>::type is the return type + of f(s,it) with current state s of type S, and an iterator it of type It on an element of seq +

        +
        +

        + The operation to be applied on traversal +

        +
        +
        +


        + +

        +
        + + Expression + Semantics +
        +

        + +

        +
        reverse_iter_fold<Sequence, State, F>::type
        +
        +

        +

        +

        + Return type: Any type +

        +

        +

        +

        + Semantics: Returns the result of applying + reverse_iter_fold to a sequence + of type Sequence, with + an initial state of type State + and binary function object or function pointer of type F. +

        +

        + +

        +
        + + Complexity +
        +

        +

        +

        + Linear, exactly result_of::size<Sequence>::value applications of F. +

        +

        + +

        +
        + + Header +
        +

        + +

        +
        #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
        +#include <boost/fusion/include/reverse_iter_fold.hpp>
        +
        +

        +

        +
        + + + +
        +
        +
        +PrevUpHomeNext +
        + + From 32adb572905655580bfc9a05bfa89cc1f2ddf8b3 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 4 Jul 2010 20:19:01 +0000 Subject: [PATCH 38/82] Merge rebuilt fusion documentation. [SVN r63631] --- doc/html/fusion/acknowledgements.html | 10 +++--- doc/html/fusion/adapted.html | 14 ++++---- doc/html/fusion/adapted/adapt_assoc.html | 20 ++++++------ .../adapted/adapt_assoc_struct_named.html | 20 ++++++------ .../adapted/adapt_assoc_tpl_struct.html | 20 ++++++------ doc/html/fusion/adapted/adapt_struct.html | 20 ++++++------ .../fusion/adapted/adapt_struct_named.html | 20 ++++++------ doc/html/fusion/adapted/adapt_tpl_struct.html | 20 ++++++------ doc/html/fusion/adapted/array.html | 16 +++++----- doc/html/fusion/adapted/boost__array.html | 18 +++++------ doc/html/fusion/adapted/boost__tuple.html | 18 +++++------ .../fusion/adapted/define_assoc_struct.html | 20 ++++++------ .../adapted/define_assoc_tpl_struct.html | 20 ++++++------ doc/html/fusion/adapted/define_struct.html | 20 ++++++------ .../fusion/adapted/define_tpl_struct.html | 20 ++++++------ doc/html/fusion/adapted/mpl_sequence.html | 18 +++++------ doc/html/fusion/adapted/std__pair.html | 18 +++++------ doc/html/fusion/algorithm.html | 16 +++++----- doc/html/fusion/algorithm/iteration.html | 12 +++---- .../fusion/algorithm/iteration/functions.html | 10 +++--- .../iteration/functions/accumulate.html | 24 +++++++------- .../algorithm/iteration/functions/fold.html | 24 +++++++------- .../iteration/functions/for_each.html | 24 +++++++------- .../iteration/functions/iter_fold.html | 24 +++++++------- .../iteration/functions/reverse_fold.html | 24 +++++++------- .../functions/reverse_iter_fold.html | 24 +++++++------- .../algorithm/iteration/metafunctions.html | 10 +++--- .../iteration/metafunctions/accumulate.html | 22 ++++++------- .../iteration/metafunctions/fold.html | 22 ++++++------- .../iteration/metafunctions/for_each.html | 22 ++++++------- .../iteration/metafunctions/iter_fold.html | 22 ++++++------- .../iteration/metafunctions/reverse_fold.html | 22 ++++++------- .../metafunctions/reverse_iter_fold.html | 22 ++++++------- doc/html/fusion/algorithm/query.html | 12 +++---- .../fusion/algorithm/query/functions.html | 10 +++--- .../fusion/algorithm/query/functions/all.html | 24 +++++++------- .../fusion/algorithm/query/functions/any.html | 24 +++++++------- .../algorithm/query/functions/count.html | 24 +++++++------- .../algorithm/query/functions/count_if.html | 24 +++++++------- .../algorithm/query/functions/find.html | 24 +++++++------- .../algorithm/query/functions/find_if.html | 22 ++++++------- .../algorithm/query/functions/none.html | 24 +++++++------- .../fusion/algorithm/query/metafunctions.html | 10 +++--- .../algorithm/query/metafunctions/all.html | 22 ++++++------- .../algorithm/query/metafunctions/any.html | 22 ++++++------- .../algorithm/query/metafunctions/count.html | 22 ++++++------- .../query/metafunctions/count_if.html | 22 ++++++------- .../algorithm/query/metafunctions/find.html | 22 ++++++------- .../query/metafunctions/find_if.html | 22 ++++++------- .../algorithm/query/metafunctions/none.html | 22 ++++++------- doc/html/fusion/algorithm/transformation.html | 14 ++++---- .../algorithm/transformation/functions.html | 10 +++--- .../transformation/functions/clear.html | 24 +++++++------- .../transformation/functions/erase.html | 24 +++++++------- .../transformation/functions/erase_key.html | 24 +++++++------- .../transformation/functions/filter.html | 24 +++++++------- .../transformation/functions/filter_if.html | 24 +++++++------- .../transformation/functions/insert.html | 24 +++++++------- .../functions/insert_range.html | 24 +++++++------- .../transformation/functions/join.html | 24 +++++++------- .../transformation/functions/pop_back.html | 24 +++++++------- .../transformation/functions/pop_front.html | 24 +++++++------- .../transformation/functions/push_back.html | 24 +++++++------- .../transformation/functions/push_front.html | 24 +++++++------- .../transformation/functions/remove.html | 24 +++++++------- .../transformation/functions/remove_if.html | 24 +++++++------- .../transformation/functions/replace.html | 24 +++++++------- .../transformation/functions/replace_if.html | 24 +++++++------- .../transformation/functions/reverse.html | 24 +++++++------- .../transformation/functions/transform.html | 28 ++++++++-------- .../transformation/functions/zip.html | 24 +++++++------- .../transformation/metafunctions.html | 10 +++--- .../transformation/metafunctions/clear.html | 22 ++++++------- .../transformation/metafunctions/erase.html | 22 ++++++------- .../metafunctions/erase_key.html | 22 ++++++------- .../transformation/metafunctions/filter.html | 22 ++++++------- .../metafunctions/filter_if.html | 22 ++++++------- .../transformation/metafunctions/insert.html | 22 ++++++------- .../metafunctions/insert_range.html | 22 ++++++------- .../transformation/metafunctions/join.html | 20 ++++++------ .../metafunctions/pop_back.html | 22 ++++++------- .../metafunctions/pop_front.html | 22 ++++++------- .../metafunctions/push_back.html | 22 ++++++------- .../metafunctions/push_front.html | 22 ++++++------- .../transformation/metafunctions/remove.html | 22 ++++++------- .../metafunctions/remove_if.html | 22 ++++++------- .../transformation/metafunctions/replace.html | 22 ++++++------- .../metafunctions/replace_if.html | 22 ++++++------- .../transformation/metafunctions/reverse.html | 22 ++++++------- .../metafunctions/transform.html | 28 ++++++++-------- .../transformation/metafunctions/zip.html | 20 ++++++------ doc/html/fusion/change_log.html | 10 +++--- doc/html/fusion/container.html | 12 +++---- doc/html/fusion/container/cons.html | 26 +++++++-------- doc/html/fusion/container/conversion.html | 12 +++---- .../container/conversion/functions.html | 10 +++--- .../conversion/functions/as_list.html | 22 ++++++------- .../conversion/functions/as_map.html | 22 ++++++------- .../conversion/functions/as_set.html | 22 ++++++------- .../conversion/functions/as_vector.html | 22 ++++++------- .../container/conversion/metafunctions.html | 10 +++--- .../conversion/metafunctions/as_list.html | 22 ++++++------- .../conversion/metafunctions/as_map.html | 22 ++++++------- .../conversion/metafunctions/as_set.html | 22 ++++++------- .../conversion/metafunctions/as_vector.html | 22 ++++++------- doc/html/fusion/container/generation.html | 12 +++---- .../container/generation/functions.html | 10 +++--- .../generation/functions/list_tie.html | 22 ++++++------- .../generation/functions/make_cons.html | 24 +++++++------- .../generation/functions/make_list.html | 24 +++++++------- .../generation/functions/make_map.html | 24 +++++++------- .../generation/functions/make_set.html | 24 +++++++------- .../generation/functions/make_vector.html | 24 +++++++------- .../generation/functions/map_tie.html | 22 ++++++------- .../container/generation/functions/tiers.html | 16 +++++----- .../generation/functions/vector_tie.html | 22 ++++++------- .../container/generation/metafunctions.html | 10 +++--- .../generation/metafunctions/list_tie.html | 22 ++++++------- .../generation/metafunctions/make_cons.html | 22 ++++++------- .../generation/metafunctions/make_list.html | 22 ++++++------- .../generation/metafunctions/make_map.html | 24 +++++++------- .../generation/metafunctions/make_set.html | 22 ++++++------- .../generation/metafunctions/make_vector.html | 22 ++++++------- .../generation/metafunctions/map_tie.html | 22 ++++++------- .../generation/metafunctions/vector_tie.html | 22 ++++++------- doc/html/fusion/container/list.html | 24 +++++++------- doc/html/fusion/container/map.html | 24 +++++++------- doc/html/fusion/container/set.html | 24 +++++++------- doc/html/fusion/container/vector.html | 24 +++++++------- doc/html/fusion/extension.html | 10 +++--- doc/html/fusion/extension/ext_full.html | 28 ++++++++-------- .../fusion/extension/iterator_facade.html | 24 +++++++------- .../fusion/extension/sequence_facade.html | 24 +++++++------- doc/html/fusion/functional.html | 18 +++++------ doc/html/fusion/functional/adapters.html | 10 +++--- .../fusion/functional/adapters/fused.html | 28 ++++++++-------- .../adapters/fused_function_object.html | 28 ++++++++-------- .../functional/adapters/fused_procedure.html | 28 ++++++++-------- .../fusion/functional/adapters/limits.html | 14 ++++---- .../fusion/functional/adapters/unfused.html | 28 ++++++++-------- .../functional/adapters/unfused_typed.html | 30 ++++++++--------- doc/html/fusion/functional/concepts.html | 10 +++--- .../fusion/functional/concepts/callable.html | 16 +++++----- .../functional/concepts/def_callable.html | 20 ++++++------ doc/html/fusion/functional/concepts/poly.html | 20 ++++++------ .../functional/concepts/reg_callable.html | 20 ++++++------ doc/html/fusion/functional/generation.html | 10 +++--- .../functional/generation/functions.html | 10 +++--- .../generation/functions/mk_fused.html | 24 +++++++------- .../generation/functions/mk_fused_fobj.html | 24 +++++++------- .../generation/functions/mk_fused_proc.html | 24 +++++++------- .../generation/functions/mk_unfused.html | 24 +++++++------- .../functional/generation/metafunctions.html | 10 +++--- .../generation/metafunctions/mk_fused.html | 18 +++++------ .../metafunctions/mk_fused_fobj.html | 18 +++++------ .../metafunctions/mk_fused_proc.html | 18 +++++------ .../generation/metafunctions/mk_unfused.html | 18 +++++------ doc/html/fusion/functional/invocation.html | 10 +++--- .../functional/invocation/functions.html | 10 +++--- .../invocation/functions/invoke.html | 24 +++++++------- .../invocation/functions/invoke_fobj.html | 24 +++++++------- .../invocation/functions/invoke_proc.html | 24 +++++++------- .../fusion/functional/invocation/limits.html | 14 ++++---- .../functional/invocation/metafunctions.html | 10 +++--- .../invocation/metafunctions/invoke.html | 16 +++++----- .../invocation/metafunctions/invoke_fobj.html | 16 +++++----- .../invocation/metafunctions/invoke_proc.html | 16 +++++----- doc/html/fusion/introduction.html | 14 ++++---- doc/html/fusion/iterator.html | 12 +++---- doc/html/fusion/iterator/concepts.html | 10 +++--- .../concepts/associative_iterator.html | 20 ++++++------ .../concepts/bidirectional_iterator.html | 24 +++++++------- .../iterator/concepts/forward_iterator.html | 22 ++++++------- .../concepts/random_access_iterator.html | 20 ++++++------ doc/html/fusion/iterator/functions.html | 10 +++--- .../fusion/iterator/functions/advance.html | 22 ++++++------- .../fusion/iterator/functions/advance_c.html | 22 ++++++------- doc/html/fusion/iterator/functions/deref.html | 22 ++++++------- .../fusion/iterator/functions/deref_data.html | 22 ++++++------- .../fusion/iterator/functions/distance.html | 22 ++++++------- doc/html/fusion/iterator/functions/next.html | 22 ++++++------- doc/html/fusion/iterator/functions/prior.html | 22 ++++++------- doc/html/fusion/iterator/metafunctions.html | 10 +++--- .../iterator/metafunctions/advance.html | 22 ++++++------- .../iterator/metafunctions/advance_c.html | 22 ++++++------- .../fusion/iterator/metafunctions/deref.html | 22 ++++++------- .../iterator/metafunctions/deref_data.html | 22 ++++++------- .../iterator/metafunctions/distance.html | 22 ++++++------- .../iterator/metafunctions/equal_to.html | 22 ++++++------- .../fusion/iterator/metafunctions/key_of.html | 22 ++++++------- .../fusion/iterator/metafunctions/next.html | 22 ++++++------- .../fusion/iterator/metafunctions/prior.html | 22 ++++++------- .../iterator/metafunctions/value_of.html | 22 ++++++------- .../iterator/metafunctions/value_of_data.html | 22 ++++++------- doc/html/fusion/iterator/operator.html | 10 +++--- .../iterator/operator/operator_equality.html | 20 ++++++------ .../operator/operator_inequality.html | 20 ++++++------ .../operator/operator_unary_star.html | 22 ++++++------- doc/html/fusion/notes.html | 26 +++++++-------- doc/html/fusion/organization.html | 20 ++++++------ doc/html/fusion/preface.html | 20 ++++++------ doc/html/fusion/quick_start.html | 28 ++++++++-------- doc/html/fusion/references.html | 10 +++--- doc/html/fusion/sequence.html | 12 +++---- doc/html/fusion/sequence/concepts.html | 14 ++++---- .../concepts/associative_sequence.html | 24 ++++++-------- .../concepts/bidirectional_sequence.html | 28 +++++++--------- .../sequence/concepts/forward_sequence.html | 32 +++++++------------ .../concepts/random_access_sequence.html | 28 +++++++--------- doc/html/fusion/sequence/intrinsic.html | 16 +++++----- .../fusion/sequence/intrinsic/functions.html | 10 +++--- .../sequence/intrinsic/functions/at.html | 22 ++++++------- .../sequence/intrinsic/functions/at_c.html | 22 ++++++------- .../sequence/intrinsic/functions/at_key.html | 22 ++++++------- .../sequence/intrinsic/functions/back.html | 22 ++++++------- .../sequence/intrinsic/functions/begin.html | 22 ++++++------- .../sequence/intrinsic/functions/empty.html | 22 ++++++------- .../sequence/intrinsic/functions/end.html | 22 ++++++------- .../sequence/intrinsic/functions/front.html | 22 ++++++------- .../sequence/intrinsic/functions/has_key.html | 22 ++++++------- .../sequence/intrinsic/functions/size.html | 22 ++++++------- .../sequence/intrinsic/functions/swap.html | 20 ++++++------ .../sequence/intrinsic/metafunctions.html | 10 +++--- .../sequence/intrinsic/metafunctions/at.html | 26 +++++++-------- .../intrinsic/metafunctions/at_c.html | 26 +++++++-------- .../intrinsic/metafunctions/at_key.html | 26 +++++++-------- .../intrinsic/metafunctions/back.html | 22 ++++++------- .../intrinsic/metafunctions/begin.html | 22 ++++++------- .../intrinsic/metafunctions/empty.html | 22 ++++++------- .../sequence/intrinsic/metafunctions/end.html | 22 ++++++------- .../intrinsic/metafunctions/front.html | 22 ++++++------- .../intrinsic/metafunctions/has_key.html | 22 ++++++------- .../intrinsic/metafunctions/size.html | 22 ++++++------- .../intrinsic/metafunctions/swap.html | 20 ++++++------ .../intrinsic/metafunctions/value_at.html | 22 ++++++------- .../intrinsic/metafunctions/value_at_c.html | 22 ++++++------- .../intrinsic/metafunctions/value_at_key.html | 22 ++++++------- doc/html/fusion/sequence/operator.html | 10 +++--- .../fusion/sequence/operator/comparison.html | 12 +++---- .../sequence/operator/comparison/equal.html | 22 ++++++------- .../operator/comparison/greater_than.html | 20 ++++++------ .../comparison/greater_than_equal.html | 20 ++++++------ .../operator/comparison/less_than.html | 20 ++++++------ .../operator/comparison/less_than_equal.html | 20 ++++++------ .../operator/comparison/not_equal.html | 20 ++++++------ doc/html/fusion/sequence/operator/i_o.html | 12 +++---- doc/html/fusion/sequence/operator/i_o/in.html | 22 ++++++------- .../fusion/sequence/operator/i_o/out.html | 22 ++++++------- doc/html/fusion/support.html | 10 +++--- doc/html/fusion/support/category_of.html | 22 ++++++------- doc/html/fusion/support/deduce.html | 20 ++++++------ doc/html/fusion/support/deduce_sequence.html | 20 ++++++------ doc/html/fusion/support/is_sequence.html | 22 ++++++------- doc/html/fusion/support/is_view.html | 22 ++++++------- doc/html/fusion/support/pair.html | 22 ++++++------- doc/html/fusion/support/tag_of.html | 22 ++++++------- doc/html/fusion/tuple.html | 10 +++--- .../fusion/tuple/class_template_tuple.html | 12 +++---- .../class_template_tuple/construction.html | 14 ++++---- .../class_template_tuple/element_access.html | 14 ++++---- .../relational_operators.html | 14 ++++---- .../tuple_creation_functions.html | 14 ++++---- .../tuple_helper_classes.html | 14 ++++---- doc/html/fusion/tuple/pairs.html | 14 ++++---- doc/html/fusion/view.html | 13 ++++---- doc/html/fusion/view/filter_view.html | 28 +++++++--------- doc/html/fusion/view/iterator_range.html | 28 +++++++--------- doc/html/fusion/view/joint_view.html | 28 +++++++--------- doc/html/fusion/view/nview.html | 30 ++++++++--------- doc/html/fusion/view/reverse_view.html | 24 +++++++------- doc/html/fusion/view/single_view.html | 24 +++++++------- doc/html/fusion/view/transform_view.html | 32 +++++++------------ doc/html/fusion/view/zip_view.html | 26 +++++++-------- doc/html/index.html | 15 +++++---- 274 files changed, 2737 insertions(+), 2807 deletions(-) diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 844907ad..edfd5305 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -2,8 +2,8 @@ Acknowledgements - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -52,7 +52,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 5d07b5bf..93d735eb 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -2,25 +2,25 @@ Adapted - - + + - + - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -56,7 +56,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

        - + Header

        #include <boost/fusion/adapted.hpp>
        @@ -92,7 +92,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index b9968dab..cd8b5532 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -2,8 +2,8 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -37,7 +37,7 @@ Sequence.

        - + Synopsis
        BOOST_FUSION_ADAPT_ASSOC_STRUCT(
        @@ -48,7 +48,7 @@
             )
         
        - + Semantics

        @@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

        - + Header
        #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
         #include <boost/fusion/include/adapt_assoc_struct.hpp>
         
        - + Example
        namespace demo
        @@ -111,7 +111,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html index 2a8996cf..68347b63 100644 --- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html +++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html @@ -2,8 +2,8 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

        - + Synopsis
        BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
        @@ -58,7 +58,7 @@
             )
         
        - + Semantics

        @@ -83,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

        - + Header
        #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
         #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
         
        - + Example
        namespace demo
        @@ -127,7 +127,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html index 296ee714..90b6ba83 100644 --- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html @@ -2,8 +2,8 @@ BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -38,7 +38,7 @@ Sequence.

        - + Synopsis
        BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
        @@ -50,7 +50,7 @@
             )
         
        - + Semantics

        @@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

        - + Header
        #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
         #include <boost/fusion/include/adapt_assoc_struct.hpp>
         
        - + Example
        namespace demo
        @@ -119,7 +119,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html index a1d4e37f..002a4baf 100644 --- a/doc/html/fusion/adapted/adapt_struct.html +++ b/doc/html/fusion/adapted/adapt_struct.html @@ -2,8 +2,8 @@ BOOST_FUSION_ADAPT_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -36,7 +36,7 @@ Access Sequence.

        - + Synopsis
        BOOST_FUSION_ADAPT_STRUCT(
        @@ -47,7 +47,7 @@
             )
         
        - + Semantics

        @@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

        - + Header
        #include <boost/fusion/adapted/struct/adapt_struct.hpp>
         #include <boost/fusion/include/adapt_struct.hpp>
         
        - + Example
        namespace demo
        @@ -100,7 +100,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html index 9f96e242..cec997b8 100644 --- a/doc/html/fusion/adapted/adapt_struct_named.html +++ b/doc/html/fusion/adapted/adapt_struct_named.html @@ -2,8 +2,8 @@ BOOST_FUSION_ADAPT_STRUCT_NAMED - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

        - + Synopsis
        BOOST_FUSION_ADAPT_STRUCT_NAMED(
        @@ -57,7 +57,7 @@
             )
         
        - + Semantics

        @@ -81,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

        - + Header
        #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
         #include <boost/fusion/include/adapt_struct_named.hpp>
         
        - + Example
        namespace demo
        @@ -119,7 +119,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html index 01c916c3..8674f25c 100644 --- a/doc/html/fusion/adapted/adapt_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_tpl_struct.html @@ -2,8 +2,8 @@ BOOST_FUSION_ADAPT_TPL_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -37,7 +37,7 @@ Sequence.

        - + Synopsis
        BOOST_FUSION_ADAPT_TPL_STRUCT(
        @@ -49,7 +49,7 @@
             )
         
        - + Semantics

        @@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

        - + Header
        #include <boost/fusion/adapted/struct/adapt_struct.hpp>
         #include <boost/fusion/include/adapt_struct.hpp>
         
        - + Example
        namespace demo
        @@ -108,7 +108,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html index d95c88d5..f4016a64 100644 --- a/doc/html/fusion/adapted/array.html +++ b/doc/html/fusion/adapted/array.html @@ -2,8 +2,8 @@ Array - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -32,14 +32,14 @@ Access Sequence.

        - + Header
        #include <boost/fusion/adapted/array.hpp>
         #include <boost/fusion/include/array.hpp>
         
        - + Model of
        • @@ -47,7 +47,7 @@ Access Sequence
        - + Example
        int arr[3] = {1,2,3};
        @@ -70,7 +70,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html index 0d1ab2ce..17236087 100644 --- a/doc/html/fusion/adapted/boost__array.html +++ b/doc/html/fusion/adapted/boost__array.html @@ -2,8 +2,8 @@ boost::array - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -33,14 +33,14 @@ Access Sequence.

        - + Header
        #include <boost/fusion/adapted/boost_array.hpp>
         #include <boost/fusion/include/boost_array.hpp>
         
        - + Model of
        • @@ -48,7 +48,7 @@ Access Sequence
        - + Example
        boost::array<int,3> arr = {{1,2,3}};
        @@ -60,7 +60,7 @@
         std::cout << at_c<2>(arr) << std::endl;
         
        - + See also

        @@ -78,7 +78,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index f28859e2..a02ffb29 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -2,8 +2,8 @@ boost::tuple - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -33,21 +33,21 @@ Sequence.

        - + Header
        #include <boost/fusion/adapted/boost_tuple.hpp>
         #include <boost/fusion/include/boost_tuple.hpp>
         
        - + Model of
        - + Example
        boost::tuple<int,std::string> example_tuple(101, "hello");
        @@ -55,7 +55,7 @@
         std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
         
        - + See also

        @@ -74,7 +74,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index caf565a4..8b6aac90 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -2,8 +2,8 @@ BOOST_FUSION_DEFINE_ASSOC_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -38,7 +38,7 @@ Sequence.

        - + Synopsis
        BOOST_FUSION_DEFINE_ASSOC_STRUCT(
        @@ -68,7 +68,7 @@
         
         
        - + Expression Semantics
        @@ -182,14 +182,14 @@
        - + Header
        #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
         #include <boost/fusion/include/define_assoc_struct.hpp>
         
        - + Example
        namespace keys
        @@ -216,7 +216,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html index 3e56a19d..07771317 100644 --- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html +++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html @@ -2,8 +2,8 @@ BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -38,7 +38,7 @@ Sequence.

        - + Synopsis
        BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
        @@ -73,7 +73,7 @@
         
         
        - + Expression Semantics
        @@ -187,14 +187,14 @@
        - + Header
        #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
         #include <boost/fusion/include/define_assoc_struct.hpp>
         
        - + Example
        namespace keys
        @@ -221,7 +221,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html index bd327f58..81e13e92 100644 --- a/doc/html/fusion/adapted/define_struct.html +++ b/doc/html/fusion/adapted/define_struct.html @@ -2,8 +2,8 @@ BOOST_FUSION_DEFINE_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -37,7 +37,7 @@ Access Sequence.

        - + Synopsis
        BOOST_FUSION_DEFINE_STRUCT(
        @@ -67,7 +67,7 @@
         
         
        - + Expression Semantics
        @@ -178,14 +178,14 @@
        - + Header
        #include <boost/fusion/adapted/struct/define_struct.hpp>
         #include <boost/fusion/include/define_struct.hpp>
         
        - + Example
        // demo::employee is a Fusion sequence
        @@ -206,7 +206,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html index 3388fb5c..bc5f68fb 100644 --- a/doc/html/fusion/adapted/define_tpl_struct.html +++ b/doc/html/fusion/adapted/define_tpl_struct.html @@ -2,8 +2,8 @@ BOOST_FUSION_DEFINE_TPL_STRUCT - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -37,7 +37,7 @@ Access Sequence.

        - + Synopsis
        BOOST_FUSION_DEFINE_TPL_STRUCT(
        @@ -72,7 +72,7 @@
         
         
        - + Expression Semantics
        @@ -183,14 +183,14 @@
        - + Header
        #include <boost/fusion/adapted/struct/define_struct.hpp>
         #include <boost/fusion/include/define_struct.hpp>
         
        - + Example
        // Any instantiated demo::employee is a Fusion sequence
        @@ -211,7 +211,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index d6e200f4..94fb0c3d 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -2,8 +2,8 @@ mpl sequence - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -32,14 +32,14 @@ sequences fully conforming fusion sequences.

        - + Header
        #include <boost/fusion/adapted/mpl.hpp>
         #include <boost/fusion/include/mpl.hpp>
         
        - + Model of
          @@ -60,7 +60,7 @@
        - + Example
        mpl::vector_c<int, 123, 456> vec_c;
        @@ -73,7 +73,7 @@
         std::cout << at_c<1>(v) << std::endl;
         
        - + See also

        @@ -91,7 +91,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 36548e6e..acf19709 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -2,8 +2,8 @@ std::pair - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -33,14 +33,14 @@ Access Sequence.

        - + Header
        #include <boost/fusion/adapted/std_pair.hpp>
         #include <boost/fusion/include/std_pair.hpp>
         
        - + Model of
        • @@ -48,7 +48,7 @@ Access Sequence
        - + Example
        std::pair<int, std::string> p(123, "Hola!!!");
        @@ -57,7 +57,7 @@
         std::cout << p << std::endl;
         
        - + See also

        @@ -77,7 +77,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index f338790f..0455a817 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -2,8 +2,8 @@ Algorithm - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -44,7 +44,7 @@

        - + Lazy Evaluation

        @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

        - + Sequence Extension

        @@ -87,7 +87,7 @@ functions to convert back to the original sequence type.

        - + Header

        #include <boost/fusion/algorithm.hpp>
        @@ -105,7 +105,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html index 03c5901e..09ca97de 100644 --- a/doc/html/fusion/algorithm/iteration.html +++ b/doc/html/fusion/algorithm/iteration.html @@ -2,8 +2,8 @@ Iteration - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

        - + Header
        #include <boost/fusion/algorithm/iteration.hpp>
        @@ -53,7 +53,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html index efda40f5..6c4da02b 100644 --- a/doc/html/fusion/algorithm/iteration/functions.html +++ b/doc/html/fusion/algorithm/iteration/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -46,7 +46,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index 4bffdb23..50dddf2a 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -2,8 +2,8 @@ accumulate - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -49,7 +49,7 @@

        - + Synopsis

        @@ -74,7 +74,7 @@

        -

        Table 1.41. Parameters

        +

        Table 1.41. Parameters

        @@ -163,7 +163,7 @@

        - + Expression Semantics
        @@ -188,7 +188,7 @@

        - + Complexity

        @@ -200,7 +200,7 @@

        - + Header

        @@ -213,7 +213,7 @@

        - + Example

        @@ -247,7 +247,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html index 56889767..031ad78a 100644 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -2,8 +2,8 @@ fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -49,7 +49,7 @@

        - + Synopsis

        @@ -74,7 +74,7 @@

        -

        Table 1.37. Parameters

        +

        Table 1.37. Parameters

        @@ -163,7 +163,7 @@

        - + Expression Semantics
        @@ -188,7 +188,7 @@

        - + Complexity

        @@ -200,7 +200,7 @@

        - + Header

        @@ -213,7 +213,7 @@

        - + Example

        @@ -247,7 +247,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html index 4da2722b..500f3fad 100644 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -2,8 +2,8 @@ for_each - - + + @@ -13,28 +13,28 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        Applies a unary function object to each element of a sequence.

        - + Synopsis
        template<
        @@ -45,7 +45,7 @@
             Sequence& seq, F f);
         
        -

        Table 1.42. Parameters

        +

        Table 1.42. Parameters

        @@ -112,7 +112,7 @@

        - + Expression Semantics
        @@ -126,21 +126,21 @@ in seq.

        - + Complexity

        Linear, exactly result_of::size<Sequence>::value applications of f.

        - + Header
        #include <boost/fusion/algorithm/iteration/for_each.hpp>
         #include <boost/fusion/include/for_each.hpp>
         
        - + Example
        struct increment
        @@ -168,7 +168,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html index 3999f587..aaa43980 100644 --- a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html @@ -2,8 +2,8 @@ iter_fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -49,7 +49,7 @@

        - + Synopsis

        @@ -74,7 +74,7 @@

        -

        Table 1.39. Parameters

        +

        Table 1.39. Parameters

        @@ -163,7 +163,7 @@

        - + Expression Semantics
        @@ -188,7 +188,7 @@

        - + Complexity

        @@ -200,7 +200,7 @@

        - + Header

        @@ -213,7 +213,7 @@

        - + Example

        @@ -247,7 +247,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html index 184365dc..8c1e00ba 100644 --- a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html @@ -2,8 +2,8 @@ reverse_fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -49,7 +49,7 @@

        - + Synopsis

        @@ -74,7 +74,7 @@

        -

        Table 1.38. Parameters

        +

        Table 1.38. Parameters

        @@ -163,7 +163,7 @@

        - + Expression Semantics
        @@ -188,7 +188,7 @@

        - + Complexity

        @@ -200,7 +200,7 @@

        - + Header

        @@ -213,7 +213,7 @@

        - + Example

        @@ -247,7 +247,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html index 54c8bdca..67518638 100644 --- a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html @@ -2,8 +2,8 @@ reverse_iter_fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -49,7 +49,7 @@

        - + Synopsis

        @@ -74,7 +74,7 @@

        -

        Table 1.40. Parameters

        +

        Table 1.40. Parameters

        @@ -163,7 +163,7 @@

        - + Expression Semantics
        @@ -188,7 +188,7 @@

        - + Complexity

        @@ -200,7 +200,7 @@

        - + Header

        @@ -213,7 +213,7 @@

        - + Example

        @@ -247,7 +247,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html index 7b8aa4bc..18cb2190 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -46,7 +46,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 520c574e..57b79ee3 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -2,8 +2,8 @@ accumulate - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -42,7 +42,7 @@

        - + Synopsis

        @@ -60,7 +60,7 @@

        -

        Table 1.47. Parameters

        +

        Table 1.47. Parameters

        @@ -145,7 +145,7 @@

        - + Expression Semantics
        @@ -172,7 +172,7 @@

        - + Complexity

        @@ -184,7 +184,7 @@

        - + Header

        @@ -207,7 +207,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html index c4771084..e479c1fd 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html @@ -2,8 +2,8 @@ fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -42,7 +42,7 @@

        - + Synopsis

        @@ -60,7 +60,7 @@

        -

        Table 1.43. Parameters

        +

        Table 1.43. Parameters

        @@ -145,7 +145,7 @@

        - + Expression Semantics
        @@ -172,7 +172,7 @@

        - + Complexity

        @@ -184,7 +184,7 @@

        - + Header

        @@ -207,7 +207,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html index 0a148a03..072f8ea1 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html @@ -2,8 +2,8 @@ for_each - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -31,11 +31,11 @@ return type of for_each is always void.

        - + Description
        - + Synopsis
        template<
        @@ -48,7 +48,7 @@
         };
         
        -

        Table 1.48. Parameters

        +

        Table 1.48. Parameters

        @@ -112,7 +112,7 @@

        - + Expression Semantics
        @@ -129,14 +129,14 @@ return type is always void.

        - + Complexity

        Constant.

        - + Header
        #include <boost/fusion/algorithm/iteration/for_each.hpp>
        @@ -154,7 +154,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html index d07c9c4a..2388ad66 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html @@ -2,8 +2,8 @@ iter_fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -42,7 +42,7 @@

        - + Synopsis

        @@ -60,7 +60,7 @@

        -

        Table 1.45. Parameters

        +

        Table 1.45. Parameters

        @@ -145,7 +145,7 @@

        - + Expression Semantics
        @@ -172,7 +172,7 @@

        - + Complexity

        @@ -184,7 +184,7 @@

        - + Header

        @@ -207,7 +207,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html index 771ff2f6..f1021ccc 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html @@ -2,8 +2,8 @@ reverse_fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -42,7 +42,7 @@

        - + Synopsis

        @@ -60,7 +60,7 @@

        -

        Table 1.44. Parameters

        +

        Table 1.44. Parameters

        @@ -145,7 +145,7 @@

        - + Expression Semantics
        @@ -172,7 +172,7 @@

        - + Complexity

        @@ -184,7 +184,7 @@

        - + Header

        @@ -207,7 +207,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html index e950bb7b..56c20d56 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html @@ -2,8 +2,8 @@ reverse_iter_fold - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -30,7 +30,7 @@

        - + Description

        @@ -42,7 +42,7 @@

        - + Synopsis

        @@ -60,7 +60,7 @@

        -

        Table 1.46. Parameters

        +

        Table 1.46. Parameters

        @@ -145,7 +145,7 @@

        - + Expression Semantics
        @@ -172,7 +172,7 @@

        - + Complexity

        @@ -184,7 +184,7 @@

        - + Header

        @@ -207,7 +207,7 @@


        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html index 90112986..4b16877c 100644 --- a/doc/html/fusion/algorithm/query.html +++ b/doc/html/fusion/algorithm/query.html @@ -2,8 +2,8 @@ Query - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -34,7 +34,7 @@ The query algorithms provide support for searching and analyzing sequences.

        - + Header
        #include <boost/fusion/algorithm/query.hpp>
        @@ -52,7 +52,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html index 16b821b2..91a84e95 100644 --- a/doc/html/fusion/algorithm/query/functions.html +++ b/doc/html/fusion/algorithm/query/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -47,7 +47,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index 5af55a6c..2d405f9a 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -2,8 +2,8 @@ all - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        all
        - + Description

        @@ -38,7 +38,7 @@ element of seq.

        - + Synopsis
        template<
        @@ -49,7 +49,7 @@
             Sequence const& seq, F f);
         
        -

        Table 1.50. Parameters

        +

        Table 1.50. Parameters

        @@ -116,7 +116,7 @@

        - + Expression Semantics
        @@ -132,21 +132,21 @@ element e in seq.

        - + Complexity

        Linear. At most result_of::size<Sequence>::value comparisons.

        - + Header
        #include <boost/fusion/algorithm/query/all.hpp>
         #include <boost/fusion/include/all.hpp>
         
        - + Example
        struct odd
        @@ -173,7 +173,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html index f7b5e9f2..cc66dea3 100644 --- a/doc/html/fusion/algorithm/query/functions/any.html +++ b/doc/html/fusion/algorithm/query/functions/any.html @@ -2,8 +2,8 @@ any - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        any
        - + Description

        @@ -38,7 +38,7 @@ least one element of seq.

        - + Synopsis
        template<
        @@ -49,7 +49,7 @@
             Sequence const& seq, F f);
         
        -

        Table 1.49. Parameters

        +

        Table 1.49. Parameters

        @@ -116,7 +116,7 @@

        - + Expression semantics
        @@ -132,21 +132,21 @@ element e in seq.

        - + Complexity

        Linear. At most result_of::size<Sequence>::value comparisons.

        - + Header
        #include <boost/fusion/algorithm/query/any.hpp>
         #include <boost/fusion/include/any.hpp>
         
        - + Example
        struct odd
        @@ -173,7 +173,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html index 46dd2be2..dddae77b 100644 --- a/doc/html/fusion/algorithm/query/functions/count.html +++ b/doc/html/fusion/algorithm/query/functions/count.html @@ -2,8 +2,8 @@ count - - + + @@ -13,28 +13,28 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        Returns the number of elements of a given type within a sequence.

        - + Synopsis
        template<
        @@ -45,7 +45,7 @@
             Sequence const& seq, T const& t);
         
        -

        Table 1.54. Parameters

        +

        Table 1.54. Parameters

        @@ -113,7 +113,7 @@

        - + Expression Semantics
        @@ -128,21 +128,21 @@ t in seq.

        - + Complexity

        Linear. At most result_of::size<Sequence>::value comparisons.

        - + Header
        #include <boost/fusion/algorithm/query/count.hpp>
         #include <boost/fusion/include/count.hpp>
         
        - + Example
        const vector<double,int,int> vec(1.0,2,3);
        @@ -160,7 +160,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html index 129c4a0b..c2baa0a7 100644 --- a/doc/html/fusion/algorithm/query/functions/count_if.html +++ b/doc/html/fusion/algorithm/query/functions/count_if.html @@ -2,8 +2,8 @@ count_if - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

        - + Synopsis
        template<
        @@ -46,7 +46,7 @@
             Sequence const& seq, F f);
         
        -

        Table 1.55. Parameters

        +

        Table 1.55. Parameters

        @@ -113,7 +113,7 @@

        - + Expression Semantics
        @@ -127,21 +127,21 @@ in seq where f evaluates to true.

        - + Complexity

        Linear. At most result_of::size<Sequence>::value comparisons.

        - + Header
        #include <boost/fusion/algorithm/query/count_if.hpp>
         #include <boost/fusion/include/count_if.hpp>
         
        - + Example
        const vector<int,int,int> vec(1,2,3);
        @@ -159,7 +159,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html index 57d25726..9440a2e8 100644 --- a/doc/html/fusion/algorithm/query/functions/find.html +++ b/doc/html/fusion/algorithm/query/functions/find.html @@ -2,8 +2,8 @@ find - - + + @@ -13,28 +13,28 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        Finds the first element of a given type within a sequence.

        - + Synopsis
        template<
        @@ -50,7 +50,7 @@
         unspecified find(Sequence& seq);
         
        -

        Table 1.52. Parameters

        +

        Table 1.52. Parameters

        @@ -114,7 +114,7 @@

        - + Expression Semantics
        @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

        - + Complexity

        Linear. At most result_of::size<Sequence>::value comparisons.

        - + Header
        #include <boost/fusion/algorithm/query/find.hpp>
         #include <boost/fusion/include/find.hpp>
         
        - + Example
        const vector<char,int> vec('a','0');
        @@ -164,7 +164,7 @@
         
         
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html index dae720ac..6e7cf9ba 100644 --- a/doc/html/fusion/algorithm/query/functions/find_if.html +++ b/doc/html/fusion/algorithm/query/functions/find_if.html @@ -2,8 +2,8 @@ find_if - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        @@ -32,11 +32,11 @@ Lambda Expression evaluates to boost::mpl::true_.

        - + Description
        - + Synopsis
        template<
        @@ -52,7 +52,7 @@
         unspecified find_if(Sequence& seq);
         
        -

        Table 1.53. Parameters

        +

        Table 1.53. Parameters

        @@ -117,7 +117,7 @@

        - + Expression Semantics
        @@ -135,7 +135,7 @@ if there is no such element.

        - + Complexity

        @@ -150,7 +150,7 @@

      - + Example
      const vector<double,int> vec(1.0,2);
      @@ -169,7 +169,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html index 86745f15..d49a4595 100644 --- a/doc/html/fusion/algorithm/query/functions/none.html +++ b/doc/html/fusion/algorithm/query/functions/none.html @@ -2,8 +2,8 @@ none - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -38,7 +38,7 @@ element of seq.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
           Sequence const& seq, F f);
       
      -

      Table 1.51. Parameters

      +

      Table 1.51. Parameters

      @@ -116,7 +116,7 @@

      - + Expression Semantics
      @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

      - + Complexity

      Linear. At most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/none.hpp>
       #include <boost/fusion/include/none.hpp>
       
      - + Example
      struct odd
      @@ -173,7 +173,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html index c0de13eb..2df2a0e5 100644 --- a/doc/html/fusion/algorithm/query/metafunctions.html +++ b/doc/html/fusion/algorithm/query/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -47,7 +47,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index 5d1f3658..7981d3f5 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -2,8 +2,8 @@ all - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      all
      - + Description

      A metafunction returning the result type of all.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.57. Parameters

      +

      Table 1.57. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -130,14 +130,14 @@ The return type is always bool.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/query/all.hpp>
      @@ -155,7 +155,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html index 31a573b9..269b8110 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/any.html +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html @@ -2,8 +2,8 @@ any - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      any
      - + Description

      A metafunction returning the result type of any.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.56. Parameters

      +

      Table 1.56. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -130,14 +130,14 @@ The return type is always bool.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/query/any.hpp>
      @@ -155,7 +155,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html index 019790fc..e43d2431 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/count.html +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html @@ -2,8 +2,8 @@ count - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ given the sequence and search types.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.61. Parameters

      +

      Table 1.61. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -127,14 +127,14 @@ int.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/query/count.hpp>
      @@ -152,7 +152,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html index bec283a4..bdffe7f2 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html @@ -2,8 +2,8 @@ count_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ given the sequence and predicate types.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.62. Parameters

      +

      Table 1.62. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -127,14 +127,14 @@ always int.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/query/count_if.hpp>
      @@ -152,7 +152,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html index a871f196..3cd1e5b3 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/find.html +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html @@ -2,8 +2,8 @@ find - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ search types.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.59. Parameters

      +

      Table 1.59. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -129,14 +129,14 @@ if there is no such element.

      - + Complexity

      Linear, at most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/find.hpp>
      @@ -154,7 +154,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html index 22770e23..51423311 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html @@ -2,8 +2,8 @@ find_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ predicate types.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.60. Parameters

      +

      Table 1.60. Parameters

      @@ -113,7 +113,7 @@

      - + Expression Semantics
      @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

      - + Complexity

      Linear. At most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/find_if.hpp>
      @@ -155,7 +155,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html index e7d1480d..d19f559b 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/none.html +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html @@ -2,8 +2,8 @@ none - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      A metafunction returning the result type of none.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.58. Parameters

      +

      Table 1.58. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -130,14 +130,14 @@ The return type is always bool.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/query/none.hpp>
      @@ -155,7 +155,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html index 58464381..e9374c6a 100644 --- a/doc/html/fusion/algorithm/transformation.html +++ b/doc/html/fusion/algorithm/transformation.html @@ -2,8 +2,8 @@ Transformation - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -37,7 +37,7 @@

      - +
      [Note][Note] Note

      @@ -47,7 +47,7 @@

      - + Header
      #include <boost/fusion/algorithm/transformation.hpp>
      @@ -65,7 +65,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html index c72af4f3..dd40816b 100644 --- a/doc/html/fusion/algorithm/transformation/functions.html +++ b/doc/html/fusion/algorithm/transformation/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -59,7 +59,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index 03f4bb84..c930305b 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -2,8 +2,8 @@ clear - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      clear returns an empty sequence.

      - + Synposis
      template<
      @@ -43,7 +43,7 @@
       typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
       
      -

      Table 1.72. Parameters

      +

      Table 1.72. Parameters

      @@ -88,7 +88,7 @@

      - + Expression Semantics
      @@ -103,21 +103,21 @@ with no elements.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/clear.hpp>
       #include <boost/fusion/include/clear.hpp>
       
      - + Example
      assert(clear(make_vector(1,2,3)) == make_vector());
      @@ -134,7 +134,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html index 51e86b68..0352c2f5 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html @@ -2,8 +2,8 @@ erase - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

      - + Synposis
      template<
      @@ -54,7 +54,7 @@
           Sequence const& seq, First const& it1, Last const& it2);
       
      -

      Table 1.73. Parameters

      +

      Table 1.73. Parameters

      @@ -138,7 +138,7 @@

      - + Expression Semantics
      @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/erase.hpp>
       #include <boost/fusion/include/erase.hpp>
       
      - + Example
      const vector<int, double, char> vec(1, 2.0, 'c');
      @@ -220,7 +220,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html index feaa03c9..787b0f6f 100644 --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html @@ -2,8 +2,8 @@ erase_key - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -39,7 +39,7 @@ key.

      - + Synposis
      template<
      @@ -49,7 +49,7 @@
       typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
       
      -

      Table 1.74. Parameters

      +

      Table 1.74. Parameters

      @@ -114,7 +114,7 @@

      - + Expression Semantics
      @@ -131,21 +131,21 @@ except those with key Key.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/erase_key.hpp>
       #include <boost/fusion/include/erase_key.hpp>
       
      - + Example
      assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
      @@ -162,7 +162,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html index 72dcccf5..f6cb5942 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html @@ -2,8 +2,8 @@ filter - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ the elements of a specified type.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
       typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
       
      -

      Table 1.63. Parameters

      +

      Table 1.63. Parameters

      @@ -109,7 +109,7 @@

      - + Expression Semantics
      @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/filter.hpp>
       #include <boost/fusion/include/filter.hpp>
       
      - + Example
      const vector<int,int,long,long> vec(1,2,3,4);
      @@ -169,7 +169,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html index 41277071..115d3b87 100644 --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html @@ -2,8 +2,8 @@ filter_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
       
      -

      Table 1.64. Parameters

      +

      Table 1.64. Parameters

      @@ -111,7 +111,7 @@

      - + Expression Semantics
      @@ -140,21 +140,21 @@ is the same as in the original sequence.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/filter_if.hpp>
       #include <boost/fusion/include/filter_if.hpp>
       
      - + Example
      const vector<int,int,double,double> vec(1,2,3.0,4.0);
      @@ -172,7 +172,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html index 9f7bcaed..4799398d 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html @@ -2,8 +2,8 @@ insert - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

      - + Synposis
      template<
      @@ -47,7 +47,7 @@
           Sequence const& seq, Pos const& pos, T const& t);
       
      -

      Table 1.75. Parameters

      +

      Table 1.75. Parameters

      @@ -129,7 +129,7 @@

      - + Expression Semantics
      @@ -158,21 +158,21 @@ pos.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/insert.hpp>
       #include <boost/fusion/include/insert.hpp>
       
      - + Example
      const vector<int,int> vec(1,2);
      @@ -190,7 +190,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html index 9c88b89a..c502d026 100644 --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html @@ -2,8 +2,8 @@ insert_range - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ iterator.

      - + Synposis
      template<
      @@ -47,7 +47,7 @@
           Sequence const& seq, Pos const& pos, Range const& range);
       
      -

      Table 1.76. Parameters

      +

      Table 1.76. Parameters

      @@ -130,7 +130,7 @@

      - + Expression Semantics
      @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/insert_range.hpp>
       #include <boost/fusion/include/insert_range.hpp>
       
      - + Example
      const vector<int,int> vec(1,2);
      @@ -191,7 +191,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html index db1c3104..7a6a6480 100644 --- a/doc/html/fusion/algorithm/transformation/functions/join.html +++ b/doc/html/fusion/algorithm/transformation/functions/join.html @@ -2,8 +2,8 @@ join - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ first followed by the elements of the second.

      - + Synopsis
      template<
      @@ -44,7 +44,7 @@
       typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
       
      -

      Table 1.77. Parameters

      +

      Table 1.77. Parameters

      @@ -109,7 +109,7 @@

      - + Expression Semantics
      @@ -138,21 +138,21 @@ The order of the elements is preserved.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/join.hpp>
       #include <boost/fusion/include/join.hpp>
       
      - + Example
      vector<int,char> v1(1, 'a');
      @@ -171,7 +171,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html index 9b63f157..47afaf5b 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html @@ -2,8 +2,8 @@ pop_back - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns a new sequence, with the last element of the original removed.

      - + Synopsis
      template<
      @@ -43,7 +43,7 @@
       typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
       
      -

      Table 1.79. Parameters

      +

      Table 1.79. Parameters

      @@ -88,7 +88,7 @@

      - + Expression Semantics
      @@ -116,21 +116,21 @@ same order as they were in seq.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/pop_back.hpp>
       #include <boost/fusion/include/pop_back.hpp>
       
      - + Example
      assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
      @@ -147,7 +147,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html index 67c487d4..6207828d 100644 --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html @@ -2,8 +2,8 @@ pop_front - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns a new sequence, with the first element of the original removed.

      - + Synopsis
      template<
      @@ -43,7 +43,7 @@
       typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
       
      -

      Table 1.80. Parameters

      +

      Table 1.80. Parameters

      @@ -88,7 +88,7 @@

      - + Expression Semantics
      @@ -116,21 +116,21 @@ same order as they were in seq.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/pop_front.hpp>
       #include <boost/fusion/include/pop_front.hpp>
       
      - + Example
      assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
      @@ -147,7 +147,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html index e9675a4e..5285b26d 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html @@ -2,8 +2,8 @@ push_back - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns a new sequence with an element added at the end.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
           Sequence const& seq, T const& t);
       
      -

      Table 1.81. Parameters

      +

      Table 1.81. Parameters

      @@ -109,7 +109,7 @@

      - + Expression Semantics
      @@ -137,21 +137,21 @@ to the end. The elements are in the same order as they were in seq.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/push_back.hpp>
       #include <boost/fusion/include/push_back.hpp>
       
      - + Example
      assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
      @@ -168,7 +168,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html index 34ac02cf..79c307f0 100644 --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html @@ -2,8 +2,8 @@ push_front - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns a new sequence with an element added at the beginning.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
           Sequence const& seq, T const& t);
       
      -

      Table 1.82. Parameters

      +

      Table 1.82. Parameters

      @@ -109,7 +109,7 @@

      - + Expression Semantics
      @@ -138,21 +138,21 @@ seq.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/push_front.hpp>
       #include <boost/fusion/include/push_front.hpp>
       
      - + Example
      assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
      @@ -169,7 +169,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html index ebd6a967..bbc53929 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html @@ -2,8 +2,8 @@ remove - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ except those of a given type.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
       typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
       
      -

      Table 1.69. Parameters

      +

      Table 1.69. Parameters

      @@ -109,7 +109,7 @@

      - + Expression Semantics
      @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/remove.hpp>
       #include <boost/fusion/include/remove.hpp>
       
      - + Example
      const vector<int,double> vec(1,2.0);
      @@ -169,7 +169,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html index 4b0aab99..7bac6dc7 100644 --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html @@ -2,8 +2,8 @@ remove_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
       typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
       
      -

      Table 1.70. Parameters

      +

      Table 1.70. Parameters

      @@ -110,7 +110,7 @@

      - + Expression Semantics
      @@ -139,21 +139,21 @@ >(seq).

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/remove_if.hpp>
       #include <boost/fusion/include/remove_if.hpp>
       
      - + Example
      const vector<int,double> vec(1,2.0);
      @@ -171,7 +171,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html index 6457ecf4..57f23e8d 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html @@ -2,8 +2,8 @@ replace - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ a new value.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
           Sequence const& seq, T const& old_value, T const& new_value);
       
      -

      Table 1.67. Parameters

      +

      Table 1.67. Parameters

      @@ -132,7 +132,7 @@

      - + Expression Semantics
      @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/replace.hpp>
       #include <boost/fusion/include/replace.hpp>
       
      - + Example
      assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
      @@ -180,7 +180,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html index dd6001ee..9427e66e 100644 --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html @@ -2,8 +2,8 @@ replace_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ replaced with a new value.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
           Sequence const& seq, F f, T const& new_value);
       
      -

      Table 1.68. Parameters

      +

      Table 1.68. Parameters

      @@ -131,7 +131,7 @@

      - + Expression Semantics
      @@ -149,21 +149,21 @@ evaluates to true.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/replace_if.hpp>
       #include <boost/fusion/include/replace_if.hpp>
       
      - + Example
      struct odd
      @@ -189,7 +189,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html index 14a2d199..1c6a9995 100644 --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html @@ -2,8 +2,8 @@ reverse - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns a new sequence with the elements of the original in reverse order.

      - + Synposis
      template<
      @@ -43,7 +43,7 @@
       typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
       
      -

      Table 1.71. Parameters

      +

      Table 1.71. Parameters

      @@ -88,7 +88,7 @@

      - + Expression Semantics
      @@ -120,21 +120,21 @@ in reverse order.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/reverse.hpp>
       #include <boost/fusion/include/reverse.hpp>
       
      - + Example
      assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
      @@ -151,7 +151,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html index 9ed51b99..297bba8d 100644 --- a/doc/html/fusion/algorithm/transformation/functions/transform.html +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html @@ -2,8 +2,8 @@ transform - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -38,7 +38,7 @@ of seq.

      - + Unary version synopsis
      @@ -50,7 +50,7 @@ Sequence const& seq, F f);
      -

      Table 1.65. Parameters

      +

      Table 1.65. Parameters

      @@ -118,7 +118,7 @@

      - + Expression Semantics
      @@ -134,7 +134,7 @@ within seq.

      - + Binary version synopsis
      @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
      -

      Table 1.66. Parameters

      +

      Table 1.66. Parameters

      @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/transform.hpp>
       #include <boost/fusion/include/transform.hpp>
       
      - + Example
      struct triple
      @@ -285,7 +285,7 @@
       

      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html index 30b1bbe6..9ad303d4 100644 --- a/doc/html/fusion/algorithm/transformation/functions/zip.html +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html @@ -2,8 +2,8 @@ zip - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      zip
      - + Description

      @@ -35,7 +35,7 @@ of the members of the component sequences.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
       
      -

      Table 1.78. Parameters

      +

      Table 1.78. Parameters

      @@ -93,7 +93,7 @@

      - + Expression Semantics
      @@ -114,21 +114,21 @@ 'c'))

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/zip.hpp>
       #include <boost/fusion/include/zip.hpp>
       
      - + Example
      vector<int,char> v1(1, 'a');
      @@ -147,7 +147,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html index 4cd4428a..b7826427 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -59,7 +59,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index 536a1c04..8ca30b95 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -2,8 +2,8 @@ clear - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ type.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.92. Parameters

      +

      Table 1.92. Parameters

      @@ -91,7 +91,7 @@

      - + Expression Semantics
      @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/clear.hpp>
      @@ -130,7 +130,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html index 4a8cf79f..38200aa0 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html @@ -2,8 +2,8 @@ erase - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -31,11 +31,11 @@ and range delimiting iterator types.

      - + Description
      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.93. Parameters

      +

      Table 1.93. Parameters

      @@ -131,7 +131,7 @@

      - + Expression Semantics
      @@ -168,14 +168,14 @@ and It2 removed.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/erase.hpp>
      @@ -193,7 +193,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html index 29cf0576..6d9511ec 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html @@ -2,8 +2,8 @@ erase_key - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ and key types.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.94. Parameters

      +

      Table 1.94. Parameters

      @@ -113,7 +113,7 @@

      - + Expression Semantics
      @@ -130,14 +130,14 @@ except those with key Key.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/erase_key.hpp>
      @@ -155,7 +155,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html index 5a7f46ef..55e8facb 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html @@ -2,8 +2,8 @@ filter - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ and type to retain.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.83. Parameter

      +

      Table 1.83. Parameter

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/filter.hpp>
      @@ -166,7 +166,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html index 0b370c24..ae4b6eeb 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html @@ -2,8 +2,8 @@ filter_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ Lambda Expression predicate type.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
       };
       
      -

      Table 1.84. Parameter

      +

      Table 1.84. Parameter

      @@ -114,7 +114,7 @@

      - + Expression Semantics
      @@ -142,14 +142,14 @@ to boost::mpl::true_.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/filter_if.hpp>
      @@ -167,7 +167,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html index cb32c418..929a52e5 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html @@ -2,8 +2,8 @@ insert - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ position iterator and insertion types.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
       };
       
      -

      Table 1.95. Parameters

      +

      Table 1.95. Parameters

      @@ -131,7 +131,7 @@

      - + Expression Semantics
      @@ -159,14 +159,14 @@ in Sequence.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/insert.hpp>
      @@ -184,7 +184,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html index 3ea03e80..520f86ad 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html @@ -2,8 +2,8 @@ insert_range - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
       };
       
      -

      Table 1.96. Parameters

      +

      Table 1.96. Parameters

      @@ -132,7 +132,7 @@

      - + Expression Semantics
      @@ -160,14 +160,14 @@ into Sequence.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/insert_range.hpp>
      @@ -185,7 +185,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html index 17b8677b..2ddc0778 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html @@ -2,8 +2,8 @@ join - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result of joining 2 sequences, given the sequence types.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      - + Expression Semantics
      @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/join.hpp>
      @@ -101,7 +101,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html index 2d0f615b..1f504a9f 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html @@ -2,8 +2,8 @@ pop_back - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ type.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.97. Parameters

      +

      Table 1.97. Parameters

      @@ -92,7 +92,7 @@

      - + Expression Semantics
      @@ -119,14 +119,14 @@ except the last element.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/pop_back.hpp>
      @@ -144,7 +144,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html index c3c6f92b..9d7aba39 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html @@ -2,8 +2,8 @@ pop_front - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ type.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.98. Parameters

      +

      Table 1.98. Parameters

      @@ -92,7 +92,7 @@

      - + Expression Semantics
      @@ -119,14 +119,14 @@ except the first element.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/pop_front.hpp>
      @@ -144,7 +144,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html index 4b1da24e..dc67045c 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html @@ -2,8 +2,8 @@ push_back - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ the input sequence and element to push.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.99. Parameters

      +

      Table 1.99. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -140,14 +140,14 @@ added to the end.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/push_back.hpp>
      @@ -165,7 +165,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html index 5532c437..70872ff7 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html @@ -2,8 +2,8 @@ push_front - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ of the input sequence and element to push.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.100. Parameters

      +

      Table 1.100. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -140,14 +140,14 @@ added to the beginning.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/push_front.hpp>
      @@ -165,7 +165,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html index 6ffbff29..71ba667d 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html @@ -2,8 +2,8 @@ remove - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ removal types.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.89. Parameters

      +

      Table 1.89. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/remove.hpp>
      @@ -166,7 +166,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html index abde89d6..18814499 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html @@ -2,8 +2,8 @@ remove_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ Lambda Expression predicate types.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
       };
       
      -

      Table 1.90. Parameters

      +

      Table 1.90. Parameters

      @@ -114,7 +114,7 @@

      - + Expression Semantics
      @@ -142,14 +142,14 @@ to boost::mpl::false_.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/remove_if.hpp>
      @@ -167,7 +167,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html index edd0f07d..1a9750c3 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html @@ -2,8 +2,8 @@ replace - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ the input sequence and element to replace.

      - + Synopsis
      template<
      @@ -48,7 +48,7 @@
       };
       
      -

      Table 1.87. Parameters

      +

      Table 1.87. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -127,14 +127,14 @@ replace.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/replace.hpp>
      @@ -152,7 +152,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html index b123c42a..4a2bf575 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html @@ -2,8 +2,8 @@ replace_if - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
       };
       
      -

      Table 1.88. Parameters

      +

      Table 1.88. Parameters

      @@ -131,7 +131,7 @@

      - + Expression Semantics
      @@ -146,14 +146,14 @@ replace_if.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/replace_if.hpp>
      @@ -171,7 +171,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html index df2815c6..ea686077 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html @@ -2,8 +2,8 @@ reverse - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ type.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.91. Parameters

      +

      Table 1.91. Parameters

      @@ -92,7 +92,7 @@

      - + Expression Semantics
      @@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/reverse.hpp>
      @@ -148,7 +148,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html index 0c91762a..3392c104 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html @@ -2,8 +2,8 @@ transform - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -38,7 +38,7 @@ of seq.

      - + Unary version synopsis
      @@ -50,7 +50,7 @@ Sequence const& seq, F f);
      -

      Table 1.85. Parameters

      +

      Table 1.85. Parameters

      @@ -118,7 +118,7 @@

      - + Expression Semantics
      @@ -145,7 +145,7 @@ within seq.

      - + Binary version synopsis
      @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
      -

      Table 1.86. Parameters

      +

      Table 1.86. Parameters

      @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

      - + Complexity

      Constant. Returns a view which is lazily evaluated.

      - + Header
      #include <boost/fusion/algorithm/transformation/transform.hpp>
       #include <boost/fusion/include/transform.hpp>
       
      - + Example
      struct triple
      @@ -296,7 +296,7 @@
       

      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html index a6be7da6..2f4b93bb 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html @@ -2,8 +2,8 @@ zip - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      zip
      - + Description

      @@ -35,7 +35,7 @@ of the members of the component sequences.

      - + Synopsis
      template<
      @@ -50,7 +50,7 @@
       };
       
      - + Expression Semantics
      @@ -72,14 +72,14 @@ 'c'))

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/transformation/zip.hpp>
      @@ -97,7 +97,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html index 0eca28df..0e36666b 100644 --- a/doc/html/fusion/change_log.html +++ b/doc/html/fusion/change_log.html @@ -2,8 +2,8 @@ Change log - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -101,7 +101,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index 28a1aff5..a420f99b 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -2,8 +2,8 @@ Container - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -49,7 +49,7 @@ These containers are more or less counterparts of those in STL.

      - + Header

      #include <boost/fusion/container.hpp>
      @@ -67,7 +67,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html index 0710dc14..c26d6d12 100644 --- a/doc/html/fusion/container/cons.html +++ b/doc/html/fusion/container/cons.html @@ -2,8 +2,8 @@ cons - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -42,21 +42,21 @@ Inlined Functions).

      - + Header
      #include <boost/fusion/container/list/cons.hpp>
       #include <boost/fusion/include/cons.hpp>
       
      - + Synopsis
      template <typename Car, typename Cdr = nil>
       struct cons;
       
      - + Template parameters
      @@ -95,8 +95,6 @@

      @@ -119,7 +117,7 @@
      -

      -

      - + Model of
      • @@ -161,7 +159,7 @@
      - + Expression Semantics

      @@ -294,7 +292,7 @@

      - + Example
      cons<int, cons<float> > l(12, cons<float>(5.5f));
      @@ -313,7 +311,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html index 971c64bd..aac4e564 100644 --- a/doc/html/fusion/container/conversion.html +++ b/doc/html/fusion/container/conversion.html @@ -2,8 +2,8 @@ Conversion - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -35,7 +35,7 @@ types using one of these conversion functions.

      - + Header
      #include <boost/fusion/include/convert.hpp>
      @@ -52,7 +52,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html index 70174779..21401c53 100644 --- a/doc/html/fusion/container/conversion/functions.html +++ b/doc/html/fusion/container/conversion/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -44,7 +44,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index 9c367d87..abb95212 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -2,8 +2,8 @@ as_list - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Convert a fusion sequence to a list.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       as_list(Sequence const& seq);
       
      - + Parameters
      @@ -91,7 +91,7 @@
      - + Expression Semantics
      @@ -105,14 +105,14 @@ seq, to a list.

      - + Header
      #include <boost/fusion/container/list/convert.hpp>
       #include <boost/fusion/include/as_list.hpp>
       
      - + Example
      as_list(make_vector('x', 123, "hello"))
      @@ -129,7 +129,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html index cf04a5fb..68eed129 100644 --- a/doc/html/fusion/container/conversion/functions/as_map.html +++ b/doc/html/fusion/container/conversion/functions/as_map.html @@ -2,8 +2,8 @@ as_map - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Convert a fusion sequence to a map.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       as_map(Sequence const& seq);
       
      - + Parameters
      @@ -91,7 +91,7 @@
      - + Expression Semantics
      @@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

      - + Header
      #include <boost/fusion/container/map/convert.hpp>
       #include <boost/fusion/include/as_map.hpp>
       
      - + Example
      as_map(make_vector(
      @@ -136,7 +136,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html index 06247ab1..2317d0bd 100644 --- a/doc/html/fusion/container/conversion/functions/as_set.html +++ b/doc/html/fusion/container/conversion/functions/as_set.html @@ -2,8 +2,8 @@ as_set - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Convert a fusion sequence to a set.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       as_set(Sequence const& seq);
       
      - + Parameters
      @@ -91,7 +91,7 @@
      - + Expression Semantics
      @@ -109,14 +109,14 @@ key types.

      - + Header
      #include <boost/fusion/container/set/convert.hpp>
       #include <boost/fusion/include/as_set.hpp>
       
      - + Example
      as_set(make_vector('x', 123, "hello"))
      @@ -133,7 +133,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html index e2102f69..b709cd3a 100644 --- a/doc/html/fusion/container/conversion/functions/as_vector.html +++ b/doc/html/fusion/container/conversion/functions/as_vector.html @@ -2,8 +2,8 @@ as_vector - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Convert a fusion sequence to a vector.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       as_vector(Sequence const& seq);
       
      - + Parameters
      @@ -91,7 +91,7 @@
      - + Expression Semantics
      @@ -105,14 +105,14 @@ seq, to a vector.

      - + Header
      #include <boost/fusion/container/vector/convert.hpp>
       #include <boost/fusion/include/as_vector.hpp>
       
      - + Example
      as_vector(make_list('x', 123, "hello"))
      @@ -129,7 +129,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html index 978b38d7..9ad05e09 100644 --- a/doc/html/fusion/container/conversion/metafunctions.html +++ b/doc/html/fusion/container/conversion/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -44,7 +44,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index f1b288d3..417534e6 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -2,8 +2,8 @@ as_list - - + + @@ -13,35 +13,35 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of as_list.

      - + Synopsis
      template <typename Sequence>
       struct as_list;
       
      - + Parameters
      @@ -86,7 +86,7 @@
      - + Expression Semantics
      @@ -101,14 +101,14 @@ Sequence, to a list.

      - + Header
      #include <boost/fusion/container/list/convert.hpp>
       #include <boost/fusion/include/as_list.hpp>
       
      - + Example
      result_of::as_list<vector<char, int> >::type
      @@ -125,7 +125,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html index 289abbce..6595d924 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html @@ -2,8 +2,8 @@ as_map - - + + @@ -13,35 +13,35 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of as_map.

      - + Synopsis
      template <typename Sequence>
       struct as_map;
       
      - + Parameters
      @@ -86,7 +86,7 @@
      - + Expression Semantics
      @@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

      - + Header
      #include <boost/fusion/container/map/convert.hpp>
       #include <boost/fusion/include/as_map.hpp>
       
      - + Example
      result_of::as_map<vector<
      @@ -132,7 +132,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html index 1bfa7cbc..7b1ee8ec 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html @@ -2,8 +2,8 @@ as_set - - + + @@ -13,35 +13,35 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of as_set.

      - + Synopsis
      template <typename Sequence>
       struct as_set;
       
      - + Parameters
      @@ -86,7 +86,7 @@
      - + Expression Semantics
      @@ -105,14 +105,14 @@ key types.

      - + Header
      #include <boost/fusion/container/set/convert.hpp>
       #include <boost/fusion/include/as_set.hpp>
       
      - + Example
      result_of::as_set<vector<char, int> >::type
      @@ -129,7 +129,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html index f8fc2a09..40c0ff16 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html @@ -2,8 +2,8 @@ as_vector - - + + @@ -13,35 +13,35 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of as_vector.

      - + Synopsis
      template <typename Sequence>
       struct as_vector;
       
      - + Parameters
      @@ -86,7 +86,7 @@
      - + Expression Semantics
      @@ -101,14 +101,14 @@ Sequence, to a vector.

      - + Header
      #include <boost/fusion/container/vector/convert.hpp>
       #include <boost/fusion/include/as_vector.hpp>
       
      - + Example
      result_of::as_vector<list<char, int> >::type
      @@ -125,7 +125,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html index f1d6aeee..0ee8a297 100644 --- a/doc/html/fusion/container/generation.html +++ b/doc/html/fusion/container/generation.html @@ -2,8 +2,8 @@ Generation - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -34,7 +34,7 @@ These are the functions that you can use to generate various forms of Container from elemental values.

      - + Header
      #include <boost/fusion/container/generation.hpp>
      @@ -52,7 +52,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html index 2ae8be84..a19b30ab 100644 --- a/doc/html/fusion/container/generation/functions.html +++ b/doc/html/fusion/container/generation/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -49,7 +49,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index 7f3d7340..546bdb75 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -2,8 +2,8 @@ list_tie - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Constructs a tie using a list sequence.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -52,7 +52,7 @@
       
      #define FUSION_MAX_LIST_SIZE 20
       
      - + Parameters
      @@ -99,7 +99,7 @@
      - + Expression Semantics
      @@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

      - + Header
      #include <boost/fusion/container/generation/list_tie.hpp>
       #include <boost/fusion/include/list_tie.hpp>
       
      - + Example
      int i = 123;
      @@ -139,7 +139,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html index af5277d5..04a41cc7 100644 --- a/doc/html/fusion/container/generation/functions/make_cons.html +++ b/doc/html/fusion/container/generation/functions/make_cons.html @@ -2,8 +2,8 @@ make_cons - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ and optional cdr (tail).

      - + Synopsis
      template <typename Car>
      @@ -48,7 +48,7 @@
       make_cons(Car const& car, Cdr const& cdr);
       
      - + Parameters
      @@ -112,7 +112,7 @@
      - + Expression Semantics
      @@ -127,20 +127,20 @@ (tail).

      - + Header
      #include <boost/fusion/container/generation/make_cons.hpp>
       #include <boost/fusion/include/make_cons.hpp>
       
      - + Example
      make_cons('x', make_cons(123))
       
      - + See also
      @@ -159,7 +159,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index fd5bc1c4..8ddc8a50 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -2,8 +2,8 @@ make_list - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ from one or more values.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -53,7 +53,7 @@
       
      #define FUSION_MAX_LIST_SIZE 20
       
      - + Parameters
      @@ -100,7 +100,7 @@
      - + Expression Semantics
      @@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

      - + Header
      #include <boost/fusion/container/generation/make_list.hpp>
       #include <boost/fusion/include/make_list.hpp>
       
      - + Example
      make_list(123, "hello", 12.5)
       
      - + See also
      @@ -145,7 +145,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 70549940..930ab859 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -2,8 +2,8 @@ make_map - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ from one or more key/data pairs.

      - + Synopsis
      template <
      @@ -55,7 +55,7 @@
       
      #define FUSION_MAX_MAP_SIZE 20
       
      - + Parameters
      @@ -123,7 +123,7 @@
      - + Expression Semantics
      @@ -143,20 +143,20 @@ key types.

      - + Header
      #include <boost/fusion/container/generation/make_map.hpp>
       #include <boost/fusion/include/make_map.hpp>
       
      - + Example
      make_map<int, double>('X', "Men")
       
      - + See also
      @@ -176,7 +176,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 35e8e6fc..5798f411 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -2,8 +2,8 @@ make_set - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ from one or more values.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -53,7 +53,7 @@
       
      #define FUSION_MAX_SET_SIZE 20
       
      - + Parameters
      @@ -100,7 +100,7 @@
      - + Expression Semantics
      @@ -117,20 +117,20 @@ key types.

      - + Header
      #include <boost/fusion/container/generation/make_set.hpp>
       #include <boost/fusion/include/make_set.hpp>
       
      - + Example
      make_set(123, "hello", 12.5)
       
      - + See also
      @@ -149,7 +149,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index f53690d8..bcc33461 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -2,8 +2,8 @@ make_vector - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ from one or more values.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -53,7 +53,7 @@
       
      #define FUSION_MAX_VECTOR_SIZE 20
       
      - + Parameters
      @@ -100,7 +100,7 @@
      - + Expression Semantics
      @@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

      - + Header
      #include <boost/fusion/container/generation/make_vector.hpp>
       #include <boost/fusion/include/make_vector.hpp>
       
      - + Example
      make_vector(123, "hello", 12.5)
       
      - + See also
      @@ -145,7 +145,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 65872a2d..e4d8994e 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -2,8 +2,8 @@ map_tie - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Constructs a tie using a map sequence.

      - + Synopsis
      template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
      @@ -52,7 +52,7 @@
       
      #define FUSION_MAX_MAP_SIZE 20
       
      - + Parameters
      @@ -121,7 +121,7 @@
      - + Expression Semantics
      @@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

      - + Header
      #include <boost/fusion/container/generation/map_tie.hpp>
       #include <boost/fusion/include/map_tie.hpp>
       
      - + Example
      struct int_key;
      @@ -165,7 +165,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html index 724b062e..cfd3c42f 100644 --- a/doc/html/fusion/container/generation/functions/tiers.html +++ b/doc/html/fusion/container/generation/functions/tiers.html @@ -2,8 +2,8 @@ Tiers - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -54,7 +54,7 @@ The vector_tie function creates a vector of type vector<int&, char&, double&>. The same result could be achieved - with the call make_vector(ref(i), ref(c), ref(a)) [9]. + with the call make_vector(ref(i), ref(c), ref(a)) [9].

      A tie can be used to 'unpack' another tuple into @@ -70,7 +70,7 @@ when calling functions which return sequences.

      - + Ignore

      @@ -84,7 +84,7 @@



      -

      [9] +

      [9] see Boost.Ref for details about ref

      @@ -101,7 +101,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index b259e980..e2cbca41 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -2,8 +2,8 @@ vector_tie - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Constructs a tie using a vector sequence.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -52,7 +52,7 @@
       
      #define FUSION_MAX_VECTOR_SIZE 20
       
      - + Parameters
      @@ -99,7 +99,7 @@
      - + Expression Semantics
      @@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

      - + Header
      #include <boost/fusion/container/generation/vector_tie.hpp>
       #include <boost/fusion/include/vector_tie.hpp>
       
      - + Example
      int i = 123;
      @@ -139,7 +139,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html index 2746b1d4..28f2d273 100644 --- a/doc/html/fusion/container/generation/metafunctions.html +++ b/doc/html/fusion/container/generation/metafunctions.html @@ -2,8 +2,8 @@ MetaFunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -48,7 +48,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index bb0e823d..dd2ec485 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -2,8 +2,8 @@ list_tie - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of list_tie.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -51,7 +51,7 @@
       
      #define FUSION_MAX_LIST_SIZE 20
       
      - + Parameters
      @@ -98,7 +98,7 @@
      - + Expression Semantics
      @@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

      - + Header
      #include <boost/fusion/container/generation/list_tie.hpp>
       #include <boost/fusion/include/list_tie.hpp>
       
      - + Example
      result_of::list_tie<int, double>::type
      @@ -136,7 +136,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html index a6e61882..4d2e74e0 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html @@ -2,8 +2,8 @@ make_cons - - + + @@ -13,35 +13,35 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of make_cons.

      - + Synopsis
      template <typename Car, typename Cdr = nil>
       struct make_cons;
       
      - + Parameters
      @@ -105,7 +105,7 @@
      - + Expression Semantics
      @@ -122,14 +122,14 @@ (tail).

      - + Header
      #include <boost/fusion/container/generation/make_cons.hpp>
       #include <boost/fusion/include/make_cons.hpp>
       
      - + Example
      result_of::make_cons<char, result_of::make_cons<int>::type>::type
      @@ -146,7 +146,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html index bb967fb4..ef9e2618 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_list.html +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html @@ -2,8 +2,8 @@ make_list - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of make_list.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -51,7 +51,7 @@
       
      #define FUSION_MAX_LIST_SIZE 20
       
      - + Parameters
      @@ -98,7 +98,7 @@
      - + Expression Semantics
      @@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

      - + Header
      #include <boost/fusion/container/generation/make_list.hpp>
       #include <boost/fusion/include/make_list.hpp>
       
      - + Example
      result_of::make_list<int, const char(&)[7], double>::type
      @@ -137,7 +137,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html index 773ad3c2..451316ec 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_map.html +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html @@ -2,8 +2,8 @@ make_map - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of make_map.

      - + Synopsis
      template <
      @@ -53,7 +53,7 @@
       
      #define FUSION_MAX_MAP_SIZE 20
       
      - + Parameters
      @@ -121,7 +121,7 @@
      - + Expression Semantics
      @@ -140,20 +140,20 @@ key types.

      - + Header
      #include <boost/fusion/container/generation/make_map.hpp>
       #include <boost/fusion/include/make_map.hpp>
       
      - + Example
      result_of::make_map<int, double, char, double>::type
       
      - + See also
      @@ -172,7 +172,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 848e6858..f9a83b29 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -2,8 +2,8 @@ make_set - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of make_set.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -51,7 +51,7 @@
       
      #define FUSION_MAX_SET_SIZE 20
       
      - + Parameters
      @@ -98,7 +98,7 @@
      - + Expression Semantics
      @@ -117,14 +117,14 @@ key types.

      - + Header
      #include <boost/fusion/container/generation/make_set.hpp>
       #include <boost/fusion/include/make_set.hpp>
       
      - + Example
      result_of::make_set<int, char, double>::type
      @@ -141,7 +141,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html index c17ae4be..5776bcb5 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html @@ -2,8 +2,8 @@ make_vector - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of make_vector.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -51,7 +51,7 @@
       
      #define FUSION_MAX_VECTOR_SIZE 20
       
      - + Parameters
      @@ -98,7 +98,7 @@
      - + Expression Semantics
      @@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

      - + Header
      #include <boost/fusion/container/generation/make_list.hpp>
       #include <boost/fusion/include/make_list.hpp>
       
      - + Example
      result_of::make_vector<int, const char(&)[7], double>::type
      @@ -137,7 +137,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html index 72675c76..104e4936 100644 --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html @@ -2,8 +2,8 @@ map_tie - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of map_tie.

      - + Synopsis
      template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
      @@ -51,7 +51,7 @@
       
      #define FUSION_MAX_MAP_SIZE 20
       
      - + Parameters
      @@ -119,7 +119,7 @@
      - + Expression Semantics
      @@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

      - + Header
      #include <boost/fusion/container/generation/map_tie.hpp>
       #include <boost/fusion/include/map_tie.hpp>
       
      - + Example
      struct int_key;
      @@ -161,7 +161,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html index b39ebce2..bcab237e 100644 --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html @@ -2,8 +2,8 @@ vector_tie - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of vector_tie.

      - + Synopsis
      template <typename T0, typename T1,... typename TN>
      @@ -51,7 +51,7 @@
       
      #define FUSION_MAX_VECTOR_SIZE 20
       
      - + Parameters
      @@ -98,7 +98,7 @@
      - + Expression Semantics
      @@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

      - + Header
      #include <boost/fusion/container/generation/vector_tie.hpp>
       #include <boost/fusion/include/vector_tie.hpp>
       
      - + Example
      result_of::vector_tie<int, double>::type
      @@ -136,7 +136,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html index e9e6d381..d4e04896 100644 --- a/doc/html/fusion/container/list.html +++ b/doc/html/fusion/container/list.html @@ -2,8 +2,8 @@ list - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

      - + Header
      #include <boost/fusion/container/list.hpp>
      @@ -47,7 +47,7 @@
       #include <boost/fusion/include/list_fwd.hpp>
       
      - + Synopsis
      template <
      @@ -75,7 +75,7 @@
       
      #define FUSION_MAX_LIST_SIZE 20
       
      - + Template parameters
      @@ -120,7 +120,7 @@
      - + Model of
      • @@ -154,7 +154,7 @@
      - + Expression Semantics

      @@ -261,7 +261,7 @@

      - + Example
      list<int, float> l(12, 5.5f);
      @@ -280,7 +280,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html index ab4fea6a..a9cf0c2a 100644 --- a/doc/html/fusion/container/map.html +++ b/doc/html/fusion/container/map.html @@ -2,8 +2,8 @@ map - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      map

      - + Description

      @@ -40,7 +40,7 @@ (see Overloaded Functions).

      - + Header
      #include <boost/fusion/container/map.hpp>
      @@ -49,7 +49,7 @@
       #include <boost/fusion/include/map_fwd.hpp>
       
      - + Synopsis
      template <
      @@ -77,7 +77,7 @@
       
      #define FUSION_MAX_MAP_SIZE 20
       
      - + Template parameters
      @@ -122,7 +122,7 @@
      - + Model of
        @@ -157,7 +157,7 @@
      - + Expression Semantics

      @@ -241,7 +241,7 @@

      - + Example
      typedef map<
      @@ -268,7 +268,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html index beb53c22..b84ff346 100644 --- a/doc/html/fusion/container/set.html +++ b/doc/html/fusion/container/set.html @@ -2,8 +2,8 @@ set - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      set

      - + Description

      @@ -39,7 +39,7 @@ Functions).

      - + Header
      #include <boost/fusion/container/set.hpp>
      @@ -48,7 +48,7 @@
       #include <boost/fusion/include/set_fwd.hpp>
       
      - + Synopsis
      template <
      @@ -76,7 +76,7 @@
       
      #define FUSION_MAX_SET_SIZE 20
       
      - + Template parameters
      @@ -121,7 +121,7 @@
      - + Model of
        @@ -156,7 +156,7 @@
      - + Expression Semantics

      @@ -240,7 +240,7 @@

      - + Example
      typedef set<int, float> S;
      @@ -261,7 +261,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html index d4ff258e..0d4070b3 100644 --- a/doc/html/fusion/container/vector.html +++ b/doc/html/fusion/container/vector.html @@ -2,8 +2,8 @@ vector - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -39,7 +39,7 @@ efficient.

      - + Header
      #include <boost/fusion/container/vector.hpp>
      @@ -60,7 +60,7 @@
       #include <boost/fusion/include/vector50.hpp>
       
      - + Synopsis

      @@ -115,7 +115,7 @@

      #define FUSION_MAX_VECTOR_SIZE 20
       
      - + Template parameters
      @@ -160,7 +160,7 @@
      - + Model of
      • @@ -190,7 +190,7 @@
      - + Expression Semantics

      @@ -273,7 +273,7 @@

      - + Example
      vector<int, float> v(12, 5.5f);
      @@ -292,7 +292,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index b769a978..4121e3c4 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -2,8 +2,8 @@ Extension - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -43,7 +43,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index a4e20021..28d06ead 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -2,8 +2,8 @@ The Full Extension Mechanism - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -50,7 +50,7 @@

    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching
    @@ -121,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
    - + Designing a suitable iterator
    @@ -183,7 +183,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features
    @@ -311,7 +311,7 @@

    - +
    [Note][Note] Note

    @@ -323,7 +323,7 @@

    - + Implementing the remaining iterator functionality
    @@ -374,7 +374,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence
    @@ -430,7 +430,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative sequence
    @@ -494,7 +494,7 @@ are provided in the example code.

    - + Summary

    @@ -520,7 +520,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 639d9b13..e837f61f 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -2,8 +2,8 @@ Iterator Facade - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     
    - + Usage

    @@ -57,7 +57,7 @@ type.

    -

    Table 1.103. Parameters

    +

    Table 1.103. Parameters

    @@ -106,7 +106,7 @@

    -

    Table 1.104. Key Expressions

    +

    Table 1.104. Key Expressions

    @@ -439,14 +439,14 @@

    - + Header
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     
    - + Example

    @@ -465,7 +465,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index ba420937..6eea619f 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -2,8 +2,8 @@ Sequence Facade - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     
    - + Usage

    @@ -59,7 +59,7 @@ type.

    -

    Table 1.101. Parameters

    +

    Table 1.101. Parameters

    @@ -107,7 +107,7 @@

    -

    Table 1.102. Key Expressions

    +

    Table 1.102. Key Expressions

    @@ -244,14 +244,14 @@

    - + Include
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     
    - + Example

    @@ -270,7 +270,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 818e8151..3dacf5da 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -2,8 +2,8 @@ Functional - - + + @@ -13,14 +13,14 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -63,13 +63,13 @@ through a function object interface.

    - + Header

    #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -103,7 +103,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Making Fusion code callable through a function object interface

    @@ -165,7 +165,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index a299c6d0..68207f44 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -2,8 +2,8 @@ Adapters - - + + @@ -13,14 +13,14 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -49,7 +49,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index b5b4b2d0..bf9a23ca 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -2,8 +2,8 @@ fused - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -54,20 +54,20 @@ and boost::shared_ptr).

    - + Header
    #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -107,13 +107,11 @@

    -

    -

    - + Model of
      @@ -150,7 +148,7 @@
    - + Expression Semantics
    @@ -215,14 +213,14 @@
    - + Example
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
      @@ -254,7 +252,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 079dcced..bc9b1336 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -2,8 +2,8 @@ fused_function_object - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

      - + Header
      #include <boost/fusion/functional/adapter/fused_function_object.hpp>
       
      - + Synopsis
      template <class Function>
       class fused_function_object;
       
      - + Template parameters
      @@ -97,13 +97,11 @@

      -

      -

      - + Model of
      @@ -141,7 +139,7 @@
    - + Expression Semantics
    @@ -206,7 +204,7 @@
    - + Example
    template<class SeqOfSeqs, class Func>
    @@ -243,7 +241,7 @@
     }
     
    - + See also
    @@ -276,7 +274,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index f47958a2..a7b266f2 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -2,8 +2,8 @@ fused_procedure - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -62,20 +62,20 @@ case is not implemented).

    - + Header
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -115,13 +115,11 @@

    -

    -

    - + Model of
    @@ -159,7 +157,7 @@
    - + Expression Semantics
    @@ -224,7 +222,7 @@
    - + Example
    template<class SequenceOfSequences, class Func>
    @@ -244,7 +242,7 @@
     }
     
    - + See also
    @@ -274,7 +272,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index 3d7b36d6..a749aecf 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -2,8 +2,8 @@ Limits - - + + @@ -13,27 +13,27 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    - + Header
    #include <boost/fusion/functional/adapter/limits.hpp>
     
    - + Macros

    @@ -61,7 +61,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index 5a9e757c..a9b0039a 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -2,8 +2,8 @@ unfused - - + + @@ -13,21 +13,21 @@ - +
    Boost C++ Libraries HomeLibrariesLibraries People FAQ More

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

    - + Header
    #include <boost/fusion/functional/adapter/unfused.hpp>
     
    - + Synopsis
    template <class Function, bool AllowNullary = true>
     class unfused;
     
    - + Template parameters
    @@ -111,8 +111,6 @@

    -

    -

    @@ -135,7 +133,7 @@
    - + Model of
      @@ -176,7 +174,7 @@
    - + Expression Semantics
    @@ -241,7 +239,7 @@
    - + Example
    struct fused_incrementer
    @@ -268,7 +266,7 @@
     }
     
    - + See also
      @@ -291,7 +289,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index af4b3961..cfc7d2ed 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -2,8 +2,8 @@ unfused_typed - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -66,20 +66,20 @@

      - + Header
      #include <boost/fusion/functional/adapter/unfused_typed.hpp>
       
      - + Synopsis
      template <class Function, class Sequence>
       class unfused_typed;
       
      - + Template parameters
      @@ -120,8 +120,6 @@

      -

      -

      @@ -136,14 +134,12 @@

      -

      -

    - + Model of
    @@ -190,7 +186,7 @@
    - + Expression Semantics
    @@ -257,7 +253,7 @@
    - + Example
    struct add_assign // applies operator+=
    @@ -325,7 +321,7 @@
     }
     
    - + See also
      @@ -351,7 +347,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index 1f787792..d7c9debc 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -2,8 +2,8 @@ Concepts - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -47,7 +47,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 01b7eaeb..148a7469 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -2,8 +2,8 @@ Callable Object - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ of a function call operator.

      - + Models
        @@ -51,7 +51,7 @@
      - + Examples
      & a_free_function
      @@ -76,7 +76,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html index a801f71b..ed8b8519 100644 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -2,8 +2,8 @@ Deferred Callable Object - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Callable Object

      - + Description

      @@ -37,7 +37,7 @@ to determine the result of a call.

      - + Refinement of
      @@ -79,7 +79,7 @@
      - + Expression requirements
      @@ -117,7 +117,7 @@

      - + Models
        @@ -130,7 +130,7 @@
      - + Examples
      & a_free_function
      @@ -155,7 +155,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index 40a69934..d69900b6 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -2,8 +2,8 @@ Polymorphic Function Object - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Object

      - + Description

      @@ -36,7 +36,7 @@ Callable Object type.

      - + Refinement of
      @@ -79,7 +79,7 @@
      - + Expression requirements
      @@ -128,7 +128,7 @@
      - + Models
        @@ -143,7 +143,7 @@
      - + Examples
      & a_free_function
      @@ -166,7 +166,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html index 6ebcf9f6..6e74b0e1 100644 --- a/doc/html/fusion/functional/concepts/reg_callable.html +++ b/doc/html/fusion/functional/concepts/reg_callable.html @@ -2,8 +2,8 @@ Regular Callable Object - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Object

      - + Description

      @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

      - + Refinement of
      @@ -67,7 +67,7 @@
      - + Expression requirements
      @@ -114,7 +114,7 @@
      - + Models
        @@ -126,7 +126,7 @@
      - + Examples
      & a_free_function
      @@ -149,7 +149,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html index 7eb36bd1..d2f15e0b 100644 --- a/doc/html/fusion/functional/generation.html +++ b/doc/html/fusion/functional/generation.html @@ -2,8 +2,8 @@ Generation - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -42,7 +42,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 343044c8..0f60c80b 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries 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 6a849754..79b59cd6 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -2,8 +2,8 @@ make_fused - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,7 +28,7 @@ make_fused
      - + Description

      @@ -37,7 +37,7 @@ conversion is applied to the target function.

      - + Synopsis
      template <typename F>
      @@ -45,7 +45,7 @@
       make_fused(F const & f);
       
      - + Parameters
      @@ -91,7 +91,7 @@
      - + Expression Semantics
      @@ -104,14 +104,14 @@ Semantics: Returns a fused adapter for f.

      - + Header
      #include <boost/fusion/functional/generation/make_fused.hpp>
       #include <boost/fusion/include/make_fused.hpp>
       
      - + Example
      float sub(float a, float b) { return a - b; }
      @@ -126,7 +126,7 @@
       }
       
      - + See also
      @@ -153,7 +153,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 dedcbf46..a788d191 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -2,8 +2,8 @@ make_fused_function_object - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,7 +28,7 @@ make_fused_function_object
      - + Description

      @@ -38,7 +38,7 @@ conversion is applied to the target function.

      - + Synopsis
      template <typename F>
      @@ -46,7 +46,7 @@
       make_fused_function_object(F const & f);
       
      - + Parameters
      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -106,14 +106,14 @@ for f.

      - + Header
      #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
       #include <boost/fusion/include/make_fused_function_object.hpp>
       
      - + Example
      struct sub
      @@ -141,7 +141,7 @@
       }
       
      - + 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 9a63ec60..28a029ed 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -2,8 +2,8 @@ make_fused_procedure - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,7 +28,7 @@ make_fused_procedure
      - + Description

      @@ -38,7 +38,7 @@ conversion applied to the target function.

      - + Synopsis
      template <typename F>
      @@ -46,7 +46,7 @@
       make_fused_procedure(F const & f);
       
      - + Parameters
      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -106,14 +106,14 @@ f.

      - + Header
      #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
       #include <boost/fusion/include/make_fused_procedure.hpp>
       
      - + Example
      vector<int,int,int> v(1,2,3);
      @@ -122,7 +122,7 @@
       assert(front(v) == 0);
       
      - + See also
      @@ -149,7 +149,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index 236dd164..f82a937b 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -2,8 +2,8 @@ make_unfused - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,7 +28,7 @@ make_unfused
      - + Description

      @@ -38,7 +38,7 @@ conversion is applied to the target function.

      - + Synopsis
      template <typename F>
      @@ -46,7 +46,7 @@
       make_unfused(F const & f);
       
      - + Parameters
      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -105,14 +105,14 @@ Semantics: Returns a unfused adapter for f.

      - + Header
      #include <boost/fusion/functional/generation/make_unfused.hpp>
       #include <boost/fusion/include/make_unfused.hpp>
       
      - + Example
      struct fused_incrementer
      @@ -138,7 +138,7 @@
       }
       
      - + See also
      @@ -165,7 +165,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 89e62b8a..2fe034ef 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -48,7 +48,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 91461d55..780e9ffa 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -2,8 +2,8 @@ make_fused - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,21 +28,21 @@ make_fused
      - + Description

      Returns the result type of make_fused.

      - + Header
      #include <boost/fusion/functional/generation/make_fused.hpp>
       #include <boost/fusion/include/make_fused.hpp>
       
      - + Synopsis
      namespace result_of
      @@ -55,7 +55,7 @@
       }
       
      - + See also
      @@ -74,7 +74,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 6f246a41..d5d8434b 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -2,8 +2,8 @@ make_fused_function_object - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,21 +28,21 @@ make_fused_function_object
      - + Description

      Returns the result type of make_fused_function_object.

      - + Header
      #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
       #include <boost/fusion/include/make_fused_function_object.hpp>
       
      - + Synopsis
      namespace result_of
      @@ -55,7 +55,7 @@
       }
       
      - + See also
      @@ -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 fa197e53..eae2905b 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -2,8 +2,8 @@ make_fused_procedure - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,21 +28,21 @@ make_fused_procedure
      - + Description

      Returns the result type of make_fused_procedure.

      - + Header
      #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
       #include <boost/fusion/include/make_fused_procedure.hpp>
       
      - + Synopsis
      namespace result_of
      @@ -55,7 +55,7 @@
       }
       
      - + See also
      @@ -74,7 +74,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 5fb2a50a..ec454c28 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -2,8 +2,8 @@ make_unfused - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,21 +28,21 @@ make_unfused
      - + Description

      Returns the result type of make_unfused.

      - + Header
      #include <boost/fusion/functional/generation/make_unfused.hpp>
       #include <boost/fusion/include/make_unfused.hpp>
       
      - + Synopsis
      namespace result_of
      @@ -55,7 +55,7 @@
       }
       
      - + See also
      @@ -74,7 +74,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index a298c656..4576c2ef 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -2,8 +2,8 @@ Invocation - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -43,7 +43,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index 70a1116f..d37df442 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -45,7 +45,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index c318a3a9..108f84bb 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -2,8 +2,8 @@ invoke - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

      - + Synopsis
      template<
      @@ -67,7 +67,7 @@
       invoke(Function f, Sequence const & s);
       
      - + Parameters
      @@ -133,7 +133,7 @@
      - + Expression Semantics
      @@ -149,20 +149,20 @@ 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
      @@ -195,7 +195,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 2a91e6e4..79702ccc 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -2,8 +2,8 @@ invoke_function_object - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,7 +28,7 @@ invoke_function_object
      - + Description

      @@ -43,7 +43,7 @@ Constructors can be called applying Boost.Functional/Factory.

      - + Synopsis
      template<
      @@ -61,7 +61,7 @@
       invoke_function_object(Function f, Sequence const & s);
       
      - + Parameters
      @@ -127,7 +127,7 @@
      - + Expression Semantics
      @@ -143,13 +143,13 @@ as arguments and returns the result of the call expression.

      - + Header
      #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
       
      - + Example
      struct sub
      @@ -175,7 +175,7 @@
       }
       
      - + See also
      @@ -208,7 +208,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 53683ee3..5e356cf0 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -2,8 +2,8 @@ invoke_procedure - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,7 +28,7 @@ invoke_procedure
      - + Description

      @@ -52,7 +52,7 @@ isn't implemented).

      - + Synopsis
      template<
      @@ -70,7 +70,7 @@
       invoke_procedure(Function f, Sequence const & s);
       
      - + Parameters
      @@ -136,7 +136,7 @@
      - + Expression Semantics
      @@ -151,13 +151,13 @@ as arguments.

      - + Header
      #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
       
      - + Example
      vector<int,int> v(1,2);
      @@ -166,7 +166,7 @@
       assert(front(v) == 3);
       
      - + See also
      @@ -199,7 +199,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index f3401de4..29fbd57c 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -2,8 +2,8 @@ Limits - - + + @@ -13,27 +13,27 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Header
      #include <boost/fusion/functional/invocation/limits.hpp>
       
      - + Macros

      @@ -63,7 +63,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index a52dcf91..c858ae14 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -45,7 +45,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 97b35100..cd28e075 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -2,8 +2,8 @@ invoke - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of invoke.

      - + Synopsis
      namespace result_of
      @@ -50,7 +50,7 @@
       }
       
      - + See also
      @@ -74,7 +74,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 ed6346ad..a18e8649 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -2,8 +2,8 @@ invoke_function_object - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,14 +28,14 @@ invoke_function_object
      - + Description

      Returns the result type of invoke_function_object.

      - + Synopsis
      namespace result_of
      @@ -51,7 +51,7 @@
       }
       
      - + See also
      @@ -75,7 +75,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 f647ecde..caed085c 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -2,8 +2,8 @@ invoke_procedure - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -28,14 +28,14 @@ invoke_procedure
      - + Description

      Returns the result type of invoke_procedure.

      - + Synopsis
      namespace result_of
      @@ -51,7 +51,7 @@
       }
       
      - + See also
      @@ -75,7 +75,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 33ba14ec..a3001ca6 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -2,8 +2,8 @@ Introduction - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -116,7 +116,7 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types [1]. In MPL, + wish to work solely on types [1]. In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from @@ -130,7 +130,7 @@



      -

      [1] +

      [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) @@ -149,7 +149,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 5001eea9..0a592a43 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -2,8 +2,8 @@ Iterator - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -81,7 +81,7 @@ Sequence.

      - + Header

      #include <boost/fusion/iterator.hpp>
      @@ -99,7 +99,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html index a035be85..a7b046aa 100644 --- a/doc/html/fusion/iterator/concepts.html +++ b/doc/html/fusion/iterator/concepts.html @@ -2,8 +2,8 @@ Concepts - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -60,7 +60,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html index 37456418..ce1be982 100644 --- a/doc/html/fusion/iterator/concepts/associative_iterator.html +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html @@ -2,8 +2,8 @@ Associative Iterator - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Iterator

      - + Description

      @@ -50,7 +50,7 @@

      - + Refinement of
      @@ -61,7 +61,7 @@ Access Iterator

      - + Expression requirements
      @@ -113,7 +113,7 @@
      - + Meta Expressions
      @@ -174,7 +174,7 @@
      - + Models
        @@ -222,7 +222,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 7bdc76a3..bdde4b2e 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -2,8 +2,8 @@ Bidirectional Iterator - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -28,7 +28,7 @@ Iterator

        - + Description

        @@ -58,7 +58,7 @@

        - + Refinement of
        @@ -66,7 +66,7 @@ Forward Iterator

        - + Expression requirements
        @@ -173,7 +173,7 @@
      - + Meta Expressions
      @@ -208,7 +208,7 @@
      - + Expression Semantics
      @@ -248,7 +248,7 @@
      - + Invariants

      @@ -269,7 +269,7 @@

    - + Models
      @@ -311,7 +311,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 1046585f..aaa9922f 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -2,8 +2,8 @@ Forward Iterator - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Iterator

      - + Description

      @@ -59,7 +59,7 @@

      - + Expression requirements
      @@ -237,7 +237,7 @@
    - + Meta Expressions
    @@ -348,7 +348,7 @@
    - + Expression Semantics
    @@ -474,7 +474,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      @@ -574,7 +574,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 65e76dfc..85c106c8 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -2,8 +2,8 @@ Random Access Iterator - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Access Iterator

      - + Description

      @@ -59,7 +59,7 @@

      - + Refinement of
      @@ -68,7 +68,7 @@ Iterator

      - + Expression requirements
      @@ -175,7 +175,7 @@
    - + Meta Expressions
    @@ -238,7 +238,7 @@
    - + Models
      @@ -282,7 +282,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 931cb0ee..d10da48a 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -52,7 +52,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index 5066415d..fe2a90b9 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -2,8 +2,8 @@ advance - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      template<
      @@ -44,7 +44,7 @@
       typename result_of::advance<I, M>::type advance(I const& i);
       
      -

      Table 1.6. Parameters

      +

      Table 1.6. Parameters

      @@ -109,7 +109,7 @@

      - + Expression Semantics
      @@ -128,14 +128,14 @@ may be negative.

      - + Header
      #include <boost/fusion/iterator/advance.hpp>
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      typedef vector<int,int,int> vec;
      @@ -155,7 +155,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html index ee54f294..c7ebdf3a 100644 --- a/doc/html/fusion/iterator/functions/advance_c.html +++ b/doc/html/fusion/iterator/functions/advance_c.html @@ -2,8 +2,8 @@ advance_c - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      template<
      @@ -44,7 +44,7 @@
       typename result_of::advance_c<I, N>::type advance_c(I const& i);
       
      -

      Table 1.7. Parameters

      +

      Table 1.7. Parameters

      @@ -108,7 +108,7 @@

      - + Expression Semantics
      @@ -127,14 +127,14 @@ may be negative.

      - + Header
      #include <boost/fusion/iterator/advance.hpp>
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      typedef vector<int,int,int> vec;
      @@ -154,7 +154,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html index 66a124c7..13545705 100644 --- a/doc/html/fusion/iterator/functions/deref.html +++ b/doc/html/fusion/iterator/functions/deref.html @@ -2,8 +2,8 @@ deref - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Deferences an iterator.

      - + Synopsis
      template<
      @@ -43,7 +43,7 @@
       typename result_of::deref<I>::type deref(I const& i);
       
      -

      Table 1.2. Parameters

      +

      Table 1.2. Parameters

      @@ -88,7 +88,7 @@

      - + Expression Semantics
      @@ -102,14 +102,14 @@ i.

      - + Header
      #include <boost/fusion/iterator/deref.hpp>
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      typedef vector<int,int&> vec;
      @@ -132,7 +132,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html index ebefed36..22fb600f 100644 --- a/doc/html/fusion/iterator/functions/deref_data.html +++ b/doc/html/fusion/iterator/functions/deref_data.html @@ -2,8 +2,8 @@ deref_data - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ an associative iterator.

      - + Synopsis
      template<
      @@ -44,7 +44,7 @@
       typename result_of::deref_data<I>::type deref(I const& i);
       
      -

      Table 1.8. Parameters

      +

      Table 1.8. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

      - + Header
      #include <boost/fusion/iterator/deref_data.hpp>
       #include <boost/fusion/include/deref_data.hpp>
       
      - + Example
      typedef map<pair<float,int&> > map;
      @@ -132,7 +132,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html index 0ba1e9f6..ec969fc7 100644 --- a/doc/html/fusion/iterator/functions/distance.html +++ b/doc/html/fusion/iterator/functions/distance.html @@ -2,8 +2,8 @@ distance - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the distance between 2 iterators.

      - + Synopsis
      template<
      @@ -44,7 +44,7 @@
       typename result_of::distance<I, J>::type distance(I const& i, J const& j);
       
      -

      Table 1.5. Parameters

      +

      Table 1.5. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -103,14 +103,14 @@ iterators i and j.

      - + Header
      #include <boost/fusion/iterator/distance.hpp>
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      typedef vector<int,int,int> vec;
      @@ -130,7 +130,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html index 5c9a726b..f1898adc 100644 --- a/doc/html/fusion/iterator/functions/next.html +++ b/doc/html/fusion/iterator/functions/next.html @@ -2,8 +2,8 @@ next - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator 1 position forwards.

      - + Synopsis
      template<
      @@ -43,7 +43,7 @@
       typename result_of::next<I>::type next(I const& i);
       
      -

      Table 1.3. Parameters

      +

      Table 1.3. Parameters

      @@ -88,7 +88,7 @@

      - + Expression Semantics
      @@ -103,14 +103,14 @@ next element after i.

      - + Header
      #include <boost/fusion/iterator/next.hpp>
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      typedef vector<int,int,int> vec;
      @@ -132,7 +132,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html index 72e54a82..be4a5ff5 100644 --- a/doc/html/fusion/iterator/functions/prior.html +++ b/doc/html/fusion/iterator/functions/prior.html @@ -2,8 +2,8 @@ prior - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator 1 position backwards.

      - + Synopsis
      template<
      @@ -43,7 +43,7 @@
       typename result_of::prior<I>::type prior(I const& i);
       
      -

      Table 1.4. Parameters

      +

      Table 1.4. Parameters

      @@ -88,7 +88,7 @@

      - + Expression Semantics
      @@ -103,14 +103,14 @@ element prior to i.

      - + Header
      #include <boost/fusion/iterator/prior.hpp>
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      typedef vector<int,int> vec;
      @@ -131,7 +131,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html index 273c6087..8ebcda0b 100644 --- a/doc/html/fusion/iterator/metafunctions.html +++ b/doc/html/fusion/iterator/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -51,7 +51,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index f86aed41..d9a05d52 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -2,8 +2,8 @@ advance - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator a specified distance.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.18. Parameters

      +

      Table 1.18. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -130,14 +130,14 @@ may be negative.

      - + Header
      #include <boost/fusion/iterator/advance.hpp>
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      typedef vector<int,double,char> vec;
      @@ -159,7 +159,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html index d6b4a24b..262b6a0f 100644 --- a/doc/html/fusion/iterator/metafunctions/advance_c.html +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html @@ -2,8 +2,8 @@ advance_c - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.19. Parameters

      +

      Table 1.19. Parameters

      @@ -111,7 +111,7 @@

      - + Expression Semantics
      @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

      - + Header
      #include <boost/fusion/iterator/advance.hpp>
       #include <boost/fusion/include/advance.hpp>
       
      - + Example
      typedef vector<int,double,char> vec;
      @@ -158,7 +158,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html index d651a46e..e10c8175 100644 --- a/doc/html/fusion/iterator/metafunctions/deref.html +++ b/doc/html/fusion/iterator/metafunctions/deref.html @@ -2,8 +2,8 @@ deref - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the type that will be returned by dereferencing an iterator.

      - + Synposis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.13. Parameters

      +

      Table 1.13. Parameters

      @@ -91,7 +91,7 @@

      - + Expression Semantics
      @@ -105,14 +105,14 @@ an iterator of type I.

      - + Header
      #include <boost/fusion/iterator/deref.hpp>
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      typedef vector<int,int&> vec;
      @@ -138,7 +138,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html index bba1e4d9..1db23af7 100644 --- a/doc/html/fusion/iterator/metafunctions/deref_data.html +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html @@ -2,8 +2,8 @@ deref_data - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ referenced by an associative iterator.

      - + Synposis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.22. Parameters

      +

      Table 1.22. Parameters

      @@ -92,7 +92,7 @@

      - + Expression Semantics
      @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

      - + Header
      #include <boosta/fusion/iterator/deref_data.hpp>
       #include <boost/fusion/include/deref_data.hpp>
       
      - + Example
      typedef map<pair<float,int> > map;
      @@ -133,7 +133,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html index b796b5d8..09354000 100644 --- a/doc/html/fusion/iterator/metafunctions/distance.html +++ b/doc/html/fusion/iterator/metafunctions/distance.html @@ -2,8 +2,8 @@ distance - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the distance between two iterators.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.17. Parameters

      +

      Table 1.17. Parameters

      @@ -92,7 +92,7 @@

      - + Expression Semantics
      @@ -108,14 +108,14 @@ J.

      - + Header
      #include <boost/fusion/iterator/distance.hpp>
       #include <boost/fusion/include/distance.hpp>
       
      - + Example
      typedef vector<int,double,char> vec;
      @@ -138,7 +138,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html index 0e3dc767..40f4ff5f 100644 --- a/doc/html/fusion/iterator/metafunctions/equal_to.html +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html @@ -2,8 +2,8 @@ equal_to - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ and J are equal.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
       };
       
      -

      Table 1.16. Parameters

      +

      Table 1.16. Parameters

      @@ -93,7 +93,7 @@

      - + Expression Semantics
      @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

      - + Header
      #include <boost/fusion/iterator/equal_to.hpp>
       #include <boost/fusion/include/equal_to.hpp>
       
      - + Example
      typedef vector<int,double> vec;
      @@ -137,7 +137,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html index 80d17c3e..b9b00d67 100644 --- a/doc/html/fusion/iterator/metafunctions/key_of.html +++ b/doc/html/fusion/iterator/metafunctions/key_of.html @@ -2,8 +2,8 @@ key_of - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ iterator.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.20. Parameters

      +

      Table 1.20. Parameters

      @@ -92,7 +92,7 @@

      - + Expression Semantics
      @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

      - + Header
      #include <boost/fusion/iterator/key_of.hpp>
       #include <boost/fusion/include/key_of.hpp>
       
      - + Example
      typedef map<pair<float,int> > vec;
      @@ -133,7 +133,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html index f8b7089e..81e1b36c 100644 --- a/doc/html/fusion/iterator/metafunctions/next.html +++ b/doc/html/fusion/iterator/metafunctions/next.html @@ -2,8 +2,8 @@ next - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the type of the next iterator in a sequence.

      - + Synposis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.14. Parameters

      +

      Table 1.14. Parameters

      @@ -91,7 +91,7 @@

      - + Expression Semantics
      @@ -106,14 +106,14 @@ next element in the sequence after I.

      - + Header
      #include <boost/fusion/iterator/next.hpp>
       #include <boost/fusion/include/next.hpp>
       
      - + Example
      typedef vector<int,double> vec;
      @@ -133,7 +133,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html index 708ce55b..6a5b5a0d 100644 --- a/doc/html/fusion/iterator/metafunctions/prior.html +++ b/doc/html/fusion/iterator/metafunctions/prior.html @@ -2,8 +2,8 @@ prior - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the type of the previous iterator in a sequence.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.15. Parameters

      +

      Table 1.15. Parameters

      @@ -91,7 +91,7 @@

      - + Expression Semantics
      @@ -106,14 +106,14 @@ previous element in the sequence before I.

      - + Header
      #include <boost/fusion/iterator/prior.hpp>
       #include <boost/fusion/include/prior.hpp>
       
      - + Example
      typedef vector<int,double> vec;
      @@ -136,7 +136,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html index db7f67ca..7d252858 100644 --- a/doc/html/fusion/iterator/metafunctions/value_of.html +++ b/doc/html/fusion/iterator/metafunctions/value_of.html @@ -2,8 +2,8 @@ value_of - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the type stored at the position of an iterator.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.12. Parameters

      +

      Table 1.12. Parameters

      @@ -91,7 +91,7 @@

      - + Expression Semantics
      @@ -105,14 +105,14 @@ a sequence at iterator position I.

      - + Header
      #include <boost/fusion/iterator/value_of.hpp>
       #include <boost/fusion/include/value_of.hpp>
       
      - + Example
      typedef vector<int,int&,const int&> vec;
      @@ -136,7 +136,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html index 5254457f..60b628dc 100644 --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html @@ -2,8 +2,8 @@ value_of_data - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ by an associative iterator references.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.21. Parameters

      +

      Table 1.21. Parameters

      @@ -92,7 +92,7 @@

      - + Expression Semantics
      @@ -107,14 +107,14 @@ I.

      - + Header
      #include <boost/fusion/iterator/value_of_data.hpp>
       #include <boost/fusion/include/value_of_data.hpp>
       
      - + Example
      typedef map<pair<float,int> > vec;
      @@ -134,7 +134,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html index 72ece20b..062ccc08 100644 --- a/doc/html/fusion/iterator/operator.html +++ b/doc/html/fusion/iterator/operator.html @@ -2,8 +2,8 @@ Operator - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -50,7 +50,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index 59668b78..b06acd14 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -2,8 +2,8 @@ Operator == - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,14 +28,14 @@ ==

      - + Description

      Compares 2 iterators for equality.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
       unspecified operator==(I const& i, J const& i);
       
      -

      Table 1.10. Parameters

      +

      Table 1.10. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -104,7 +104,7 @@ and j respectively.

      - + Header
      #include <boost/fusion/iterator/equal_to.hpp>
      @@ -122,7 +122,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html index 5f264e59..fd761e4d 100644 --- a/doc/html/fusion/iterator/operator/operator_inequality.html +++ b/doc/html/fusion/iterator/operator/operator_inequality.html @@ -2,8 +2,8 @@ Operator != - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,14 +28,14 @@ !=

      - + Description

      Compares 2 iterators for inequality.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
       unspecified operator==(I const& i, J const& i);
       
      -

      Table 1.11. Parameters

      +

      Table 1.11. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -102,7 +102,7 @@ and j respectively.

      - + Header
      #include <boost/fusion/iterator/equal_to.hpp>
      @@ -120,7 +120,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html index 03904564..d2b5411e 100644 --- a/doc/html/fusion/iterator/operator/operator_unary_star.html +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html @@ -2,8 +2,8 @@ Operator * - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,14 +28,14 @@ *

      - + Description

      Dereferences an iterator.

      - + Synopsis
      template<
      @@ -44,7 +44,7 @@
       typename result_of::deref<I>::type operator*(unspecified<I> const& i);
       
      -

      Table 1.9. Parameters

      +

      Table 1.9. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

      - + Header
      #include <boost/fusion/iterator/deref.hpp>
       #include <boost/fusion/include/deref.hpp>
       
      - + Example
      typedef vector<int,int&> vec;
      @@ -133,7 +133,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index ce4a787e..d8c6b646 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -2,8 +2,8 @@ Notes - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      - + Recursive Inlined Functions

      @@ -40,7 +40,7 @@ remains linear.

      - + Overloaded Functions

      @@ -50,7 +50,7 @@ given a key, k.

      - + Tag Dispatching

      @@ -101,7 +101,7 @@

      - + Extensibility

      @@ -136,7 +136,7 @@ it very cheap to pass around.

      - + Element Conversion

      @@ -157,7 +157,7 @@ Arrays:

      - Array arguments are deduced to reference to const types. For example [10]: + Array arguments are deduced to reference to const types. For example [10]:

      make_list("Donald", "Daisy")
       
      @@ -185,7 +185,7 @@
      list<void (*)(int)>
       

      - + boost::ref

      @@ -225,7 +225,7 @@



      -

      [10] +

      [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref @@ -244,7 +244,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index efc1e401..ab0b7eb2 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -2,8 +2,8 @@ Organization - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -35,7 +35,7 @@ The library is organized in three layers:

      - + Layers

      @@ -60,7 +60,7 @@ against.

      - + Directory

        @@ -181,7 +181,7 @@

      - + Example

      @@ -196,11 +196,11 @@

      The first includes all containers The second includes only list - [4]. + [4].



      -

      [4] +

      [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

      @@ -217,7 +217,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index f4e461f6..a65a0ad2 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -2,8 +2,8 @@ Preface - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -33,7 +33,7 @@ --Niklaus Wirth

      - + Description

      @@ -51,7 +51,7 @@ of compile time metaprogramming with runtime programming.

      - + Motivation

      @@ -77,7 +77,7 @@ an instant AHA! moment.

      - + How to use this manual

      @@ -85,7 +85,7 @@ icons precede some text to indicate:

      -

      Table 1.1. Icons

      +

      Table 1.1. Icons

      @@ -188,7 +188,7 @@ Tools.

      - + Support

      @@ -213,7 +213,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 79b6e7a5..ee51a060 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -2,8 +2,8 @@ Quick Start - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -34,13 +34,13 @@

      For starters, we shall include all of Fusion's Sequence(s) - [2]: + [2]:

      #include <boost/fusion/sequence.hpp>
       #include <boost/fusion/include/sequence.hpp>
       

      - Let's begin with a vector [3]: + Let's begin with a vector [3]:

      vector<int, char, std::string> stuff(1, 'x', "howdy");
       int i = at_c<0>(stuff);
      @@ -56,7 +56,7 @@
             Let's see some examples.
           

      - + Print the vector as XML

      @@ -97,7 +97,7 @@

      - +
      [Caution][Caution] Caution

      @@ -111,7 +111,7 @@ print just about any Fusion Sequence.

      - + Print only pointers

      @@ -143,7 +143,7 @@ Easy, right?

      - + Associative tuples

      @@ -215,7 +215,7 @@ a dog or a whole alternate_universe.

      - + Tip of the Iceberg

      @@ -226,12 +226,12 @@



      -

      [2] +

      [2] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

      -

      [3] +

      [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. @@ -249,7 +249,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index dfcd803a..5681308c 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -2,8 +2,8 @@ References - - + + @@ -12,14 +12,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHome +PrevUpHome

      @@ -67,7 +67,7 @@
      -PrevUpHome +PrevUpHome
      diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 0ac4c573..03b7d0d4 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -2,8 +2,8 @@ Sequence - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

      - + Header

      #include <boost/fusion/sequence.hpp>
      @@ -78,7 +78,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html index 95f9f77b..8a2c77ff 100644 --- a/doc/html/fusion/sequence/concepts.html +++ b/doc/html/fusion/sequence/concepts.html @@ -2,8 +2,8 @@ Concepts - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

      - + Traversal

      @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

      - + Associativity

      @@ -73,7 +73,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 46bf3a0b..c6306d57 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -2,8 +2,8 @@ Associative Sequence - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Sequence

      - + Description

      @@ -64,7 +64,7 @@

      - + Valid Expressions
      @@ -114,8 +114,6 @@

      -

      -

      @@ -135,8 +133,6 @@

      -

      -

      @@ -173,7 +169,7 @@

      - + Result Type Expressions
      @@ -247,7 +243,7 @@

      - + Expression Semantics
      @@ -302,7 +298,7 @@
      - + Models
        @@ -348,7 +344,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 58333c55..123d867d 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -2,8 +2,8 @@ Bidirectional Sequence - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -28,7 +28,7 @@ Sequence

        - + Description

        @@ -37,7 +37,7 @@ Iterator.

        - + Refinement of
        @@ -66,7 +66,7 @@
        - + Valid Expressions
        @@ -117,8 +117,6 @@

        -

        -

        @@ -139,8 +137,6 @@

        -

        -

        @@ -160,8 +156,6 @@

        -

        -

        @@ -198,7 +192,7 @@

      - + Result Type Expressions
      @@ -259,7 +253,7 @@
      - + Expression Semantics
      @@ -299,7 +293,7 @@
      - + Models
        @@ -340,7 +334,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 58526672..f466f075 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -2,8 +2,8 @@ Forward Sequence - - + + @@ -13,14 +13,14 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext

        @@ -28,7 +28,7 @@ Sequence

        - + Description

        @@ -60,7 +60,7 @@

        - + Valid Expressions
        @@ -110,8 +110,6 @@

        -

        -

        @@ -132,8 +130,6 @@

        -

        -

        @@ -154,8 +150,6 @@

        -

        -

        @@ -176,8 +170,6 @@

        -

        -

        @@ -197,8 +189,6 @@

        -

        -

        @@ -235,7 +225,7 @@

      - + Result Type Expressions
      @@ -320,7 +310,7 @@
      - + Expression Semantics
      @@ -408,7 +398,7 @@
      - + Invariants

      @@ -435,7 +425,7 @@

    - + Models
      @@ -494,7 +484,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 556e2879..bbe77682 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -2,8 +2,8 @@ Random Access Sequence - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -28,7 +28,7 @@ Access Sequence

      - + Description

      @@ -38,7 +38,7 @@ sequence elements.

      - + Refinement of
      @@ -73,7 +73,7 @@
      - + Valid Expressions
      @@ -124,8 +124,6 @@

      -

      -

      @@ -146,8 +144,6 @@

      -

      -

      @@ -167,8 +163,6 @@

      -

      -

      @@ -205,7 +199,7 @@

    - + Result Type Expressions
    @@ -291,7 +285,7 @@

    - + Expression Semantics
    @@ -331,7 +325,7 @@
    - + Models
      @@ -372,7 +366,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 3641d9c3..5da5d809 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -2,8 +2,8 @@ Intrinsic - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -36,10 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence[5]. + repertoire. They need to be implemented for each Fusion Sequence[5].

      - + Header
      #include <boost/fusion/sequence/intrinsic.hpp>
      @@ -47,7 +47,7 @@
       


      -

      [5] +

      [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

      @@ -64,7 +64,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index f3586f56..070c57e3 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -2,8 +2,8 @@ Functions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -51,7 +51,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 8e50c4e7..e6534cca 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -2,8 +2,8 @@ at - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      at
      - + Description

      Returns the N-th element from the beginning of the sequence.

      - + Synopsis
      template <typename N, typename Sequence>
      @@ -46,7 +46,7 @@
       at(Sequence const& seq);
       
      - + Parameters
      @@ -112,7 +112,7 @@
      - + Expression Semantics
      @@ -138,14 +138,14 @@
      deref(advance<N>(begin(s)))
       
      - + Header
      #include <boost/fusion/sequence/intrinsic/at.hpp>
       #include <boost/fusion/include/at.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -163,7 +163,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html index 374a911a..111e08a2 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html @@ -2,8 +2,8 @@ at_c - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the N-th element from the beginning of the sequence.

      - + Synopsis
      template <int N, typename Sequence>
      @@ -46,7 +46,7 @@
       at_c(Sequence const& seq);
       
      - + Parameters
      @@ -111,7 +111,7 @@
      - + Expression Semantics
      @@ -138,14 +138,14 @@
      deref(advance<N>(begin(s)))
       
      - + Header
      #include <boost/fusion/sequence/intrinsic/at_c.hpp>
       #include <boost/fusion/include/at_c.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -163,7 +163,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html index ebf8c1b2..b5f31aad 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html @@ -2,8 +2,8 @@ at_key - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the element associated with a Key from the sequence.

      - + Synopsis
      template <typename Key, typename Sequence>
      @@ -46,7 +46,7 @@
       at_key(Sequence const& seq);
       
      - + Parameters
      @@ -111,7 +111,7 @@
      - + Expression Semantics
      @@ -134,14 +134,14 @@ with Key.

      - + Header
      #include <boost/fusion/sequence/intrinsic/at_key.hpp>
       #include <boost/fusion/include/at_key.hpp>
       
      - + Example
      set<int, char, bool> s(1, 'x', true);
      @@ -159,7 +159,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html index 2cf83fcc..b4ae81e1 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/back.html +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html @@ -2,8 +2,8 @@ back - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the last element in the sequence.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       back(Sequence const& seq);
       
      - + Parameters
      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -115,14 +115,14 @@ in the sequence.

      - + Header
      #include <boost/fusion/sequence/intrinsic/back.hpp>
       #include <boost/fusion/include/back.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -140,7 +140,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html index c38bbe2e..6d235f4f 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html @@ -2,8 +2,8 @@ begin - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns an iterator pointing to the first element in the sequence.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       begin(Sequence const& seq);
       
      - + Parameters
      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -126,14 +126,14 @@ to the first element in the sequence.

      - + Header
      #include <boost/fusion/sequence/intrinsic/begin.hpp>
       #include <boost/fusion/include/begin.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -151,7 +151,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html index ab5e14f9..9aa72900 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html @@ -2,8 +2,8 @@ empty - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

      - + Synopsis
      template <typename Sequence>
      @@ -44,7 +44,7 @@
       empty(Sequence const& seq);
       
      - + Parameters
      @@ -90,7 +90,7 @@
      - + Expression Semantics
      @@ -104,14 +104,14 @@ to false.

      - + Header
      #include <boost/fusion/sequence/intrinsic/empty.hpp>
       #include <boost/fusion/include/empty.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -129,7 +129,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html index 560cb4e9..c5178cc6 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/end.html +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html @@ -2,8 +2,8 @@ end - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      end
      - + Description

      Returns an iterator pointing to one element past the end of the sequence.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       end(Sequence const& seq);
       
      - + Parameters
      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -126,14 +126,14 @@ to one element past the end of the sequence.

      - + Header
      #include <boost/fusion/sequence/intrinsic/end.hpp>
       #include <boost/fusion/include/end.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -151,7 +151,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html index 1a734eb5..c3b1d698 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/front.html +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html @@ -2,8 +2,8 @@ front - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the first element in the sequence.

      - + Synopsis
      template <typename Sequence>
      @@ -46,7 +46,7 @@
       front(Sequence const& seq);
       
      - + Parameters
      @@ -92,7 +92,7 @@
      - + Expression Semantics
      @@ -115,14 +115,14 @@ in the sequence.

      - + Header
      #include <boost/fusion/sequence/intrinsic/front.hpp>
       #include <boost/fusion/include/front.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -140,7 +140,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html index f2b9952c..c990987d 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html @@ -2,8 +2,8 @@ has_key - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -37,7 +37,7 @@ to false.

      - + Synopsis
      template <typename Key, typename Sequence>
      @@ -45,7 +45,7 @@
       has_key(Sequence const& seq);
       
      - + Parameters
      @@ -110,7 +110,7 @@
      - + Expression Semantics
      @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

      - + Header
      #include <boost/fusion/sequence/intrinsic/has_key.hpp>
       #include <boost/fusion/include/has_key.hpp>
       
      - + Example
      set<int, char, bool> s(1, 'x', true);
      @@ -149,7 +149,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html index e141bc03..b00e1fa6 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/size.html +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html @@ -2,8 +2,8 @@ size - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

      - + Synopsis
      template <typename Sequence>
      @@ -43,7 +43,7 @@
       size(Sequence const& seq);
       
      - + Parameters
      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -103,14 +103,14 @@ in the sequence.

      - + Header
      #include <boost/fusion/sequence/intrinsic/size.hpp>
       #include <boost/fusion/include/size.hpp>
       
      - + Example
      vector<int, int, int> v(1, 2, 3);
      @@ -128,7 +128,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html index a69b9c33..f98200d1 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html @@ -2,8 +2,8 @@ swap - - + + @@ -13,35 +13,35 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Performs an element by element swap of the elements in 2 sequences.

      - + Synopsis
      template<typename Seq1, typename Seq2>
       void swap(Seq1& seq1, Seq2& seq2);
       
      - + Parameters
      @@ -87,7 +87,7 @@
      - + Expression Semantics
      @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

      - + Example
      vector<int, std::string> v1(1, "hello"), v2(2, "world");
      @@ -126,7 +126,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html index a8dfc9f2..f5f06ad5 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html @@ -2,8 +2,8 @@ Metafunctions - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -54,7 +54,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index f5060623..ee56748e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -2,8 +2,8 @@ at - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      at
      - + Description

      - Returns the result type of at[6]. + Returns the result type of at[6].

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.29. Parameters

      +

      Table 1.29. Parameters

      @@ -111,7 +111,7 @@

      - + Expression Semantics
      @@ -125,14 +125,14 @@ using at to access the Nth element of Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/at.hpp>
       #include <boost/fusion/include/at.hpp>
       
      - + Example
      typedef vector<int,float,char> vec;
      @@ -140,7 +140,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 to @@ -159,7 +159,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index bbc11396..5a305186 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -2,8 +2,8 @@ at_c - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      - Returns the result type of at_c[7]. + Returns the result type of at_c[7].

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.30. Parameters

      +

      Table 1.30. Parameters

      @@ -110,7 +110,7 @@

      - + Expression Semantics
      @@ -124,14 +124,14 @@ using at_c to access the Mth element of Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/at.hpp>
       #include <boost/fusion/include/at.hpp>
       
      - + Example
      typedef vector<int,float,char> vec;
      @@ -139,7 +139,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 @@ -158,7 +158,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 7d5c9449..15f78b03 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -2,8 +2,8 @@ at_key - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      - Returns the result type of at_key[8]. + Returns the result type of at_key[8].

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.34. Parameters

      +

      Table 1.34. Parameters

      @@ -110,7 +110,7 @@

      - + Expression Semantics
      @@ -126,14 +126,14 @@ Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/at_key.hpp>
       #include <boost/fusion/include/at_key.hpp>
       
      - + Example
      typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
      @@ -141,7 +141,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 want @@ -160,7 +160,7 @@


      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index e3fc83e4..7fb98818 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -2,8 +2,8 @@ back - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of back.

      - + Synopsis
      template<typename Seq>
      @@ -44,7 +44,7 @@
       };
       
      -

      Table 1.27. Parameters

      +

      Table 1.27. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

      - + Header
      #include <boost/fusion/sequence/intrinsic/back.hpp>
       #include <boost/fusion/include/back.hpp>
       
      - + Example
      typedef vector<int,char> vec;
      @@ -128,7 +128,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html index 1d204889..9be5375b 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html @@ -2,8 +2,8 @@ begin - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of begin.

      - + Synopsis
      template<typename Seq>
      @@ -44,7 +44,7 @@
       };
       
      -

      Table 1.23. Parameters

      +

      Table 1.23. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -123,14 +123,14 @@ to the first element of Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/begin.hpp>
       #include <boost/fusion/include/begin.hpp>
       
      - + Example
      typedef vector<int> vec;
      @@ -149,7 +149,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html index 4d7c8c7b..909b7cd9 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html @@ -2,8 +2,8 @@ empty - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of empty.

      - + Synopsis
      template<typename Seq>
      @@ -44,7 +44,7 @@
       };
       
      -

      Table 1.25. Parameters

      +

      Table 1.25. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -105,14 +105,14 @@ mpl::false_ otherwise.

      - + Header
      #include <boost/fusion/sequence/intrinsic/empty.hpp>
       #include <boost/fusion/include/empty.hpp>
       
      - + Example
      typedef vector<> empty_vec;
      @@ -133,7 +133,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html index 3d5388c6..1f2a815c 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html @@ -2,8 +2,8 @@ end - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      end
      - + Description

      Returns the result type of end.

      - + Synopsis
      template<typename Seq>
      @@ -44,7 +44,7 @@
       };
       
      -

      Table 1.24. Parameters

      +

      Table 1.24. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -123,14 +123,14 @@ one past the end of Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/end.hpp>
       #include <boost/fusion/include/end.hpp>
       
      - + Example
      typedef vector<int> vec;
      @@ -149,7 +149,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html index c4bb9303..fa6bc78d 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html @@ -2,8 +2,8 @@ front - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of front.

      - + Synopsis
      template<typename Seq>
      @@ -44,7 +44,7 @@
       };
       
      -

      Table 1.26. Parameters

      +

      Table 1.26. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

      - + Header
      #include <boost/fusion/sequence/intrinsic/front.hpp>
       #include <boost/fusion/include/front.hpp>
       
      - + Example
      typedef vector<int,char> vec;
      @@ -129,7 +129,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html index b30efb45..212348c2 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html @@ -2,8 +2,8 @@ has_key - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of has_key.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.33. Parameters

      +

      Table 1.33. Parameters

      @@ -110,7 +110,7 @@

      - + Expression Semantics
      @@ -127,14 +127,14 @@ mpl::false_ otherwise.

      - + Header
      #include <boost/fusion/sequence/intrinsic/has_key.hpp>
       #include <boost/fusion/include/has_key.hpp>
       
      - + Example
      typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
      @@ -153,7 +153,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html index bf27573e..dc2ae281 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html @@ -2,8 +2,8 @@ size - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the result type of size.

      - + Synopsis
      template<typename Seq>
      @@ -44,7 +44,7 @@
       };
       
      -

      Table 1.28. Parameters

      +

      Table 1.28. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -104,14 +104,14 @@ in Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/size.hpp>
       #include <boost/fusion/include/size.hpp>
       
      - + Example
      typedef vector<int,float,char> vec;
      @@ -130,7 +130,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html index 8e60838f..047da4b4 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html @@ -2,8 +2,8 @@ swap - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the return type of swap.

      - + Synopsis
      template<typename Seq1, typename Seq2>
      @@ -44,7 +44,7 @@
       };
       
      -

      Table 1.36. Parameters

      +

      Table 1.36. Parameters

      @@ -89,7 +89,7 @@

      - + Expression Semantics
      @@ -102,7 +102,7 @@ Semantics: Always returns void.

      - + Header
      #include <boost/fusion/sequence/intrinsic/swap.hpp>
      @@ -120,7 +120,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html index 5224e293..b73d14f3 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html @@ -2,8 +2,8 @@ value_at - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the actual type at a given index from the Sequence.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.31. Parameters

      +

      Table 1.31. Parameters

      @@ -111,7 +111,7 @@

      - + Expression Semantics
      @@ -125,14 +125,14 @@ the Nth element of Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/value_at.hpp>
       #include <boost/fusion/include/value_at.hpp>
       
      - + Example
      typedef vector<int,float,char> vec;
      @@ -150,7 +150,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html index 0df14f6e..281c6b3e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html @@ -2,8 +2,8 @@ value_at_c - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the actual type at a given index from the Sequence.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.32. Parameters

      +

      Table 1.32. Parameters

      @@ -110,7 +110,7 @@

      - + Expression Semantics
      @@ -124,14 +124,14 @@ the Mth element of Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/value_at.hpp>
       #include <boost/fusion/include/value_at.hpp>
       
      - + Example
      typedef vector<int,float,char> vec;
      @@ -149,7 +149,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html index b80b475e..f3caa001 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html @@ -2,8 +2,8 @@ value_at_key - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the actual element type associated with a Key from the Sequence.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.35. Parameters

      +

      Table 1.35. Parameters

      @@ -110,7 +110,7 @@

      - + Expression Semantics
      @@ -125,14 +125,14 @@ in Seq.

      - + Header
      #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
       #include <boost/fusion/include/value_at_key.hpp>
       
      - + Example
      typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
      @@ -150,7 +150,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator.html b/doc/html/fusion/sequence/operator.html index 6d002b05..1df80df3 100644 --- a/doc/html/fusion/sequence/operator.html +++ b/doc/html/fusion/sequence/operator.html @@ -2,8 +2,8 @@ Operator - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -47,7 +47,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index dd7afec0..6df97afd 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -2,8 +2,8 @@ Comparison - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -49,7 +49,7 @@ only until the result is clear.

      - + Header
      #include <boost/fusion/sequence/comparison.hpp>
      @@ -67,7 +67,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html index 497be9fa..88f43004 100644 --- a/doc/html/fusion/sequence/operator/comparison/equal.html +++ b/doc/html/fusion/sequence/operator/comparison/equal.html @@ -2,8 +2,8 @@ equal - - + + @@ -13,28 +13,28 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Compare two sequences for equality.

      - + Synopsis
      template <typename Seq1, typename Seq2>
      @@ -42,7 +42,7 @@
       operator==(Seq1 const& a, Seq2 const& b);
       
      - + Parameters
      @@ -88,7 +88,7 @@
      - + Expression Semantics
      @@ -123,14 +123,14 @@ true.

      - + Header
      #include <boost/fusion/sequence/comparison/equal_to.hpp>
       #include <boost/fusion/include/equal_to.hpp>
       
      - + Example
      vector<int, char> v1(5, 'a');
      @@ -149,7 +149,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html index c66d9774..efbdb69d 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html @@ -2,8 +2,8 @@ greater than - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

      - + Synopsis
      template <typename Seq1, typename Seq2>
      @@ -39,7 +39,7 @@
       operator>(Seq1 const& a, Seq2 const& b);
       
      - + Parameters
      @@ -85,7 +85,7 @@
      - + Expression Semantics
      @@ -112,14 +112,14 @@ Semantics: Returns b < a.

      - + Header
      #include <boost/fusion/sequence/comparison/less_equal.hpp>
       #include <boost/fusion/include/less_equal.hpp>
       
      - + Example
      vector<int, float> v1(4, 3.3f);
      @@ -140,7 +140,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html index 024f1e12..a911455a 100644 --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html @@ -2,8 +2,8 @@ greater than equal - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

      - + Synopsis
      template <typename Seq1, typename Seq2>
      @@ -39,7 +39,7 @@
       operator>=(Seq1 const& a, Seq2 const& b);
       
      - + Parameters
      @@ -85,7 +85,7 @@
      - + Expression Semantics
      @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

      - + Header
      #include <boost/fusion/sequence/comparison/greater_equal.hpp>
       #include <boost/fusion/include/greater_equal.hpp>
       
      - + Example
      vector<int, float> v1(4, 3.3f);
      @@ -140,7 +140,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html index e788621e..e85fc74a 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html @@ -2,8 +2,8 @@ less than - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

      - + Synopsis
      template <typename Seq1, typename Seq2>
      @@ -39,7 +39,7 @@
       operator<(Seq1 const& a, Seq2 const& b);
       
      - + Parameters
      @@ -85,7 +85,7 @@
      - + Expression Semantics
      @@ -114,14 +114,14 @@ and b.

      - + Header
      #include <boost/fusion/sequence/comparison/less.hpp>
       #include <boost/fusion/include/less.hpp>
       
      - + Example
      vector<int, float> v1(4, 3.3f);
      @@ -142,7 +142,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html index aab0a2f5..4cd021b3 100644 --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html @@ -2,8 +2,8 @@ less than equal - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

      - + Synopsis
      template <typename Seq1, typename Seq2>
      @@ -39,7 +39,7 @@
       operator<=(Seq1 const& a, Seq2 const& b);
       
      - + Parameters
      @@ -85,7 +85,7 @@
      - + Expression Semantics
      @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

      - + Header
      #include <boost/fusion/sequence/comparison/less_equal.hpp>
       #include <boost/fusion/include/less_equal.hpp>
       
      - + Example
      vector<int, float> v1(4, 3.3f);
      @@ -140,7 +140,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html index 771bc176..48d4686c 100644 --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html @@ -2,8 +2,8 @@ not equal - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      @@ -31,7 +31,7 @@ Compare two sequences for inequality.

      - + Synopsis
      template <typename Seq1, typename Seq2>
      @@ -39,7 +39,7 @@
       operator!=(Seq1 const& a, Seq2 const& b);
       
      - + Parameters
      @@ -85,7 +85,7 @@
      - + Expression Semantics
      @@ -115,14 +115,14 @@ Returns !(a == b).

      - + Header
      #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
       #include <boost/fusion/include/not_equal_to.hpp>
       
      - + Example
      vector<int, char> v3(5, 'b');
      @@ -143,7 +143,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html index d0d165ae..c4cb51d5 100644 --- a/doc/html/fusion/sequence/operator/i_o.html +++ b/doc/html/fusion/sequence/operator/i_o.html @@ -2,8 +2,8 @@ I/O - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -113,7 +113,7 @@ representation may not be unambiguously parseable.

      - + Header
      #include <boost/fusion/sequence/io.hpp>
      @@ -131,7 +131,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html index e7a29d3a..180d36d9 100644 --- a/doc/html/fusion/sequence/operator/i_o/in.html +++ b/doc/html/fusion/sequence/operator/i_o/in.html @@ -2,8 +2,8 @@ in - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      in
      - + Description

      @@ -35,7 +35,7 @@ stream.

      - + Synopsis
      template <typename IStream, typename Sequence>
      @@ -43,7 +43,7 @@
       operator>>(IStream& is, Sequence& seq);
       
      - + Parameters
      @@ -107,7 +107,7 @@
      - + Expression Semantics
      @@ -122,14 +122,14 @@ e.

      - + Header
      #include <boost/fusion/sequence/io/in.hpp>
       #include <boost/fusion/include/in.hpp>
       
      - + Example
      vector<int, std::string, char> v;
      @@ -147,7 +147,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html index 7c970379..9fa241d2 100644 --- a/doc/html/fusion/sequence/operator/i_o/out.html +++ b/doc/html/fusion/sequence/operator/i_o/out.html @@ -2,8 +2,8 @@ out - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      out
      - + Description

      @@ -35,7 +35,7 @@ stream.

      - + Synopsis
      template <typename OStream, typename Sequence>
      @@ -43,7 +43,7 @@
       operator<<(OStream& os, Sequence& seq);
       
      - + Parameters
      @@ -107,7 +107,7 @@
      - + Expression Semantics
      @@ -122,14 +122,14 @@ e.

      - + Header
      #include <boost/fusion/sequence/io/out.hpp>
       #include <boost/fusion/include/out.hpp>
       
      - + Example
      std::cout << make_vector(123, "Hello", 'x') << std::endl;
      @@ -146,7 +146,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html index 354d106b..5d3ba7e8 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -2,8 +2,8 @@ Support - - + + @@ -13,14 +13,14 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext

      @@ -50,7 +50,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index cdacae86..9810b7cb 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -2,8 +2,8 @@ category_of - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -37,7 +37,7 @@ Sequence Concepts).

      - + Synopsis
      namespace traits
      @@ -50,7 +50,7 @@
       }
       
      - + Parameters
      @@ -95,7 +95,7 @@
      - + Expression Semantics
      @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

      - + Header
      #include <boost/fusion/support/category_of.hpp>
       #include <boost/fusion/include/category_of.hpp>
       
      - + Example
      using boost::is_base_of;
      @@ -165,7 +165,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html index 37183e1e..64ad1193 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -2,8 +2,8 @@ deduce - - + + @@ -13,21 +13,21 @@ - +
      Boost C++ Libraries HomeLibrariesLibraries People FAQ More

      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

      - + Header
      #include <boost/fusion/support/deduce.hpp>
       #include <boost/fusion/include/deduce.hpp>
       
      - + Synopsis
      namespace traits
      @@ -60,7 +60,7 @@
       }
       
      - + Example
      template <typename T>
      @@ -80,7 +80,7 @@
       }
       
      - + See also
      • @@ -98,7 +98,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index a14b8f19..0fa6084c 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -2,8 +2,8 @@ deduce_sequence - - + + @@ -13,21 +13,21 @@ - +
        Boost C++ Libraries HomeLibrariesLibraries People FAQ More

        -PrevUpHomeNext +PrevUpHomeNext
        - + Description

        @@ -38,14 +38,14 @@ original type as its argument.

        - + Header
        #include <boost/fusion/support/deduce_sequence.hpp>
         #include <boost/fusion/include/deduce_sequence.hpp>
         
        - + Synopsis
        namespace traits
        @@ -58,7 +58,7 @@
         }
         
        - + Example
        template <class Seq>
        @@ -80,7 +80,7 @@
         }
         
        - + See also
        • @@ -98,7 +98,7 @@
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index ce646d6b..6f3d5ded 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -2,8 +2,8 @@ is_sequence - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -38,7 +38,7 @@ conforming sequences.

          - + Synopsis
          namespace traits
          @@ -51,7 +51,7 @@
           }
           
          - + Parameters
          @@ -96,7 +96,7 @@
          - + Expression Semantics
          @@ -113,14 +113,14 @@ otherwise.

          - + Header
          #include <boost/fusion/support/is_sequence.hpp>
           #include <boost/fusion/include/is_sequence.hpp>
           
          - + Example
          BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
          @@ -142,7 +142,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html index 5064d55d..e807d7fb 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -2,8 +2,8 @@ is_view - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

          - + Synopsis
          namespace traits
          @@ -54,7 +54,7 @@
           }
           
          - + Parameters
          @@ -99,7 +99,7 @@
          - + Expression Semantics
          typedef traits::is_view<T>::type c;
          @@ -115,14 +115,14 @@
                   otherwise.
                 

          - + Header
          #include <boost/fusion/support/is_view.hpp>
           #include <boost/fusion/include/is_view.hpp>
           
          - + Example
          BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
          @@ -146,7 +146,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html index d488059a..2eb36986 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -2,8 +2,8 @@ pair - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

          - + Synopsis
          template <typename First, typename Second>
          @@ -60,7 +60,7 @@
           make_pair(Second const &);
           
          - + Template parameters
          @@ -137,7 +137,7 @@
          - + Expression Semantics
          @@ -317,14 +317,14 @@
          - + Header
          #include <boost/fusion/support/pair.hpp>
           #include <boost/fusion/include/pair.hpp>
           
          - + Example
          pair<int, char> p('X');
          @@ -344,7 +344,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html index 263e11e6..600c9d54 100644 --- a/doc/html/fusion/support/tag_of.html +++ b/doc/html/fusion/support/tag_of.html @@ -2,8 +2,8 @@ tag_of - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -41,7 +41,7 @@ conforming sequences.

          - + Synopsis
          namespace traits
          @@ -54,7 +54,7 @@
           }
           
          - + Parameters
          @@ -99,7 +99,7 @@
          - + Expression Semantics
          typedef traits::tag_of<T>::type tag;
          @@ -112,14 +112,14 @@
                   with T.
                 

          - + Header
          #include <boost/fusion/support/tag_of.hpp>
           #include <boost/fusion/include/tag_of.hpp>
           
          - + Example
          typedef traits::tag_of<list<> >::type tag1;
          @@ -142,7 +142,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html index da2e41f0..da82785b 100644 --- a/doc/html/fusion/tuple.html +++ b/doc/html/fusion/tuple.html @@ -2,8 +2,8 @@ Tuple - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -64,7 +64,7 @@
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 80c566fa..46adf5a4 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -2,8 +2,8 @@ Class template tuple - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -48,7 +48,7 @@ in future releases of fusion.

          - + Synopsis
          template<
          @@ -73,7 +73,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html index aabd0354..cd28d564 100644 --- a/doc/html/fusion/tuple/class_template_tuple/construction.html +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html @@ -2,8 +2,8 @@ Construction - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -38,7 +38,7 @@ in this section.

          - + Specification
          @@ -122,7 +122,7 @@
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index e92963d3..66eee88e 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -2,8 +2,8 @@ Element access - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -28,7 +28,7 @@ access

          - + Description

          @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

          - + Specification
          template<int I, T>
          @@ -88,7 +88,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html index 94bd7285..d3d3f449 100644 --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html @@ -2,8 +2,8 @@ Relational operators - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -28,7 +28,7 @@ operators

          - + Description

          @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

          - + Specification
          @@ -181,7 +181,7 @@
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 0dd38f24..cf7e9869 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -2,8 +2,8 @@ Tuple creation functions - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -28,7 +28,7 @@ creation functions

          - + Description

          @@ -38,7 +38,7 @@ functions are described in this section.

          - + Specification
          template<typename T1, typename T2, ..., typename TN>
          @@ -74,7 +74,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html index 5de79621..fb12fafd 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html @@ -2,8 +2,8 @@ Tuple helper classes - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -28,7 +28,7 @@ helper classes

          - + Description

          @@ -37,7 +37,7 @@ tuple size, and the element types.

          - + Specification
          tuple_size<T>::value
          @@ -80,7 +80,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html index 087ed9e9..8fa351b4 100644 --- a/doc/html/fusion/tuple/pairs.html +++ b/doc/html/fusion/tuple/pairs.html @@ -2,8 +2,8 @@ Pairs - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

          - + Specification
          tuple_size<std::pair<T1, T2> >::value
          @@ -102,7 +102,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html index 5078bd66..d744a41a 100644 --- a/doc/html/fusion/view.html +++ b/doc/html/fusion/view.html @@ -2,8 +2,8 @@ View - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          Views are sequences that do not actually contain data, but instead impart an @@ -46,7 +47,7 @@ to copy and be passed around by value.

          - + Header

          #include <boost/fusion/view.hpp>
          @@ -64,7 +65,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html index ad376bdf..c92e3bd0 100644 --- a/doc/html/fusion/view/filter_view.html +++ b/doc/html/fusion/view/filter_view.html @@ -2,8 +2,8 @@ filter_view - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

          - + Header
          #include <boost/fusion/view/filter_view.hpp>
           #include <boost/fusion/include/filter_view.hpp>
           
          - + Synopsis
          template <typename Sequence, typename Pred>
           struct filter_view;
           
          - + Template parameters
          @@ -92,8 +92,6 @@

          @@ -108,14 +106,12 @@

          -

          -

          -

          -

          - + Model of
            @@ -148,7 +144,7 @@
          - + Expression Semantics

          @@ -218,7 +214,7 @@

          - + Example
          using boost::mpl::_;
          @@ -243,7 +239,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html index 78ab5603..1bba3ca1 100644 --- a/doc/html/fusion/view/iterator_range.html +++ b/doc/html/fusion/view/iterator_range.html @@ -2,8 +2,8 @@ iterator_range - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

          - + Header
          #include <boost/fusion/view/iterator_range.hpp>
           #include <boost/fusion/include/iterator_range.hpp>
           
          - + Synopsis
          template <typename First, typename Last>
           struct iterator_range;
           
          - + Template parameters
          @@ -88,8 +88,6 @@

          @@ -104,14 +102,12 @@

          -

          -

          -

          -

          - + Model of
            @@ -153,7 +149,7 @@
          - + Expression Semantics
          @@ -227,7 +223,7 @@
          - + Example
          char const* s = "Ruby";
          @@ -257,7 +253,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html index 6977b599..da4ca3ba 100644 --- a/doc/html/fusion/view/joint_view.html +++ b/doc/html/fusion/view/joint_view.html @@ -2,8 +2,8 @@ joint_view - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

          - + Header
          #include <boost/fusion/view/joint_view.hpp>
           #include <boost/fusion/include/joint_view.hpp>
           
          - + Synopsis
          template <typename Sequence1, typename Sequence2>
           struct joint_view;
           
          - + Template parameters
          @@ -89,8 +89,6 @@

          @@ -106,14 +104,12 @@

          -

          -

          -

          -

          - + Model of
            @@ -150,7 +146,7 @@
          - + Expression Semantics

          @@ -222,7 +218,7 @@

          - + Example
          vector<int, char> v1(3, 'x');
          @@ -245,7 +241,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html index 6a3bb39f..813107b4 100644 --- a/doc/html/fusion/view/nview.html +++ b/doc/html/fusion/view/nview.html @@ -2,32 +2,32 @@ nview - - + + - + - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

          - + Header
          #include <boost/fusion/view/nview.hpp>
           #include <boost/fusion/include/nview.hpp>
           
          - + Synopsis
          template <typename Sequence, typename Indicies>
          @@ -56,7 +56,7 @@
           as_nview(Sequence& s);
           
          - + Template parameters
          @@ -96,8 +96,6 @@

          @@ -113,8 +111,6 @@

          @@ -137,7 +133,7 @@
          -

          -

          -

          -

          - + Model of
          • @@ -163,7 +159,7 @@
          - + Expression Semantics

          @@ -239,7 +235,7 @@ of references to the elements of the original Fusion Sequence

          - + Example
          typedef vector<int, char, double> vec;
          @@ -262,7 +258,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html index 1cfc654a..6df8a2ac 100644 --- a/doc/html/fusion/view/reverse_view.html +++ b/doc/html/fusion/view/reverse_view.html @@ -2,8 +2,8 @@ reverse_view - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -32,21 +32,21 @@ element will be its first.

          - + Header
          #include <boost/fusion/view/reverse_view.hpp>
           #include <boost/fusion/include/reverse_view.hpp>
           
          - + Synopsis
          template <typename Sequence>
           struct reverse_view;
           
          - + Template parameters
          @@ -85,13 +85,11 @@

          -

          -

          - + Model of
            @@ -129,7 +127,7 @@
          - + Expression Semantics
          @@ -201,7 +199,7 @@
          - + Example
          typedef vector<int, short, double> vector_type;
          @@ -222,7 +220,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html index edf9436f..2f016553 100644 --- a/doc/html/fusion/view/single_view.html +++ b/doc/html/fusion/view/single_view.html @@ -2,8 +2,8 @@ single_view - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -31,21 +31,21 @@ a value as a single element sequence.

          - + Header
          #include <boost/fusion/view/single_view.hpp>
           #include <boost/fusion/include/single_view.hpp>
           
          - + Synopsis
          template <typename T>
           struct single_view;
           
          - + Template parameters
          @@ -83,13 +83,11 @@

          -

          -

          - + Model of
          • @@ -113,7 +111,7 @@
          - + Expression Semantics

          @@ -184,7 +182,7 @@

          - + Example
          single_view<int> view(3);
          @@ -202,7 +200,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html index 9c87479e..5f8cbf32 100644 --- a/doc/html/fusion/view/transform_view.html +++ b/doc/html/fusion/view/transform_view.html @@ -2,8 +2,8 @@ transform_view - - + + @@ -13,14 +13,14 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext

          @@ -36,14 +36,14 @@ Traversal Concept) of its underlying sequence or sequences.

          - + Header
          #include <boost/fusion/view/transform_view.hpp>
           #include <boost/fusion/include/transform_view.hpp>
           
          - + Synopsis

          @@ -59,7 +59,7 @@ struct transform_view;

          - + Template parameters
          @@ -99,8 +99,6 @@

          @@ -116,8 +114,6 @@

          @@ -133,8 +129,6 @@

          @@ -152,8 +146,6 @@

          @@ -172,14 +164,12 @@

          -

          -

          -

          -

          -

          -

          -

          -

          -

          -

          - + Model of
          • @@ -234,7 +224,7 @@
          - + Expression Semantics
          @@ -329,7 +319,7 @@
          - + Example
          struct square
          @@ -367,7 +357,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html index 19aee352..c5bc58e2 100644 --- a/doc/html/fusion/view/zip_view.html +++ b/doc/html/fusion/view/zip_view.html @@ -2,8 +2,8 @@ zip_view - - + + @@ -13,21 +13,21 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -PrevUpHomeNext +PrevUpHomeNext
          - + Description

          @@ -38,21 +38,21 @@ to the component _sequence_s.

          - + Header
          #include <boost/fusion/view/zip_view.hpp>
           #include <boost/fusion/include/zip_view.hpp>
           
          - + Synopsis
          template <typename Sequences>
           struct zip_view;
           
          - + Template parameters
          @@ -91,13 +91,11 @@

          -

          -

          - + Model of
          • @@ -126,7 +124,7 @@
          - + Expression Semantics

          @@ -197,7 +195,7 @@

          - + Example
          typedef vector<int,int> vec1;
          @@ -219,7 +217,7 @@
           
           
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/index.html b/doc/html/index.html index 55f5835f..f57d1997 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -2,8 +2,8 @@ Chapter 1. Fusion 2.0 - - + + @@ -11,13 +11,13 @@ - +
          Boost C++ Libraries HomeLibrariesLibraries People FAQ More

          -
          Next
          +
          Next

          @@ -34,7 +34,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)

          @@ -156,6 +156,7 @@
          transform_view
          reverse_view
          nview
          +
          repetitive_view
          Adapted
          @@ -256,10 +257,10 @@
          - +

          Last revised: June 18, 2010 at 17:16:15 GMT

          Last revised: July 04, 2010 at 19:06:18 GMT


          -
          Next
          +
          Next
          From 0f4ac2e9e3ecb396328a9b90cf768b05f0848b1a Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 8 Jul 2010 07:50:58 +0000 Subject: [PATCH 39/82] Merge rebuilt fusion documentation with missing file. [SVN r63737] --- .../iteration/functions/accumulate.html | 236 ++++++--------- .../algorithm/iteration/functions/fold.html | 236 ++++++--------- .../iteration/functions/for_each.html | 14 +- .../iteration/functions/iter_fold.html | 236 ++++++--------- .../iteration/functions/reverse_fold.html | 236 ++++++--------- .../functions/reverse_iter_fold.html | 236 ++++++--------- .../iteration/metafunctions/accumulate.html | 207 ++++++------- .../iteration/metafunctions/fold.html | 207 ++++++------- .../iteration/metafunctions/for_each.html | 12 +- .../iteration/metafunctions/iter_fold.html | 207 ++++++------- .../iteration/metafunctions/reverse_fold.html | 207 ++++++------- .../metafunctions/reverse_iter_fold.html | 207 ++++++------- doc/html/fusion/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 +- .../fusion/algorithm/query/functions/any.html | 14 +- .../algorithm/query/functions/count.html | 14 +- .../algorithm/query/functions/count_if.html | 14 +- .../algorithm/query/functions/find.html | 14 +- .../algorithm/query/functions/find_if.html | 12 +- .../algorithm/query/functions/none.html | 14 +- .../algorithm/query/metafunctions/all.html | 12 +- .../algorithm/query/metafunctions/any.html | 12 +- .../algorithm/query/metafunctions/count.html | 12 +- .../query/metafunctions/count_if.html | 12 +- .../algorithm/query/metafunctions/find.html | 12 +- .../query/metafunctions/find_if.html | 12 +- .../algorithm/query/metafunctions/none.html | 12 +- doc/html/fusion/algorithm/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 | 18 +- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/extension/ext_full.html | 16 +- .../fusion/extension/iterator_facade.html | 14 +- .../fusion/extension/sequence_facade.html | 14 +- doc/html/fusion/functional.html | 8 +- .../fusion/functional/adapters/fused.html | 16 +- .../adapters/fused_function_object.html | 16 +- .../functional/adapters/fused_procedure.html | 16 +- .../fusion/functional/adapters/limits.html | 4 +- .../fusion/functional/adapters/unfused.html | 16 +- .../functional/adapters/unfused_typed.html | 16 +- .../fusion/functional/concepts/callable.html | 6 +- .../functional/concepts/def_callable.html | 10 +- doc/html/fusion/functional/concepts/poly.html | 10 +- .../functional/concepts/reg_callable.html | 10 +- .../generation/functions/mk_fused.html | 14 +- .../generation/functions/mk_fused_fobj.html | 14 +- .../generation/functions/mk_fused_proc.html | 14 +- .../generation/functions/mk_unfused.html | 14 +- .../generation/metafunctions/mk_fused.html | 8 +- .../metafunctions/mk_fused_fobj.html | 8 +- .../metafunctions/mk_fused_proc.html | 8 +- .../generation/metafunctions/mk_unfused.html | 8 +- .../invocation/functions/invoke.html | 14 +- .../invocation/functions/invoke_fobj.html | 14 +- .../invocation/functions/invoke_proc.html | 14 +- .../fusion/functional/invocation/limits.html | 4 +- .../invocation/metafunctions/invoke.html | 6 +- .../invocation/metafunctions/invoke_fobj.html | 6 +- .../invocation/metafunctions/invoke_proc.html | 6 +- doc/html/fusion/notes.html | 16 +- .../fusion/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 +- doc/html/fusion/view/repetitive_view.html | 282 ++++++++++++++++++ doc/html/index.html | 2 +- 105 files changed, 1741 insertions(+), 1834 deletions(-) create mode 100644 doc/html/fusion/view/repetitive_view.html diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index 50dddf2a..c959ac25 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -26,35 +26,24 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - For a sequence seq, - initial state initial_state, - and binary function object or function pointer f, - accumulate returns the result of the repeated application - of binary f to the - result of the previous f - invocation (inital_state - if it is the first call) and each element of seq. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + For a sequence seq, initial + state initial_state, + and binary function object or function pointer f, + accumulate returns the result of the repeated application + of binary f to the result + of the previous f invocation + (inital_state if it is + the first call) and each element of seq. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -71,10 +60,8 @@
           typename result_of::accumulate<Sequence const, State const, F>::type accumulate(
               Sequence const& seq, State const& initial_state, F f);
           
          -

          -

          -

          Table 1.41. Parameters

          +

          Table 1.41. Parameters

          @@ -83,142 +70,115 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + seq +

          + +

          + A model of Forward + Sequence +

          + +

          + Operation's argument +

          + +

          + initial_state +

          + +

          + Any type +

          + +

          + Initial state +

          + +

          + f +

          + +

          + f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E in + seq +

          + +

          + Operation's argument +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - seq -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - Operation's argument -

          -
          -

          - initial_state -

          -
          -

          - Any type -

          -
          -

          - Initial state -

          -
          -

          - f -

          -
          -

          - f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression - for current state s - of type S, - and for each element e - of type E - in seq -

          -
          -

          - Operation's argument -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          accumulate(seq, initial_state, f);
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Equivalent to f(... + f(f(initial_state,e1),e2) ...eN) where e1 ...eN + are the consecutive elements of seq. +

          +
          + + Complexity +

          -

          -

          - Semantics: Equivalent to f(... - f(f(initial_state,e1),e2) ...eN) where e1 ...eN - are the consecutive elements of seq. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of f. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of f. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/accumulate.hpp>
           #include <boost/fusion/include/accumulate.hpp>
           
          -

          - -

          -
          - - Example -
          -

          - -

          +
          + + Example +
          struct make_string
           {
               typedef std::string result_type;
          @@ -233,8 +193,6 @@
           const vector<int,int> vec(1,2);
           assert(accumulate(vec,std::string(""), make_string()) == "12");
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html index 031ad78a..fc5ceaf9 100644 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -26,35 +26,24 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - For a sequence seq, - initial state initial_state, - and binary function object or function pointer f, - fold returns the result of the repeated application - of binary f to the - result of the previous f - invocation (inital_state - if it is the first call) and each element of seq. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + For a sequence seq, initial + state initial_state, + and binary function object or function pointer f, + fold returns the result of the repeated application + of binary f to the result + of the previous f invocation + (inital_state if it is + the first call) and each element of seq. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -71,10 +60,8 @@
           typename result_of::fold<Sequence const, State const, F>::type fold(
               Sequence const& seq, State const& initial_state, F f);
           
          -

          -

          -

          Table 1.37. Parameters

          +

          Table 1.37. Parameters

          @@ -83,142 +70,115 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + seq +

          + +

          + A model of Forward + Sequence +

          + +

          + Operation's argument +

          + +

          + initial_state +

          + +

          + Any type +

          + +

          + Initial state +

          + +

          + f +

          + +

          + f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E in + seq +

          + +

          + Operation's argument +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - seq -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - Operation's argument -

          -
          -

          - initial_state -

          -
          -

          - Any type -

          -
          -

          - Initial state -

          -
          -

          - f -

          -
          -

          - f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression - for current state s - of type S, - and for each element e - of type E - in seq -

          -
          -

          - Operation's argument -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          fold(seq, initial_state, f);
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Equivalent to f(... + f(f(initial_state,e1),e2) ...eN) where e1 ...eN + are the consecutive elements of seq. +

          +
          + + Complexity +

          -

          -

          - Semantics: Equivalent to f(... - f(f(initial_state,e1),e2) ...eN) where e1 ...eN - are the consecutive elements of seq. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of f. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of f. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/fold.hpp>
           #include <boost/fusion/include/fold.hpp>
           
          -

          - -

          -
          - - Example -
          -

          - -

          +
          + + Example +
          struct make_string
           {
               typedef std::string result_type;
          @@ -233,8 +193,6 @@
           const vector<int,int> vec(1,2);
           assert(fold(vec,std::string(""), make_string()) == "12");
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html index 500f3fad..e9d999d8 100644 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -27,14 +27,14 @@ for_each
          - + Description

          Applies a unary function object to each element of a sequence.

          - + Synopsis
          template<
          @@ -45,7 +45,7 @@
               Sequence& seq, F f);
           
          -

          Table 1.42. Parameters

          +

          Table 1.42. Parameters

          @@ -112,7 +112,7 @@

          - + Expression Semantics
          @@ -126,21 +126,21 @@ in seq.

          - + Complexity

          Linear, exactly result_of::size<Sequence>::value applications of f.

          - + Header
          #include <boost/fusion/algorithm/iteration/for_each.hpp>
           #include <boost/fusion/include/for_each.hpp>
           
          - + Example
          struct increment
          diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
          index aaa43980..294d54f4 100644
          --- a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
          +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
          @@ -26,35 +26,24 @@
           
          +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - For a sequence seq, - initial state initial_state, - and binary function object or function pointer f, - iter_fold returns the result of the repeated application - of binary f to the - result of the previous f - invocation (inital_state - if it is the first call) and iterators on each element of seq. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + For a sequence seq, initial + state initial_state, + and binary function object or function pointer f, + iter_fold returns the result of the repeated application + of binary f to the result + of the previous f invocation + (inital_state if it is + the first call) and iterators on each element of seq. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -71,10 +60,8 @@
           typename result_of::iter_fold<Sequence const, State const, F>::type iter_fold(
               Sequence const& seq, State const& initial_state, F f);
           
          -

          -

          -

          Table 1.39. Parameters

          +

          Table 1.39. Parameters

          @@ -83,142 +70,115 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + seq +

          + +

          + A model of Forward + Sequence +

          + +

          + Operation's argument +

          + +

          + initial_state +

          + +

          + Any type +

          + +

          + Initial state +

          + +

          + f +

          + +

          + f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression + for current state s + of type S, + and for each iterator it + of type It + on an element of seq +

          + +

          + Operation's argument +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - seq -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - Operation's argument -

          -
          -

          - initial_state -

          -
          -

          - Any type -

          -
          -

          - Initial state -

          -
          -

          - f -

          -
          -

          - f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression - for current state s - of type S, - and for each iterator it - of type It - on an element of seq -

          -
          -

          - Operation's argument -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          iter_fold(seq, initial_state, f);
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Equivalent to f(... + f(f(initial_state,it1),it2) ...itN) where it1 ...itN + are consecutive iterators on the elements of seq. +

          +
          + + Complexity +

          -

          -

          - Semantics: Equivalent to f(... - f(f(initial_state,it1),it2) ...itN) where it1 ...itN - are consecutive iterators on the elements of seq. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of f. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of f. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
           #include <boost/fusion/include/iter_fold.hpp>
           
          -

          - -

          -
          - - Example -
          -

          - -

          +
          + + Example +
          struct make_string
           {
               typedef std::string result_type;
          @@ -233,8 +193,6 @@
           const vector<int,int> vec(1,2);
           assert(iter_fold(vec,std::string(""), make_string()) == "12");
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html index 8c1e00ba..c4b568ca 100644 --- a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html @@ -26,35 +26,24 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - For a sequence seq, - initial state initial_state, - and binary function object or function pointer f, - reverse_fold returns the result of the repeated - application of binary f - to the result of the previous f - invocation (inital_state - if it is the first call) and each element of seq. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + For a sequence seq, initial + state initial_state, + and binary function object or function pointer f, + reverse_fold returns the result of the repeated application + of binary f to the result + of the previous f invocation + (inital_state if it is + the first call) and each element of seq. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -71,10 +60,8 @@
           typename result_of::reverse_fold<Sequence const, State const, F>::type reverse_fold(
               Sequence const& seq, State const& initial_state, F f);
           
          -

          -

          -

          Table 1.38. Parameters

          +

          Table 1.38. Parameters

          @@ -83,142 +70,115 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + seq +

          + +

          + A model of Forward + Sequence +

          + +

          + Operation's argument +

          + +

          + initial_state +

          + +

          + Any type +

          + +

          + Initial state +

          + +

          + f +

          + +

          + f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E in + seq +

          + +

          + Operation's argument +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - seq -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - Operation's argument -

          -
          -

          - initial_state -

          -
          -

          - Any type -

          -
          -

          - Initial state -

          -
          -

          - f -

          -
          -

          - f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression - for current state s - of type S, - and for each element e - of type E - in seq -

          -
          -

          - Operation's argument -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          reverse_fold(seq, initial_state, f);
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Equivalent to f(... + f(f(initial_state,eN),eN-1) ...e1) where e1 ...eN + are the consecutive elements of seq. +

          +
          + + Complexity +

          -

          -

          - Semantics: Equivalent to f(... - f(f(initial_state,eN),eN-1) ...e1) where e1 ...eN - are the consecutive elements of seq. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of f. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of f. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
           #include <boost/fusion/include/reverse_fold.hpp>
           
          -

          - -

          -
          - - Example -
          -

          - -

          +
          + + Example +
          struct make_string
           {
               typedef std::string result_type;
          @@ -233,8 +193,6 @@
           const vector<int,int> vec(1,2);
           assert(reverse_fold(vec,std::string(""), make_string()) == "21");
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html index 67518638..025f2e33 100644 --- a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html @@ -26,35 +26,24 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - For a sequence seq, - initial state initial_state, - and binary function object or function pointer f, - reverse_iter_fold returns the result of the repeated - application of binary f - to the result of the previous f - invocation (inital_state - if it is the first call) and iterators on each element of seq. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + For a sequence seq, initial + state initial_state, + and binary function object or function pointer f, + reverse_iter_fold returns the result of the repeated + application of binary f + to the result of the previous f + invocation (inital_state + if it is the first call) and iterators on each element of seq. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -71,10 +60,8 @@
           typename result_of::reverse_iter_fold<Sequence const, State const, F>::type reverse_iter_fold(
               Sequence const& seq, State const& initial_state, F f);
           
          -

          -

          -

          Table 1.40. Parameters

          +

          Table 1.40. Parameters

          @@ -83,142 +70,115 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + seq +

          + +

          + A model of Forward + Sequence +

          + +

          + Operation's argument +

          + +

          + initial_state +

          + +

          + Any type +

          + +

          + Initial state +

          + +

          + f +

          + +

          + f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression + for current state s + of type S, + and for each iterator it + of type It + on an element of seq +

          + +

          + Operation's argument +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - seq -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - Operation's argument -

          -
          -

          - initial_state -

          -
          -

          - Any type -

          -
          -

          - Initial state -

          -
          -

          - f -

          -
          -

          - f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression - for current state s - of type S, - and for each iterator it - of type It - on an element of seq -

          -
          -

          - Operation's argument -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          reverse_iter_fold(seq, initial_state, f);
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Equivalent to f(... + f(f(initial_state,itN),itN-1) ...it1) where it1 ...itN + are consecutive iterators on the elements of seq. +

          +
          + + Complexity +

          -

          -

          - Semantics: Equivalent to f(... - f(f(initial_state,itN),itN-1) ...it1) where it1 - ...itN are consecutive iterators on the elements of seq. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of f. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of f. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
           #include <boost/fusion/include/reverse_iter_fold.hpp>
           
          -

          - -

          -
          - - Example -
          -

          - -

          +
          + + Example +
          struct make_string
           {
               typedef std::string result_type;
          @@ -233,8 +193,6 @@
           const vector<int,int> vec(1,2);
           assert(reverse_iter_fold(vec,std::string(""), make_string()) == "21");
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 57b79ee3..158b642b 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -26,28 +26,17 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - Returns the result type of accumulate. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + Returns the result type of accumulate. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -57,10 +46,8 @@
               typedef unspecified type;
           };
           
          -

          -

          -

          Table 1.47. Parameters

          +

          Table 1.47. Parameters

          @@ -69,132 +56,112 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + Sequence +

          + +

          + A model of Forward + Sequence +

          + +

          + The sequence to iterate +

          + +

          + State +

          + +

          + Any type +

          + +

          + The initial state for the first application of F +

          + +

          + F +

          + +

          + boost::result_of<F(S,E)>::type is the return type of + f(s,e) with current state s of type S, + and an element e + of type E in + seq +

          + +

          + The operation to be applied on traversal +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - Sequence -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - The sequence to iterate -

          -
          -

          - State -

          -
          -

          - Any type -

          -
          -

          - The initial state for the first application of F -

          -
          -

          - F -

          -
          -

          - boost::result_of<F(S,E)>::type is the return type - of f(s,e) with current state s of type S, and an element e of type E in seq -

          -
          -

          - The operation to be applied on traversal -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          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 function object or function pointer of type F. +

          +
          + + Complexity +

          -

          -

          - Semantics: Returns the result of applying - accumulate to a sequence of - type Sequence, with - an initial state of type State - and binary function object or function pointer of type F. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of F. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of F. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/accumulate.hpp>
           #include <boost/fusion/include/accumulate.hpp>
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html index e479c1fd..e0ede514 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html @@ -26,28 +26,17 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - Returns the result type of fold. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + Returns the result type of fold. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -57,10 +46,8 @@
               typedef unspecified type;
           };
           
          -

          -

          -

          Table 1.43. Parameters

          +

          Table 1.43. Parameters

          @@ -69,132 +56,112 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + Sequence +

          + +

          + A model of Forward + Sequence +

          + +

          + The sequence to iterate +

          + +

          + State +

          + +

          + Any type +

          + +

          + The initial state for the first application of F +

          + +

          + F +

          + +

          + boost::result_of<F(S,E)>::type is the return type of + f(s,e) with current state s of type S, + and an element e + of type E in + seq +

          + +

          + The operation to be applied on traversal +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - Sequence -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - The sequence to iterate -

          -
          -

          - State -

          -
          -

          - Any type -

          -
          -

          - The initial state for the first application of F -

          -
          -

          - F -

          -
          -

          - boost::result_of<F(S,E)>::type is the return type - of f(s,e) with current state s of type S, and an element e of type E in seq -

          -
          -

          - The operation to be applied on traversal -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          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 function object or function pointer of type F. +

          +
          + + Complexity +

          -

          -

          - Semantics: Returns the result of applying - fold to a sequence of type - Sequence, with an initial - state of type State - and binary function object or function pointer of type F. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of F. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of F. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/fold.hpp>
           #include <boost/fusion/include/fold.hpp>
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html index 072f8ea1..63c36c50 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html @@ -31,11 +31,11 @@ return type of for_each is always void.

          - + Description
          - + Synopsis
          template<
          @@ -48,7 +48,7 @@
           };
           
          -

          Table 1.48. Parameters

          +

          Table 1.48. Parameters

          @@ -112,7 +112,7 @@

          - + Expression Semantics
          @@ -129,14 +129,14 @@ return type is always void.

          - + Complexity

          Constant.

          - + Header
          #include <boost/fusion/algorithm/iteration/for_each.hpp>
          diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
          index 2388ad66..d124910d 100644
          --- a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
          +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
          @@ -26,28 +26,17 @@
           
          +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - Returns the result type of iter_fold. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + Returns the result type of iter_fold. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -57,10 +46,8 @@
               typedef unspecified type;
           };
           
          -

          -

          -

          Table 1.45. Parameters

          +

          Table 1.45. Parameters

          @@ -69,132 +56,112 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + Sequence +

          + +

          + A model of Forward + Sequence +

          + +

          + The sequence to iterate +

          + +

          + State +

          + +

          + Any type +

          + +

          + The initial state for the first application of F +

          + +

          + F +

          + +

          + boost::result_of<F(S,It)>::type is the return type of + f(s,it) with current state s of type S, + and an iterator it + of type It + on an element of seq +

          + +

          + The operation to be applied on traversal +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - Sequence -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - The sequence to iterate -

          -
          -

          - State -

          -
          -

          - Any type -

          -
          -

          - The initial state for the first application of F -

          -
          -

          - F -

          -
          -

          - boost::result_of<F(S,It)>::type is the return type - of f(s,it) with current state s of type S, and an iterator it of type It on an element of seq -

          -
          -

          - The operation to be applied on traversal -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          iter_fold<Sequence, State, F>::type
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Returns the result of applying + iter_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 +

          -

          -

          - Semantics: Returns the result of applying - iter_fold to a sequence of - type Sequence, with - an initial state of type State - and binary function object or function pointer of type F. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of F. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of F. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
           #include <boost/fusion/include/iter_fold.hpp>
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html index f1021ccc..2f6b94b6 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html @@ -26,28 +26,17 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - Returns the result type of reverse_fold. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + Returns the result type of reverse_fold. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -57,10 +46,8 @@
               typedef unspecified type;
           };
           
          -

          -

          -

          Table 1.44. Parameters

          +

          Table 1.44. Parameters

          @@ -69,132 +56,112 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + Sequence +

          + +

          + A model of Forward + Sequence +

          + +

          + The sequence to iterate +

          + +

          + State +

          + +

          + Any type +

          + +

          + The initial state for the first application of F +

          + +

          + F +

          + +

          + boost::result_of<F(S,E)>::type is the return type of + f(s,e) with current state s of type S, + and an element e + of type E in + seq +

          + +

          + The operation to be applied on traversal +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - Sequence -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - The sequence to iterate -

          -
          -

          - State -

          -
          -

          - Any type -

          -
          -

          - The initial state for the first application of F -

          -
          -

          - F -

          -
          -

          - boost::result_of<F(S,E)>::type is the return type - of f(s,e) with current state s of type S, and an element e of type E in seq -

          -
          -

          - The operation to be applied on traversal -

          -
          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          reverse_fold<Sequence, State, F>::type
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Returns the result of applying + reverse_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 +

          -

          -

          - Semantics: Returns the result of applying - reverse_fold to a sequence - of type Sequence, with - an initial state of type State - and binary function object or function pointer of type F. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of F. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of F. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
           #include <boost/fusion/include/reverse_fold.hpp>
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html index 56c20d56..5803c600 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html @@ -26,28 +26,17 @@ +
          + + Description +

          - -

          -
          - - Description -
          -

          -

          -

          - Returns the result type of reverse_iter_fold. -

          -

          - -

          -
          - - Synopsis -
          -

          - -

          + Returns the result type of reverse_iter_fold. +

          +
          + + Synopsis +
          template<
               typename Sequence,
               typename State,
          @@ -57,10 +46,8 @@
               typedef unspecified type;
           };
           
          -

          -

          -

          Table 1.46. Parameters

          +

          Table 1.46. Parameters

          @@ -69,132 +56,112 @@ +

          + Parameter +

          + +

          + Requirement +

          + +

          + Description +

          + +

          + Sequence +

          + +

          + A model of Forward + Sequence +

          + +

          + The sequence to iterate +

          + +

          + State +

          + +

          + Any type +

          + +

          + The initial state for the first application of F +

          + +

          + F +

          + +

          + boost::result_of<F(S,It)>::type is the return type of + f(s,it) with current state s of type S, + and an iterator it + of type It + on an element of seq +

          + +

          + The operation to be applied on traversal +

          +
          -

          - Parameter -

          -
          -

          - Requirement -

          -
          -

          - Description -

          -
          -

          - Sequence -

          -
          -

          - A model of Forward - Sequence -

          -
          -

          - The sequence to iterate -

          -
          -

          - State -

          -
          -

          - Any type -

          -
          -

          - The initial state for the first application of F -

          -
          -

          - F -

          -
          -

          - boost::result_of<F(S,It)>::type is the return type - of f(s,it) with current state s of type S, and an iterator it of type It on an element of seq -

          -
          -

          - The operation to be applied on traversal -

          -

          -


          - -

          -
          - - Expression - Semantics -
          -

          - -

          +
          + + Expression + Semantics +
          reverse_iter_fold<Sequence, State, F>::type
           

          -

          + Return type: Any type +

          - Return type: Any type -

          + Semantics: Returns the result of applying + reverse_iter_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 +

          -

          -

          - Semantics: Returns the result of applying - reverse_iter_fold to a sequence - of type Sequence, with - an initial state of type State - and binary function object or function pointer of type F. -

          -

          - -

          -
          - - Complexity -
          -

          -

          -

          - Linear, exactly result_of::size<Sequence>::value applications of F. -

          -

          - -

          -
          - - Header -
          -

          - -

          + Linear, exactly result_of::size<Sequence>::value applications of F. +

          +
          + + Header +
          #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
           #include <boost/fusion/include/reverse_iter_fold.hpp>
           
          -

          -

          diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html index 4b16877c..bc380d09 100644 --- a/doc/html/fusion/algorithm/query.html +++ b/doc/html/fusion/algorithm/query.html @@ -34,7 +34,7 @@ The query algorithms provide support for searching and analyzing sequences.

          - + Header
          #include <boost/fusion/algorithm/query.hpp>
          diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
          index 2d405f9a..eccc132e 100644
          --- a/doc/html/fusion/algorithm/query/functions/all.html
          +++ b/doc/html/fusion/algorithm/query/functions/all.html
          @@ -27,7 +27,7 @@
           all
           
           
          - + Description

          @@ -38,7 +38,7 @@ element of seq.

          - + Synopsis
          template<
          @@ -49,7 +49,7 @@
               Sequence const& seq, F f);
           
          -

          Table 1.50. Parameters

          +

          Table 1.50. Parameters

          @@ -116,7 +116,7 @@

          - + Expression Semantics
          @@ -132,21 +132,21 @@ element e in seq.

          - + Complexity

          Linear. At most result_of::size<Sequence>::value comparisons.

          - + Header
          #include <boost/fusion/algorithm/query/all.hpp>
           #include <boost/fusion/include/all.hpp>
           
          - + Example
          struct odd
          diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
          index cc66dea3..f7c947bf 100644
          --- a/doc/html/fusion/algorithm/query/functions/any.html
          +++ b/doc/html/fusion/algorithm/query/functions/any.html
          @@ -27,7 +27,7 @@
           any
           

      - + Description

      @@ -38,7 +38,7 @@ least one element of seq.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
           Sequence const& seq, F f);
       
      -

      Table 1.49. Parameters

      +

      Table 1.49. Parameters

      @@ -116,7 +116,7 @@

      - + Expression semantics
      @@ -132,21 +132,21 @@ element e in seq.

      - + Complexity

      Linear. At most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/any.hpp>
       #include <boost/fusion/include/any.hpp>
       
      - + Example
      struct odd
      diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
      index dddae77b..91786940 100644
      --- a/doc/html/fusion/algorithm/query/functions/count.html
      +++ b/doc/html/fusion/algorithm/query/functions/count.html
      @@ -27,14 +27,14 @@
       count
       

      - + Description

      Returns the number of elements of a given type within a sequence.

      - + Synopsis
      template<
      @@ -45,7 +45,7 @@
           Sequence const& seq, T const& t);
       
      -

      Table 1.54. Parameters

      +

      Table 1.54. Parameters

      @@ -113,7 +113,7 @@

      - + Expression Semantics
      @@ -128,21 +128,21 @@ t in seq.

      - + Complexity

      Linear. At most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/count.hpp>
       #include <boost/fusion/include/count.hpp>
       
      - + Example
      const vector<double,int,int> vec(1.0,2,3);
      diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
      index c2baa0a7..2a8570f5 100644
      --- a/doc/html/fusion/algorithm/query/functions/count_if.html
      +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
      @@ -27,7 +27,7 @@
       count_if
       

      - + Description

      @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

      - + Synopsis
      template<
      @@ -46,7 +46,7 @@
           Sequence const& seq, F f);
       
      -

      Table 1.55. Parameters

      +

      Table 1.55. Parameters

      @@ -113,7 +113,7 @@

      - + Expression Semantics
      @@ -127,21 +127,21 @@ in seq where f evaluates to true.

      - + Complexity

      Linear. At most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/count_if.hpp>
       #include <boost/fusion/include/count_if.hpp>
       
      - + Example
      const vector<int,int,int> vec(1,2,3);
      diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
      index 9440a2e8..2a0b36d3 100644
      --- a/doc/html/fusion/algorithm/query/functions/find.html
      +++ b/doc/html/fusion/algorithm/query/functions/find.html
      @@ -27,14 +27,14 @@
       find
       

      - + Description

      Finds the first element of a given type within a sequence.

      - + Synopsis
      template<
      @@ -50,7 +50,7 @@
       unspecified find(Sequence& seq);
       
      -

      Table 1.52. Parameters

      +

      Table 1.52. Parameters

      @@ -114,7 +114,7 @@

      - + Expression Semantics
      @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

      - + Complexity

      Linear. At most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/find.hpp>
       #include <boost/fusion/include/find.hpp>
       
      - + Example
      const vector<char,int> vec('a','0');
      diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
      index 6e7cf9ba..71caa9de 100644
      --- a/doc/html/fusion/algorithm/query/functions/find_if.html
      +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
      @@ -32,11 +32,11 @@
                   Lambda Expression evaluates to boost::mpl::true_.
                 

      - + Description
      - + Synopsis
      template<
      @@ -52,7 +52,7 @@
       unspecified find_if(Sequence& seq);
       
      -

      Table 1.53. Parameters

      +

      Table 1.53. Parameters

      @@ -117,7 +117,7 @@

      - + Expression Semantics
      @@ -135,7 +135,7 @@ if there is no such element.

      - + Complexity

      @@ -150,7 +150,7 @@

      - + Example
      const vector<double,int> vec(1.0,2);
      diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
      index d49a4595..eaba28d3 100644
      --- a/doc/html/fusion/algorithm/query/functions/none.html
      +++ b/doc/html/fusion/algorithm/query/functions/none.html
      @@ -27,7 +27,7 @@
       none
       
      - + Description

      @@ -38,7 +38,7 @@ element of seq.

      - + Synopsis
      template<
      @@ -49,7 +49,7 @@
           Sequence const& seq, F f);
       
      -

      Table 1.51. Parameters

      +

      Table 1.51. Parameters

      @@ -116,7 +116,7 @@

      - + Expression Semantics
      @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

      - + Complexity

      Linear. At most result_of::size<Sequence>::value comparisons.

      - + Header
      #include <boost/fusion/algorithm/query/none.hpp>
       #include <boost/fusion/include/none.hpp>
       
      - + Example
      struct odd
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
      index 7981d3f5..cd1230b1 100644
      --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
      +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
      @@ -27,14 +27,14 @@
       all
       
      - + Description

      A metafunction returning the result type of all.

      - + Synopsis
      template<
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.57. Parameters

      +

      Table 1.57. Parameters

      @@ -112,7 +112,7 @@

      - + Expression Semantics
      @@ -130,14 +130,14 @@ The return type is always bool.

      - + Complexity

      Constant.

      - + Header
      #include <boost/fusion/algorithm/query/all.hpp>
      diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
      index 269b8110..517344a3 100644
      --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
      +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
      @@ -27,14 +27,14 @@
       any
       
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index e43d2431..f5d106c9 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -27,7 +27,7 @@
     count
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index bdffe7f2..f02abae3 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index 3cd1e5b3..2af8c293 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -27,7 +27,7 @@
     find
     
     
    - + Description

    @@ -35,7 +35,7 @@ search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index 51423311..e217626b 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -27,7 +27,7 @@
     find_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index d19f559b..767ac453 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -27,14 +27,14 @@
     none
     
     
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index e9374c6a..bed4eb37 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -47,7 +47,7 @@
             

    - + Header
    #include <boost/fusion/algorithm/transformation.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index c930305b..423aa0a3 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html
    @@ -27,14 +27,14 @@
     clear
     
     
    - + Description

    clear returns an empty sequence.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,21 +103,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    assert(clear(make_vector(1,2,3)) == make_vector());
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index 0352c2f5..f4e743ab 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
    @@ -27,7 +27,7 @@
     erase
     
     
    - + Description

    @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    template<
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.73. Parameters

    +

    Table 1.73. Parameters

    @@ -138,7 +138,7 @@

    - + Expression Semantics
    @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    const vector<int, double, char> vec(1, 2.0, 'c');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index 787b0f6f..8835d992 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -39,7 +39,7 @@ key.

    - + Synposis
    template<
    @@ -49,7 +49,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index f6cb5942..e01f79a6 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ the elements of a specified type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    const vector<int,int,long,long> vec(1,2,3,4);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index 115d3b87..b0b5b377 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -140,21 +140,21 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    const vector<int,int,double,double> vec(1,2,3.0,4.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index 4799398d..c78d19eb 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -129,7 +129,7 @@

    - + Expression Semantics
    @@ -158,21 +158,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index c502d026..75799afb 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -130,7 +130,7 @@

    - + Expression Semantics
    @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 7a6a6480..3a4e01bb 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
    @@ -27,7 +27,7 @@
     join
     
     
    - + Description

    @@ -35,7 +35,7 @@ first followed by the elements of the second.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ The order of the elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index 47afaf5b..35686c0c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    @@ -27,14 +27,14 @@
     pop_back
     
     
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 6207828d..6b080f12 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    @@ -27,14 +27,14 @@
     pop_front
     
     
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index 5285b26d..72cbac3e 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    @@ -27,14 +27,14 @@
     push_back
     
     
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to the end. The elements are in the same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index 79c307f0..3596f771 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    @@ -27,14 +27,14 @@
     push_front
     
     
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index bbc53929..7e7a54eb 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ except those of a given type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index 7bac6dc7..dd31d562 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -139,21 +139,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index 57f23e8d..b46c22d0 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ a new value.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index 9427e66e..ccea46c9 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ replaced with a new value.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index 1c6a9995..1273c123 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -27,14 +27,14 @@
     reverse
     
     
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -120,21 +120,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 297bba8d..314cc3f3 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -134,7 +134,7 @@ within seq.

    - + Binary version synopsis
    @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index 9ad303d4..97949710 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -114,21 +114,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index 8ca30b95..33ea9f5f 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -27,7 +27,7 @@
     clear
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.92. Parameters

    +

    Table 1.92. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index 38200aa0..a084631f 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -31,11 +31,11 @@
                 and range delimiting iterator types.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -168,14 +168,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index 6d9511ec..7fd325a9 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -35,7 +35,7 @@ and key types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.94. Parameters

    +

    Table 1.94. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index 55e8facb..f8d41b04 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ and type to retain.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.83. Parameter

    +

    Table 1.83. Parameter

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index ae4b6eeb..71905b97 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate type.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameter

    +

    Table 1.84. Parameter

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index 929a52e5..484be5d5 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ position iterator and insertion types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.95. Parameters

    +

    Table 1.95. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -159,14 +159,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index 520f86ad..b7397aba 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.96. Parameters

    +

    Table 1.96. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -160,14 +160,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 2ddc0778..64ad1336 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -27,14 +27,14 @@
     join
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 1f504a9f..1b07152b 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -27,7 +27,7 @@
     pop_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.97. Parameters

    +

    Table 1.97. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 9d7aba39..6037abba 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -27,7 +27,7 @@
     pop_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.98. Parameters

    +

    Table 1.98. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    index dc67045c..5b367aa6 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    @@ -27,7 +27,7 @@
     push_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.99. Parameters

    +

    Table 1.99. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -140,14 +140,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    index 70872ff7..93873442 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    @@ -27,7 +27,7 @@
     push_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.100. Parameters

    +

    Table 1.100. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -140,14 +140,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    index 71ba667d..5b196548 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ removal types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 18814499..2cf9f8e2 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 1a9750c3..600e6451 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to replace.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index 4a2bf575..2d4a6582 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -146,14 +146,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index ea686077..9e2a6551 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -27,7 +27,7 @@
     reverse
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index 3392c104..73070365 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -145,7 +145,7 @@ within seq.

    - + Binary version synopsis
    @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 2f4b93bb..b6eefd64 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -72,14 +72,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index 28d06ead..5024824a 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -50,7 +50,7 @@
               
     
     
    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching
    @@ -121,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
    - + Designing a suitable iterator
    @@ -183,7 +183,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features
    @@ -323,7 +323,7 @@

    - + Implementing the remaining iterator functionality
    @@ -374,7 +374,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence
    @@ -430,7 +430,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative sequence
    @@ -494,7 +494,7 @@ are provided in the example code.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index e837f61f..e8b2c002 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -27,7 +27,7 @@ Iterator Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     
    - + Usage

    @@ -57,7 +57,7 @@ type.

    -

    Table 1.103. Parameters

    +

    Table 1.103. Parameters

    @@ -106,7 +106,7 @@

    -

    Table 1.104. Key Expressions

    +

    Table 1.104. Key Expressions

    @@ -439,14 +439,14 @@

    - + Header
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 6eea619f..2737f355 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -27,7 +27,7 @@ Sequence Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     
    - + Usage

    @@ -59,7 +59,7 @@ type.

    -

    Table 1.101. Parameters

    +

    Table 1.101. Parameters

    @@ -107,7 +107,7 @@

    -

    Table 1.102. Key Expressions

    +

    Table 1.102. Key Expressions

    @@ -244,14 +244,14 @@

    - + Include
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 3dacf5da..254bb24b 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -63,13 +63,13 @@ through a function object interface.

    - + Header

    #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -103,7 +103,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index bf9a23ca..7dfcba24 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -27,7 +27,7 @@ fused
    - + Description

    @@ -54,20 +54,20 @@ and boost::shared_ptr).

    - + Header
    #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -148,7 +148,7 @@
    - + Expression Semantics
    @@ -213,14 +213,14 @@
    - + Example
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index bc9b1336..8feb79f8 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -27,7 +27,7 @@ fused_function_object
    - + Description

    @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

    - + Header
    #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    template <class Function>
     class fused_function_object;
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
    @@ -139,7 +139,7 @@
    - + Expression Semantics
    @@ -204,7 +204,7 @@
    - + Example
    template<class SeqOfSeqs, class Func>
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index a7b266f2..254fff15 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -27,7 +27,7 @@ fused_procedure
    - + Description

    @@ -62,20 +62,20 @@ case is not implemented).

    - + Header
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -119,7 +119,7 @@
    - + Model of
    @@ -157,7 +157,7 @@
    - + Expression Semantics
    @@ -222,7 +222,7 @@
    - + Example
    template<class SequenceOfSequences, class Func>
    @@ -242,7 +242,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index a749aecf..b14b00e0 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/adapter/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index a9b0039a..7745622d 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -27,7 +27,7 @@ unfused

    - + Description

    @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

    - + Header
    #include <boost/fusion/functional/adapter/unfused.hpp>
     
    - + Synopsis
    template <class Function, bool AllowNullary = true>
     class unfused;
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
      @@ -174,7 +174,7 @@
    - + Expression Semantics
    @@ -239,7 +239,7 @@
    - + Example
    struct fused_incrementer
    @@ -266,7 +266,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index cfc7d2ed..baaa98cf 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -27,7 +27,7 @@ unfused_typed
    - + Description

    @@ -66,20 +66,20 @@

    - + Header
    #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    template <class Function, class Sequence>
     class unfused_typed;
     
    - + Template parameters
    @@ -139,7 +139,7 @@
    - + Model of
    @@ -186,7 +186,7 @@
    - + Expression Semantics
    @@ -253,7 +253,7 @@
    - + Example
    struct add_assign // applies operator+=
    @@ -321,7 +321,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 148a7469..6304a219 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@ Callable Object
    - + Description

    @@ -36,7 +36,7 @@ of a function call operator.

    - + Models
      @@ -51,7 +51,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
    index ed8b8519..c9408d9c 100644
    --- a/doc/html/fusion/functional/concepts/def_callable.html
    +++ b/doc/html/fusion/functional/concepts/def_callable.html
    @@ -28,7 +28,7 @@
             Callable Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -117,7 +117,7 @@
    - + Models
      @@ -130,7 +130,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index d69900b6..2a8c5dce 100644
    --- a/doc/html/fusion/functional/concepts/poly.html
    +++ b/doc/html/fusion/functional/concepts/poly.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -36,7 +36,7 @@ Callable Object type.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -128,7 +128,7 @@
    - + Models
      @@ -143,7 +143,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index 6e74b0e1..3a20e294 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -67,7 +67,7 @@
    - + Expression requirements
    @@ -114,7 +114,7 @@
    - + Models
      @@ -126,7 +126,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
    index 79b59cd6..4b2696e7 100644
    --- a/doc/html/fusion/functional/generation/functions/mk_fused.html
    +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html
    @@ -28,7 +28,7 @@
               make_fused
     
     
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    float sub(float a, float b) { return a - b; }
    @@ -126,7 +126,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 a788d191..c7c7f711 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -28,7 +28,7 @@ make_fused_function_object
    - + Description

    @@ -38,7 +38,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -46,7 +46,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    struct sub
    @@ -141,7 +141,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 28a029ed..8cbf7f45 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -28,7 +28,7 @@ make_fused_procedure
    - + Description

    @@ -38,7 +38,7 @@ conversion applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -46,7 +46,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    vector<int,int,int> v(1,2,3);
    @@ -122,7 +122,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index f82a937b..d0e7debb 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -28,7 +28,7 @@ make_unfused
    - + Description

    @@ -38,7 +38,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -46,7 +46,7 @@
     make_unfused(F const & f);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns a unfused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Example
    struct fused_incrementer
    @@ -138,7 +138,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 780e9ffa..5aff0c2e 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -28,21 +28,21 @@ make_fused
    - + Description

    Returns the result type of make_fused.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,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 d5d8434b..1ca685dd 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -28,21 +28,21 @@ make_fused_function_object
    - + Description

    Returns the result type of make_fused_function_object.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,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 eae2905b..0bde6a1e 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -28,21 +28,21 @@ make_fused_procedure
    - + Description

    Returns the result type of make_fused_procedure.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index ec454c28..0d38531e 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -28,21 +28,21 @@ make_unfused
    - + Description

    Returns the result type of make_unfused.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 108f84bb..a05f4991 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@ invoke
    - + Description

    @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -67,7 +67,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke.hpp>
     
    - + Example
    std::plus<int> add;
     assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index 79702ccc..4743ddd5 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -28,7 +28,7 @@ invoke_function_object
    - + Description

    @@ -43,7 +43,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -143,13 +143,13 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
    struct sub
    @@ -175,7 +175,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 5e356cf0..bf1bd7ac 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -28,7 +28,7 @@ invoke_procedure
    - + Description

    @@ -52,7 +52,7 @@ isn't implemented).

    - + Synopsis
    template<
    @@ -70,7 +70,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -136,7 +136,7 @@
    - + Expression Semantics
    @@ -151,13 +151,13 @@ as arguments.

    - + Header
    #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    vector<int,int> v(1,2);
    @@ -166,7 +166,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 29fbd57c..ab3a9eba 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/invocation/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index cd28e075..79011aa5 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@ invoke

    - + Description

    Returns the result type of invoke.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 a18e8649..735796fd 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -28,14 +28,14 @@ invoke_function_object
    - + Description

    Returns the result type of invoke_function_object.

    - + Synopsis
    namespace result_of
    @@ -51,7 +51,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 caed085c..18c86d1a 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -28,14 +28,14 @@ invoke_procedure
    - + Description

    Returns the result type of invoke_procedure.

    - + Synopsis
    namespace result_of
    @@ -51,7 +51,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index d8c6b646..eafe190c 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -27,7 +27,7 @@ Notes

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -101,7 +101,7 @@

    - + Extensibility

    @@ -136,7 +136,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -157,7 +157,7 @@ Arrays:

    - Array arguments are deduced to reference to const types. For example [10]: + Array arguments are deduced to reference to const types. For example [10]:

    make_list("Donald", "Daisy")
     
    @@ -185,7 +185,7 @@
    list<void (*)(int)>
     

    - + boost::ref

    @@ -225,7 +225,7 @@



    -

    [10] +

    [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 46adf5a4..361fd28a 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -48,7 +48,7 @@ in future releases of fusion.

    - + Synopsis
    template<
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index cd28d564..22dc1ef6 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     Construction
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 66eee88e..8766d0fe 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -28,7 +28,7 @@ access
    - + Description

    @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    template<int I, T>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index d3d3f449..d4879bdc 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    @@ -28,7 +28,7 @@
             operators
     
     
    - + Description

    @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index cf7e9869..e9383301 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -28,7 +28,7 @@ creation functions
    - + Description

    @@ -38,7 +38,7 @@ functions are described in this section.

    - + Specification
    template<typename T1, typename T2, ..., typename TN>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index fb12fafd..0bb111b0 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -28,7 +28,7 @@
             helper classes
     
     
    - + Description

    @@ -37,7 +37,7 @@ tuple size, and the element types.

    - + Specification
    tuple_size<T>::value
    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index 8fa351b4..f45b4a8f 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/pairs.html
    @@ -27,7 +27,7 @@
     Pairs
     
     
    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification
    tuple_size<std::pair<T1, T2> >::value
    diff --git a/doc/html/fusion/view/repetitive_view.html b/doc/html/fusion/view/repetitive_view.html
    new file mode 100644
    index 00000000..1cde08a5
    --- /dev/null
    +++ b/doc/html/fusion/view/repetitive_view.html
    @@ -0,0 +1,282 @@
    +
    +
    +
    +repetitive_view
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + repetitive_view presents + a view which iterates over a given Sequence + repeatedly. Because a repetitive_view + has infinite length, it can only be used when some external condition determines + the end. Thus, initializing a fixed length sequence with a repetitive_view is okay, but printing a + repetitive_view to std::cout + is not. +

    +
    + + Header +
    +
    #include <boost/fusion/view/repetitive_view.hpp>
    +#include <boost/fusion/include/repetitive_view.hpp>
    +
    +
    + + Synopsis +
    +
    template <typename Sequence>
    +struct repetitive_view;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + +
    +

    + Parameter +

    +
    +

    + Description +

    +
    +

    + Default +

    +
    +

    + Sequence +

    +
    +

    + An arbitrary Fusion Forward + Sequence +

    +
    +
    +
    +

    Notation

    +
    +
    RV
    +

    + A repetitive_view type +

    +
    s
    +

    + An instance of Sequences +

    +
    rv, rv1, rv2
    +

    + Instances of RV +

    +
    +
    +
    + + Expression + Semantics +
    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Return Type +

    +
    +

    + Semantics +

    +
    +

    + RV(s) +

    +
    + +

    + Creates an repetitive_view + given the underlying sequence. +

    +
    +

    + RV(rv1) +

    +
    + +

    + Copy constructs an repetitive_view + from another repetitive_view, + rv1. +

    +
    +

    + rv1 = + rv2 +

    +
    + +

    + Assigns to a repetitive_view, + rv1, from another + repetitive_view, + rv2. +

    +
    +

    + begin(rv) +

    +
    +

    + Forward + Iterator +

    +
    +
    +

    + end(rv) +

    +
    +

    + Forward + Iterator +

    +
    +

    + Creates an unreachable iterator (since the sequnce is infinite) +

    +
    +
    + + Result + Type Expressions +
    +
    + + + + + + +
    +

    + Expression +

    +
    +

    + result_of::begin<RV>::type +

    +
    +

    + result_of::end<RV>::type +

    +
    +
    + + Example +
    +
    typedef vector<int, char, double> vec1;
    +typedef vector<int, char, double, int, char> vec2;
    +
    +vec1 v1(1, 'c', 2.0);
    +vec2 v2(repetitive_view<vec1>(v1));
    +
    +std::cout << v2 << std::endl; // 1, 'c', 2.0, 1, 'c'
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/index.html b/doc/html/index.html index f57d1997..277a9d3a 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -257,7 +257,7 @@ - +

    Last revised: July 04, 2010 at 19:06:18 GMT

    Last revised: July 07, 2010 at 20:51:04 GMT


    From 199d8b548fcb0919c17bb92566271ca75e580db2 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Thu, 8 Jul 2010 18:32:12 +0000 Subject: [PATCH 40/82] merged fusion from the trunk (3) [SVN r63757] --- changelist.txt | 6 ++-- doc/algorithm.qbk | 30 ++++++++++--------- doc/html/fusion/adapted.html | 2 +- doc/html/fusion/adapted/adapt_assoc.html | 10 +++---- .../adapted/adapt_assoc_struct_named.html | 10 +++---- .../adapted/adapt_assoc_tpl_struct.html | 10 +++---- doc/html/fusion/adapted/adapt_struct.html | 10 +++---- .../fusion/adapted/adapt_struct_named.html | 10 +++---- doc/html/fusion/adapted/adapt_tpl_struct.html | 10 +++---- doc/html/fusion/adapted/array.html | 6 ++-- doc/html/fusion/adapted/boost__array.html | 8 ++--- doc/html/fusion/adapted/boost__tuple.html | 8 ++--- .../fusion/adapted/define_assoc_struct.html | 10 +++---- .../adapted/define_assoc_tpl_struct.html | 10 +++---- doc/html/fusion/adapted/define_struct.html | 10 +++---- .../fusion/adapted/define_tpl_struct.html | 10 +++---- doc/html/fusion/adapted/mpl_sequence.html | 8 ++--- doc/html/fusion/adapted/std__pair.html | 8 ++--- doc/html/fusion/algorithm.html | 6 ++-- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 ++++----- .../algorithm/iteration/functions/fold.html | 14 ++++----- .../iteration/functions/for_each.html | 14 ++++----- .../iteration/functions/iter_fold.html | 14 ++++----- .../iteration/functions/reverse_fold.html | 16 +++++----- .../functions/reverse_iter_fold.html | 16 +++++----- .../iteration/metafunctions/accumulate.html | 12 ++++---- .../iteration/metafunctions/fold.html | 12 ++++---- .../iteration/metafunctions/for_each.html | 12 ++++---- .../iteration/metafunctions/iter_fold.html | 12 ++++---- .../iteration/metafunctions/reverse_fold.html | 14 ++++----- .../metafunctions/reverse_iter_fold.html | 14 ++++----- doc/html/fusion/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 ++++----- .../fusion/algorithm/query/functions/any.html | 14 ++++----- .../algorithm/query/functions/count.html | 14 ++++----- .../algorithm/query/functions/count_if.html | 14 ++++----- .../algorithm/query/functions/find.html | 14 ++++----- .../algorithm/query/functions/find_if.html | 12 ++++---- .../algorithm/query/functions/none.html | 14 ++++----- .../algorithm/query/metafunctions/all.html | 12 ++++---- .../algorithm/query/metafunctions/any.html | 12 ++++---- .../algorithm/query/metafunctions/count.html | 12 ++++---- .../query/metafunctions/count_if.html | 12 ++++---- .../algorithm/query/metafunctions/find.html | 12 ++++---- .../query/metafunctions/find_if.html | 12 ++++---- .../algorithm/query/metafunctions/none.html | 12 ++++---- doc/html/fusion/algorithm/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 | 18 +++++------ .../transformation/metafunctions/zip.html | 10 +++---- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 ++++----- doc/html/fusion/container/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/container/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 | 14 ++++----- .../generation/functions/make_set.html | 14 ++++----- .../generation/functions/make_vector.html | 14 ++++----- .../generation/functions/map_tie.html | 12 ++++---- .../container/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 | 14 ++++----- .../generation/metafunctions/make_set.html | 12 ++++---- .../generation/metafunctions/make_vector.html | 12 ++++---- .../generation/metafunctions/map_tie.html | 12 ++++---- .../generation/metafunctions/vector_tie.html | 12 ++++---- doc/html/fusion/container/list.html | 14 ++++----- doc/html/fusion/container/map.html | 14 ++++----- doc/html/fusion/container/set.html | 14 ++++----- doc/html/fusion/container/vector.html | 14 ++++----- doc/html/fusion/extension/ext_full.html | 16 +++++----- .../fusion/extension/iterator_facade.html | 14 ++++----- .../fusion/extension/sequence_facade.html | 14 ++++----- doc/html/fusion/functional.html | 8 ++--- .../fusion/functional/adapters/fused.html | 16 +++++----- .../adapters/fused_function_object.html | 16 +++++----- .../functional/adapters/fused_procedure.html | 16 +++++----- .../fusion/functional/adapters/limits.html | 4 +-- .../fusion/functional/adapters/unfused.html | 16 +++++----- .../functional/adapters/unfused_typed.html | 16 +++++----- .../fusion/functional/concepts/callable.html | 6 ++-- .../functional/concepts/def_callable.html | 10 +++---- doc/html/fusion/functional/concepts/poly.html | 10 +++---- .../functional/concepts/reg_callable.html | 10 +++---- .../generation/functions/mk_fused.html | 14 ++++----- .../generation/functions/mk_fused_fobj.html | 14 ++++----- .../generation/functions/mk_fused_proc.html | 14 ++++----- .../generation/functions/mk_unfused.html | 14 ++++----- .../generation/metafunctions/mk_fused.html | 8 ++--- .../metafunctions/mk_fused_fobj.html | 8 ++--- .../metafunctions/mk_fused_proc.html | 8 ++--- .../generation/metafunctions/mk_unfused.html | 8 ++--- .../invocation/functions/invoke.html | 14 ++++----- .../invocation/functions/invoke_fobj.html | 14 ++++----- .../invocation/functions/invoke_proc.html | 14 ++++----- .../fusion/functional/invocation/limits.html | 4 +-- .../invocation/metafunctions/invoke.html | 6 ++-- .../invocation/metafunctions/invoke_fobj.html | 6 ++-- .../invocation/metafunctions/invoke_proc.html | 6 ++-- doc/html/fusion/introduction.html | 4 +-- doc/html/fusion/iterator.html | 2 +- .../concepts/associative_iterator.html | 10 +++---- .../concepts/bidirectional_iterator.html | 14 ++++----- .../iterator/concepts/forward_iterator.html | 12 ++++---- .../concepts/random_access_iterator.html | 10 +++---- .../fusion/iterator/functions/advance.html | 12 ++++---- .../fusion/iterator/functions/advance_c.html | 12 ++++---- doc/html/fusion/iterator/functions/deref.html | 12 ++++---- .../fusion/iterator/functions/deref_data.html | 12 ++++---- .../fusion/iterator/functions/distance.html | 12 ++++---- doc/html/fusion/iterator/functions/next.html | 12 ++++---- doc/html/fusion/iterator/functions/prior.html | 12 ++++---- .../iterator/metafunctions/advance.html | 12 ++++---- .../iterator/metafunctions/advance_c.html | 12 ++++---- .../fusion/iterator/metafunctions/deref.html | 12 ++++---- .../iterator/metafunctions/deref_data.html | 12 ++++---- .../iterator/metafunctions/distance.html | 12 ++++---- .../iterator/metafunctions/equal_to.html | 12 ++++---- .../fusion/iterator/metafunctions/key_of.html | 12 ++++---- .../fusion/iterator/metafunctions/next.html | 12 ++++---- .../fusion/iterator/metafunctions/prior.html | 12 ++++---- .../iterator/metafunctions/value_of.html | 12 ++++---- .../iterator/metafunctions/value_of_data.html | 12 ++++---- .../iterator/operator/operator_equality.html | 10 +++---- .../operator/operator_inequality.html | 10 +++---- .../operator/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/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 +-- .../concepts/associative_sequence.html | 10 +++---- .../concepts/bidirectional_sequence.html | 12 ++++---- .../sequence/concepts/forward_sequence.html | 12 ++++---- .../concepts/random_access_sequence.html | 12 ++++---- doc/html/fusion/sequence/intrinsic.html | 6 ++-- .../sequence/intrinsic/functions/at.html | 12 ++++---- .../sequence/intrinsic/functions/at_c.html | 12 ++++---- .../sequence/intrinsic/functions/at_key.html | 12 ++++---- .../sequence/intrinsic/functions/back.html | 12 ++++---- .../sequence/intrinsic/functions/begin.html | 12 ++++---- .../sequence/intrinsic/functions/empty.html | 12 ++++---- .../sequence/intrinsic/functions/end.html | 12 ++++---- .../sequence/intrinsic/functions/front.html | 12 ++++---- .../sequence/intrinsic/functions/has_key.html | 12 ++++---- .../sequence/intrinsic/functions/size.html | 12 ++++---- .../sequence/intrinsic/functions/swap.html | 10 +++---- .../sequence/intrinsic/metafunctions/at.html | 16 +++++----- .../intrinsic/metafunctions/at_c.html | 16 +++++----- .../intrinsic/metafunctions/at_key.html | 16 +++++----- .../intrinsic/metafunctions/back.html | 12 ++++---- .../intrinsic/metafunctions/begin.html | 12 ++++---- .../intrinsic/metafunctions/empty.html | 12 ++++---- .../sequence/intrinsic/metafunctions/end.html | 12 ++++---- .../intrinsic/metafunctions/front.html | 12 ++++---- .../intrinsic/metafunctions/has_key.html | 12 ++++---- .../intrinsic/metafunctions/size.html | 12 ++++---- .../intrinsic/metafunctions/swap.html | 10 +++---- .../intrinsic/metafunctions/value_at.html | 12 ++++---- .../intrinsic/metafunctions/value_at_c.html | 12 ++++---- .../intrinsic/metafunctions/value_at_key.html | 12 ++++---- .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 12 ++++---- .../operator/comparison/greater_than.html | 10 +++---- .../comparison/greater_than_equal.html | 10 +++---- .../operator/comparison/less_than.html | 10 +++---- .../operator/comparison/less_than_equal.html | 10 +++---- .../operator/comparison/not_equal.html | 10 +++---- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 ++++---- .../fusion/sequence/operator/i_o/out.html | 12 ++++---- doc/html/fusion/support/category_of.html | 12 ++++---- doc/html/fusion/support/deduce.html | 10 +++---- doc/html/fusion/support/deduce_sequence.html | 10 +++---- 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/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 +-- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 ++++----- doc/html/fusion/view/iterator_range.html | 14 ++++----- doc/html/fusion/view/joint_view.html | 14 ++++----- doc/html/fusion/view/nview.html | 14 ++++----- doc/html/fusion/view/repetitive_view.html | 14 ++++----- doc/html/fusion/view/reverse_view.html | 12 ++++---- doc/html/fusion/view/single_view.html | 12 ++++---- doc/html/fusion/view/transform_view.html | 12 ++++---- doc/html/fusion/view/zip_view.html | 14 ++++----- doc/html/index.html | 4 +-- todo.txt | 4 --- 247 files changed, 1391 insertions(+), 1391 deletions(-) diff --git a/changelist.txt b/changelist.txt index 06322fa7..608b3c92 100644 --- a/changelist.txt +++ b/changelist.txt @@ -10,7 +10,9 @@ Interface Changes Ticket #3473. - April 4, 2010: Added array support, BOOST_FUSION_ADAPT_TPL_STRUCT, BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT, BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED and - BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS (Christopher Schmidt) + BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS - April 5, 2010: Added BOOST_FUSION_DEFINE_STRUCT, BOOST_FUSION_DEFINE_TPL_STRUCT, BOOST_FUSION_DEFINE_ASSOC_STRUCT and - BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT (Christopher Schmidt) + BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT +- June 18, 2010: Added reverse_fold, iter_fold and reverse_iter_fold. Fixes + Boost Trac Ticket #1623. \ No newline at end of file diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk index e77249d3..51aedbb2 100644 --- a/doc/algorithm.qbk +++ b/doc/algorithm.qbk @@ -57,7 +57,7 @@ a sequence repeatedly applying an operation to its elements. [section Functions] -[template fold_desc[name result_of_name arg_desc arg_id arg_type_id invoke_desc semantics_elements_desc example_arg_transform example_result I0 I1 IN] +[template fold_desc[name result_of_name arg_desc seq_concept arg_id arg_type_id invoke_desc semantics_elements_desc example_arg_transform example_result I0 I1 IN] [heading Description] For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, [^[name]] returns the result of the repeated application of @@ -83,12 +83,13 @@ the first call) and [arg_desc] of `seq`. typename result_of_name_macro::type name_macro( Sequence const& seq, State const& initial_state, F f); +[def seq_concept_macro [seq_concept]] [def arg_type_id_macro [arg_type_id]] [def arg_id_macro [arg_id]] [def invoke_desc_macro [invoke_desc]] [table Parameters [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`seq`][A model of seq_concept_macro][Operation's argument]] [[`initial_state`][Any type][Initial state]] [[`f`][`f(s,arg_id_macro)` with return type `__boost_result_of_call__::type` must be a valid expression for current state `s` of type `S`, and for each invoke_desc_macro][Operation's argument]] ] @@ -127,23 +128,23 @@ Linear, exactly `__result_of_size__::value` applications of `f`. ] [section fold] -[fold_desc fold..__result_of_fold__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] +[fold_desc fold..__result_of_fold__..each element..__forward_sequence__..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] [endsect] [section reverse_fold] -[fold_desc reverse_fold..__result_of_reverse_fold__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."21"..N..N-1..1] +[fold_desc reverse_fold..__result_of_reverse_fold__..each element..__bidirectional_sequence__..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."21"..N..N-1..1] [endsect] [section iter_fold] -[fold_desc iter_fold..__result_of_iter_fold__..iterators on each element..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."12"..1..2..N] +[fold_desc iter_fold..__result_of_iter_fold__..iterators on each element..__forward_sequence__..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."12"..1..2..N] [endsect] [section reverse_iter_fold] -[fold_desc reverse_iter_fold..__result_of_reverse_iter_fold__..iterators on each element..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."21"..N..N-1..1] +[fold_desc reverse_iter_fold..__result_of_reverse_iter_fold__..iterators on each element..__bidirectional_sequence__..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."21"..N..N-1..1] [endsect] [section accumulate] -[fold_desc accumulate..__result_of_accumulate__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] +[fold_desc accumulate..__result_of_accumulate__..each element..__forward_sequence__..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] [endsect] [section for_each] @@ -200,7 +201,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. [section Metafunctions] -[template meta_fold_desc[name name_func arg_id arg_type_id invoke_meta_desc] +[template meta_fold_desc[name name_func seq_concept arg_id arg_type_id invoke_meta_desc] [heading Description] Returns the result type of [name_func]. @@ -215,12 +216,13 @@ Returns the result type of [name_func]. typedef __unspecified__ type; }; +[def seq_concept_macro [seq_concept]] [def arg_type_id_macro [arg_type_id]] [def arg_id_macro [arg_id]] [def invoke_meta_desc_macro [invoke_meta_desc]] [table Parameters [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]] + [[`Sequence`] [A model of seq_concept_macro] [The sequence to iterate]] [[`State`] [Any type] [The initial state for the first application of `F`]] [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,arg_id_macro)` with current state `s` of type `S`, and an invoke_meta_desc_macro][The operation to be applied on traversal]] ] @@ -244,23 +246,23 @@ Linear, exactly `__result_of_size__::value` applications of `F`. ] [section fold] -[meta_fold_desc fold..__fold__..e..E..element `e` of type `E` in `seq`] +[meta_fold_desc fold..__fold__..__forward_sequence__..e..E..element `e` of type `E` in `seq`] [endsect] [section reverse_fold] -[meta_fold_desc reverse_fold..__reverse_fold__..e..E..element `e` of type `E` in `seq`] +[meta_fold_desc reverse_fold..__reverse_fold__..__bidirectional_sequence__..e..E..element `e` of type `E` in `seq`] [endsect] [section iter_fold] -[meta_fold_desc iter_fold..__iter_fold__..it..It..iterator `it` of type `It` on an element of `seq`] +[meta_fold_desc iter_fold..__iter_fold__..__forward_sequence__..it..It..iterator `it` of type `It` on an element of `seq`] [endsect] [section reverse_iter_fold] -[meta_fold_desc reverse_iter_fold..__reverse_iter_fold__..it..It..iterator `it` of type `It` on an element of `seq`] +[meta_fold_desc reverse_iter_fold..__reverse_iter_fold__..__bidirectional_sequence__..it..It..iterator `it` of type `It` on an element of `seq`] [endsect] [section accumulate] -[meta_fold_desc accumulate..__accumulate__..e..E..element `e` of type `E` in `seq`] +[meta_fold_desc accumulate..__accumulate__..__forward_sequence__..e..E..element `e` of type `E` in `seq`] [endsect] [section for_each] diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 93d735eb..c7904f91 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -56,7 +56,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

    #include <boost/fusion/adapted.hpp>
    diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html
    index cd8b5532..bc1a8ee1 100644
    --- a/doc/html/fusion/adapted/adapt_assoc.html
    +++ b/doc/html/fusion/adapted/adapt_assoc.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_ADAPT_ASSOC_STRUCT
     
     
    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    @@ -48,7 +48,7 @@
         )
     
    - + Semantics

    @@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html
    index 68347b63..97a4b113 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED
     
     
    - + Description

    @@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    @@ -58,7 +58,7 @@
         )
     
    - + Semantics

    @@ -83,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
     #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
    index 90b6ba83..be2091bf 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT
     
     
    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
    @@ -50,7 +50,7 @@
         )
     
    - + Semantics

    @@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 002a4baf..60a0d10d 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_ADAPT_STRUCT
     
     
    - + Description

    @@ -36,7 +36,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT(
    @@ -47,7 +47,7 @@
         )
     
    - + Semantics

    @@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html
    index cec997b8..feff5b14 100644
    --- a/doc/html/fusion/adapted/adapt_struct_named.html
    +++ b/doc/html/fusion/adapted/adapt_struct_named.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_ADAPT_STRUCT_NAMED
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT_NAMED(
    @@ -57,7 +57,7 @@
         )
     
    - + Semantics

    @@ -81,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
     #include <boost/fusion/include/adapt_struct_named.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html
    index 8674f25c..5b406c23 100644
    --- a/doc/html/fusion/adapted/adapt_tpl_struct.html
    +++ b/doc/html/fusion/adapted/adapt_tpl_struct.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_ADAPT_TPL_STRUCT
     
     
    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_TPL_STRUCT(
    @@ -49,7 +49,7 @@
         )
     
    - + Semantics

    @@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html
    index f4016a64..5a2d71d5 100644
    --- a/doc/html/fusion/adapted/array.html
    +++ b/doc/html/fusion/adapted/array.html
    @@ -32,14 +32,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     
    - + Model of
    • @@ -47,7 +47,7 @@ Access Sequence
    - + Example
    int arr[3] = {1,2,3};
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index 17236087..4520cbde 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -33,14 +33,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/boost_array.hpp>
     #include <boost/fusion/include/boost_array.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    boost::array<int,3> arr = {{1,2,3}};
    @@ -60,7 +60,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index a02ffb29..0cb35133 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -33,21 +33,21 @@ Sequence.

    - + Header
    #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     
    - + Model of
    - + Example
    boost::tuple<int,std::string> example_tuple(101, "hello");
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index 8b6aac90..fac58c2b 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_DEFINE_ASSOC_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_STRUCT(
    @@ -68,7 +68,7 @@
     
     
     
    - + Expression Semantics
    @@ -182,14 +182,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    index 07771317..70f00658 100644
    --- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT
     
     
    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
    @@ -73,7 +73,7 @@
     
     
     
    - + Expression Semantics
    @@ -187,14 +187,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html
    index 81e13e92..76c63321 100644
    --- a/doc/html/fusion/adapted/define_struct.html
    +++ b/doc/html/fusion/adapted/define_struct.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_DEFINE_STRUCT
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_STRUCT(
    @@ -67,7 +67,7 @@
     
     
     
    - + Expression Semantics
    @@ -178,14 +178,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // demo::employee is a Fusion sequence
    diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html
    index bc5f68fb..28115220 100644
    --- a/doc/html/fusion/adapted/define_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_tpl_struct.html
    @@ -27,7 +27,7 @@
      BOOST_FUSION_DEFINE_TPL_STRUCT
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_TPL_STRUCT(
    @@ -72,7 +72,7 @@
     
     
     
    - + Expression Semantics
    @@ -183,14 +183,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // Any instantiated demo::employee is a Fusion sequence
    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html
    index 94fb0c3d..1ab00bdb 100644
    --- a/doc/html/fusion/adapted/mpl_sequence.html
    +++ b/doc/html/fusion/adapted/mpl_sequence.html
    @@ -32,14 +32,14 @@
             sequences fully conforming fusion sequences.
           

    - + Header
    #include <boost/fusion/adapted/mpl.hpp>
     #include <boost/fusion/include/mpl.hpp>
     
    - + Model of
      @@ -60,7 +60,7 @@
    - + Example
    mpl::vector_c<int, 123, 456> vec_c;
    @@ -73,7 +73,7 @@
     std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index acf19709..073e9bf5 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,14 +33,14 @@ Access Sequence.

    - + Header
    #include <boost/fusion/adapted/std_pair.hpp>
     #include <boost/fusion/include/std_pair.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    std::pair<int, std::string> p(123, "Hola!!!");
    @@ -57,7 +57,7 @@
     std::cout << p << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 0455a817..e152f410 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -44,7 +44,7 @@

    - + Lazy Evaluation

    @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

    - + Sequence Extension

    @@ -87,7 +87,7 @@ functions to convert back to the original sequence type.

    - + Header

    #include <boost/fusion/algorithm.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index 09ca97de..4a4eb631 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -35,7 +35,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header
    #include <boost/fusion/algorithm/iteration.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    index c959ac25..3ba7b3a1 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    @@ -27,7 +27,7 @@
     accumulate
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -147,7 +147,7 @@

    - + Expression Semantics
    @@ -162,21 +162,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index fc5ceaf9..5216ada0 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -27,7 +27,7 @@
     fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -147,7 +147,7 @@

    - + Expression Semantics
    @@ -162,21 +162,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index e9d999d8..47def0c5 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    @@ -27,14 +27,14 @@
     for_each
     
     
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence& seq, F f);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -126,21 +126,21 @@ in seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    struct increment
    diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    index 294d54f4..b54d04fd 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    @@ -27,7 +27,7 @@
     iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -147,7 +147,7 @@

    - + Expression Semantics
    @@ -162,21 +162,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
     #include <boost/fusion/include/iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    index c4b568ca..bc65238d 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    @@ -27,7 +27,7 @@
     reverse_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -94,7 +94,7 @@ @@ -147,7 +147,7 @@

    - A model of Forward + A model of Bidirectional Sequence


    - + Expression Semantics
    @@ -162,21 +162,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
     #include <boost/fusion/include/reverse_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    index 025f2e33..57da10cd 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    @@ -27,7 +27,7 @@
     reverse_iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ if it is the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -94,7 +94,7 @@ @@ -147,7 +147,7 @@

    - A model of Forward + A model of Bidirectional Sequence


    - + Expression Semantics
    @@ -162,21 +162,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
     #include <boost/fusion/include/reverse_iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    index 158b642b..88e6a019 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    @@ -27,14 +27,14 @@
     accumulate
     
     
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index e0ede514..4aadd421 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -27,14 +27,14 @@
     fold
     
     
    - + Description

    Returns the result type of fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index 63c36c50..2fdc5940 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -31,11 +31,11 @@
                 return type of for_each is always void.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    index d124910d..8fe3f323 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    @@ -27,14 +27,14 @@
     iter_fold
     
     
    - + Description

    Returns the result type of iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    index 2f6b94b6..c07bbd57 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    @@ -27,14 +27,14 @@
     reverse_fold
     
     
    - + Description

    Returns the result type of reverse_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -80,7 +80,7 @@ @@ -132,7 +132,7 @@

    - A model of Forward + A model of Bidirectional Sequence


    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    index 5803c600..68f85171 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    @@ -27,14 +27,14 @@
     reverse_iter_fold
     
     
    - + Description

    Returns the result type of reverse_iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -80,7 +80,7 @@ @@ -132,7 +132,7 @@

    - A model of Forward + A model of Bidirectional Sequence


    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index bc380d09..80b85b02 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -34,7 +34,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header
    #include <boost/fusion/algorithm/query.hpp>
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
    index eccc132e..1b814a82 100644
    --- a/doc/html/fusion/algorithm/query/functions/all.html
    +++ b/doc/html/fusion/algorithm/query/functions/all.html
    @@ -27,7 +27,7 @@
     all
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index f7c947bf..617b8de9 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/query/functions/any.html
    @@ -27,7 +27,7 @@
     any
     
     
    - + Description

    @@ -38,7 +38,7 @@ least one element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -116,7 +116,7 @@

    - + Expression semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index 91786940..4b7a062f 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/query/functions/count.html
    @@ -27,14 +27,14 @@
     count
     
     
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -128,21 +128,21 @@ t in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    const vector<double,int,int> vec(1.0,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index 2a8570f5..c2098bac 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -127,21 +127,21 @@ in seq where f evaluates to true.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    const vector<int,int,int> vec(1,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index 2a0b36d3..fb37fd56 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/query/functions/find.html
    @@ -27,14 +27,14 @@
     find
     
     
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    const vector<char,int> vec('a','0');
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index 71caa9de..ad651d31 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
    @@ -32,11 +32,11 @@
                 Lambda Expression evaluates to boost::mpl::true_.
               

    - + Description
    - + Synopsis
    template<
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -117,7 +117,7 @@

    - + Expression Semantics
    @@ -135,7 +135,7 @@ if there is no such element.

    - + Complexity

    @@ -150,7 +150,7 @@

    - + Example
    const vector<double,int> vec(1.0,2);
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index eaba28d3..044e1e14 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/query/functions/none.html
    @@ -27,7 +27,7 @@
     none
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
    index cd1230b1..d08d5c2c 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
    @@ -27,14 +27,14 @@
     all
     
     
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index 517344a3..f4e79dd2 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -27,14 +27,14 @@
     any
     
     
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index f5d106c9..0f9aa1eb 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -27,7 +27,7 @@
     count
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index f02abae3..531f1964 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index 2af8c293..4e06e49b 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -27,7 +27,7 @@
     find
     
     
    - + Description

    @@ -35,7 +35,7 @@ search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index e217626b..3a64d847 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -27,7 +27,7 @@
     find_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index 767ac453..73ea936f 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -27,14 +27,14 @@
     none
     
     
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index bed4eb37..a6ee1b6a 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -47,7 +47,7 @@
             

    - + Header
    #include <boost/fusion/algorithm/transformation.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index 423aa0a3..0575d7ab 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html
    @@ -27,14 +27,14 @@
     clear
     
     
    - + Description

    clear returns an empty sequence.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,21 +103,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    assert(clear(make_vector(1,2,3)) == make_vector());
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index f4e743ab..a0eda6e3 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
    @@ -27,7 +27,7 @@
     erase
     
     
    - + Description

    @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    template<
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.73. Parameters

    +

    Table 1.73. Parameters

    @@ -138,7 +138,7 @@

    - + Expression Semantics
    @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    const vector<int, double, char> vec(1, 2.0, 'c');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index 8835d992..01e6cb31 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -39,7 +39,7 @@ key.

    - + Synposis
    template<
    @@ -49,7 +49,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index e01f79a6..13ba1ce9 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ the elements of a specified type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    const vector<int,int,long,long> vec(1,2,3,4);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index b0b5b377..948fdd63 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -140,21 +140,21 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    const vector<int,int,double,double> vec(1,2,3.0,4.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index c78d19eb..7d50b9f7 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -129,7 +129,7 @@

    - + Expression Semantics
    @@ -158,21 +158,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index 75799afb..7be35e66 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -130,7 +130,7 @@

    - + Expression Semantics
    @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 3a4e01bb..785377b7 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
    @@ -27,7 +27,7 @@
     join
     
     
    - + Description

    @@ -35,7 +35,7 @@ first followed by the elements of the second.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ The order of the elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index 35686c0c..022897a0 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    @@ -27,14 +27,14 @@
     pop_back
     
     
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 6b080f12..6e9fcec6 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    @@ -27,14 +27,14 @@
     pop_front
     
     
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index 72cbac3e..c3df2f3d 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    @@ -27,14 +27,14 @@
     push_back
     
     
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to the end. The elements are in the same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index 3596f771..b5f39437 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    @@ -27,14 +27,14 @@
     push_front
     
     
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index 7e7a54eb..41dbec6d 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ except those of a given type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index dd31d562..4b2407e7 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -139,21 +139,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index b46c22d0..f3bcca78 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ a new value.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index ccea46c9..009448d2 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ replaced with a new value.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index 1273c123..a6930fb5 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -27,14 +27,14 @@
     reverse
     
     
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -120,21 +120,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 314cc3f3..f1fbdfb8 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -134,7 +134,7 @@ within seq.

    - + Binary version synopsis
    @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index 97949710..c57da7c4 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -114,21 +114,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index 33ea9f5f..45bbbe17 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -27,7 +27,7 @@
     clear
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.92. Parameters

    +

    Table 1.92. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index a084631f..e30cdc07 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -31,11 +31,11 @@
                 and range delimiting iterator types.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -168,14 +168,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index 7fd325a9..35f91a4c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -35,7 +35,7 @@ and key types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.94. Parameters

    +

    Table 1.94. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index f8d41b04..d573a3b0 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ and type to retain.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.83. Parameter

    +

    Table 1.83. Parameter

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 71905b97..ff0e634b 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate type.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameter

    +

    Table 1.84. Parameter

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index 484be5d5..9157dc0d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ position iterator and insertion types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.95. Parameters

    +

    Table 1.95. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -159,14 +159,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index b7397aba..aa3e6b36 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.96. Parameters

    +

    Table 1.96. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -160,14 +160,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 64ad1336..ab3d12fc 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -27,14 +27,14 @@
     join
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 1b07152b..92378643 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -27,7 +27,7 @@
     pop_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.97. Parameters

    +

    Table 1.97. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 6037abba..4500e48c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -27,7 +27,7 @@
     pop_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.98. Parameters

    +

    Table 1.98. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    index 5b367aa6..f5e4b3d0 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    @@ -27,7 +27,7 @@
     push_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.99. Parameters

    +

    Table 1.99. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -140,14 +140,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    index 93873442..7cef59bd 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    @@ -27,7 +27,7 @@
     push_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.100. Parameters

    +

    Table 1.100. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -140,14 +140,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    index 5b196548..feff743e 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ removal types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 2cf9f8e2..892954a9 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 600e6451..7ac5b104 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to replace.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index 2d4a6582..0aaeb5d5 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -146,14 +146,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index 9e2a6551..d9126761 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -27,7 +27,7 @@
     reverse
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index 73070365..b4221ede 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -145,7 +145,7 @@ within seq.

    - + Binary version synopsis
    @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index b6eefd64..38d0a13a 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -72,14 +72,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
    diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html
    index a420f99b..3829ed85 100644
    --- a/doc/html/fusion/container.html
    +++ b/doc/html/fusion/container.html
    @@ -49,7 +49,7 @@
           These containers are more or less counterparts of those in STL.
         

    - + Header

    #include <boost/fusion/container.hpp>
    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index c26d6d12..6c8897f8 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -27,7 +27,7 @@
     cons
     
     
    - + Description

    @@ -42,21 +42,21 @@ Inlined Functions).

    - + Header
    #include <boost/fusion/container/list/cons.hpp>
     #include <boost/fusion/include/cons.hpp>
     
    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct cons;
     
    - + Template parameters
    @@ -117,7 +117,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -292,7 +292,7 @@

    - + Example
    cons<int, cons<float> > l(12, cons<float>(5.5f));
    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index aac4e564..b070fbe4 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -35,7 +35,7 @@
             types using one of these conversion functions.
           

    - + Header
    #include <boost/fusion/include/convert.hpp>
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
    index abb95212..a82ffebd 100644
    --- a/doc/html/fusion/container/conversion/functions/as_list.html
    +++ b/doc/html/fusion/container/conversion/functions/as_list.html
    @@ -27,14 +27,14 @@
     as_list
     
     
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    as_list(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index 68eed129..55eea5d4 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/conversion/functions/as_map.html
    @@ -27,14 +27,14 @@
     as_map
     
     
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    as_map(make_vector(
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index 2317d0bd..196904c4 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/conversion/functions/as_set.html
    @@ -27,14 +27,14 @@
     as_set
     
     
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    as_set(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index b709cd3a..eff1a6f4 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/functions/as_vector.html
    @@ -27,14 +27,14 @@
     as_vector
     
     
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    as_vector(make_list('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    index 417534e6..e5968e8f 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    @@ -27,21 +27,21 @@
     as_list
     
     
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    template <typename Sequence>
     struct as_list;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    result_of::as_list<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index 6595d924..a068396a 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    @@ -27,21 +27,21 @@
     as_map
     
     
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    template <typename Sequence>
     struct as_map;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    result_of::as_map<vector<
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index 7b1ee8ec..87eb653c 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    @@ -27,21 +27,21 @@
     as_set
     
     
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    template <typename Sequence>
     struct as_set;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    result_of::as_set<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index 40c0ff16..7bb68c7a 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    @@ -27,21 +27,21 @@
     as_vector
     
     
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    template <typename Sequence>
     struct as_vector;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    result_of::as_vector<list<char, int> >::type
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index 0ee8a297..fbfad18a 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -34,7 +34,7 @@
             These are the functions that you can use to generate various forms of Container from elemental values.
           

    - + Header
    #include <boost/fusion/container/generation.hpp>
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
    index 546bdb75..c5c86aff 100644
    --- a/doc/html/fusion/container/generation/functions/list_tie.html
    +++ b/doc/html/fusion/container/generation/functions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index 04a41cc7..b7e47012 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -27,7 +27,7 @@
     make_cons
     
     
    - + Description

    @@ -36,7 +36,7 @@ and optional cdr (tail).

    - + Synopsis
    template <typename Car>
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -127,20 +127,20 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 8ddc8a50..b7536aa6 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -27,7 +27,7 @@ make_list
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 930ab859..eb7090f4 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -27,7 +27,7 @@ make_map
    - + Description

    @@ -35,7 +35,7 @@ from one or more key/data pairs.

    - + Synopsis
    template <
    @@ -55,7 +55,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,20 +143,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    make_map<int, double>('X', "Men")
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 5798f411..9c0934e6 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -27,7 +27,7 @@ make_set
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -117,20 +117,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    make_set(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index bcc33461..9c1c5eec 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -27,7 +27,7 @@ make_vector
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
    make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index e4d8994e..a1d9ddf9 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -27,14 +27,14 @@ map_tie
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index cfd3c42f..db906565 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -54,7 +54,7 @@
                 The vector_tie function creates
                 a vector
                 of type vector<int&, char&, double&>. The same result could be achieved
    -            with the call make_vector(ref(i), ref(c), ref(a)) [9].
    +            with the call make_vector(ref(i), ref(c), ref(a)) [9].
               

    A tie can be used to 'unpack' another tuple into @@ -70,7 +70,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -84,7 +84,7 @@



    -

    [9] +

    [9] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index e2cbca41..92f24273 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -27,14 +27,14 @@ vector_tie
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    index dd2ec485..6bfaf843 100644
    --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    result_of::list_tie<int, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index 4d2e74e0..08b59ccb 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    @@ -27,21 +27,21 @@
     make_cons
     
     
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct make_cons;
     
    - + Parameters
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    result_of::make_cons<char, result_of::make_cons<int>::type>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index ef9e2618..605f5bbc 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
    @@ -27,14 +27,14 @@
     make_list
     
     
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_list<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index 451316ec..769ed76a 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
    @@ -27,14 +27,14 @@
     make_map
     
     
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    template <
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -140,20 +140,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    result_of::make_map<int, double, char, double>::type
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index f9a83b29..fba77b89 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -27,14 +27,14 @@ make_set
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    result_of::make_set<int, char, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    index 5776bcb5..0d534c4e 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    @@ -27,14 +27,14 @@
     make_vector
     
     
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_vector<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index 104e4936..62432ec8 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -27,14 +27,14 @@
     map_tie
     
     
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -119,7 +119,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index bcab237e..5c2fed56 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -27,14 +27,14 @@
     vector_tie
     
     
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    result_of::vector_tie<int, double>::type
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index d4e04896..cb1ee597 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/list.html
    @@ -27,7 +27,7 @@
     list
     
     
    - + Description

    @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    #include <boost/fusion/container/list.hpp>
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -75,7 +75,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    • @@ -154,7 +154,7 @@
    - + Expression Semantics

    @@ -261,7 +261,7 @@

    - + Example
    list<int, float> l(12, 5.5f);
    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index a9cf0c2a..3c929829 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -27,7 +27,7 @@
     map
     
     
    - + Description

    @@ -40,7 +40,7 @@ (see Overloaded Functions).

    - + Header
    #include <boost/fusion/container/map.hpp>
    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -77,7 +77,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -122,7 +122,7 @@
    - + Model of
      @@ -157,7 +157,7 @@
    - + Expression Semantics

    @@ -241,7 +241,7 @@

    - + Example
    typedef map<
    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index b84ff346..f3511996 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -27,7 +27,7 @@
     set
     
     
    - + Description

    @@ -39,7 +39,7 @@ Functions).

    - + Header
    #include <boost/fusion/container/set.hpp>
    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -76,7 +76,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -121,7 +121,7 @@
    - + Model of
      @@ -156,7 +156,7 @@
    - + Expression Semantics

    @@ -240,7 +240,7 @@

    - + Example
    typedef set<int, float> S;
    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index 0d4070b3..90505134 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -27,7 +27,7 @@
     vector
     
     
    - + Description

    @@ -39,7 +39,7 @@ efficient.

    - + Header
    #include <boost/fusion/container/vector.hpp>
    @@ -60,7 +60,7 @@
     #include <boost/fusion/include/vector50.hpp>
     
    - + Synopsis

    @@ -115,7 +115,7 @@

    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -160,7 +160,7 @@
    - + Model of
    • @@ -190,7 +190,7 @@
    - + Expression Semantics

    @@ -273,7 +273,7 @@

    - + Example
    vector<int, float> v(12, 5.5f);
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index 5024824a..0aac96db 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -50,7 +50,7 @@
               
     
     
    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching
    @@ -121,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
    - + Designing a suitable iterator
    @@ -183,7 +183,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features
    @@ -323,7 +323,7 @@

    - + Implementing the remaining iterator functionality
    @@ -374,7 +374,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence
    @@ -430,7 +430,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative sequence
    @@ -494,7 +494,7 @@ are provided in the example code.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index e8b2c002..806eb3f0 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -27,7 +27,7 @@ Iterator Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     
    - + Usage

    @@ -57,7 +57,7 @@ type.

    -

    Table 1.103. Parameters

    +

    Table 1.103. Parameters

    @@ -106,7 +106,7 @@

    -

    Table 1.104. Key Expressions

    +

    Table 1.104. Key Expressions

    @@ -439,14 +439,14 @@

    - + Header
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 2737f355..c27ecd50 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -27,7 +27,7 @@ Sequence Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     
    - + Usage

    @@ -59,7 +59,7 @@ type.

    -

    Table 1.101. Parameters

    +

    Table 1.101. Parameters

    @@ -107,7 +107,7 @@

    -

    Table 1.102. Key Expressions

    +

    Table 1.102. Key Expressions

    @@ -244,14 +244,14 @@

    - + Include
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 254bb24b..5ec09730 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -63,13 +63,13 @@ through a function object interface.

    - + Header

    #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -103,7 +103,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 7dfcba24..2b82fb14 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -27,7 +27,7 @@ fused
    - + Description

    @@ -54,20 +54,20 @@ and boost::shared_ptr).

    - + Header
    #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -148,7 +148,7 @@
    - + Expression Semantics
    @@ -213,14 +213,14 @@
    - + Example
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 8feb79f8..57c89989 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -27,7 +27,7 @@ fused_function_object
    - + Description

    @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

    - + Header
    #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    template <class Function>
     class fused_function_object;
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
    @@ -139,7 +139,7 @@
    - + Expression Semantics
    @@ -204,7 +204,7 @@
    - + Example
    template<class SeqOfSeqs, class Func>
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 254fff15..0cbbf7e4 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -27,7 +27,7 @@ fused_procedure
    - + Description

    @@ -62,20 +62,20 @@ case is not implemented).

    - + Header
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -119,7 +119,7 @@
    - + Model of
    @@ -157,7 +157,7 @@
    - + Expression Semantics
    @@ -222,7 +222,7 @@
    - + Example
    template<class SequenceOfSequences, class Func>
    @@ -242,7 +242,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index b14b00e0..ba67d63d 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/adapter/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index 7745622d..981e1a7e 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -27,7 +27,7 @@ unfused

    - + Description

    @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

    - + Header
    #include <boost/fusion/functional/adapter/unfused.hpp>
     
    - + Synopsis
    template <class Function, bool AllowNullary = true>
     class unfused;
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
      @@ -174,7 +174,7 @@
    - + Expression Semantics
    @@ -239,7 +239,7 @@
    - + Example
    struct fused_incrementer
    @@ -266,7 +266,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index baaa98cf..338114d4 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -27,7 +27,7 @@ unfused_typed
    - + Description

    @@ -66,20 +66,20 @@

    - + Header
    #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    template <class Function, class Sequence>
     class unfused_typed;
     
    - + Template parameters
    @@ -139,7 +139,7 @@
    - + Model of
    @@ -186,7 +186,7 @@
    - + Expression Semantics
    @@ -253,7 +253,7 @@
    - + Example
    struct add_assign // applies operator+=
    @@ -321,7 +321,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 6304a219..ad23c3a6 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@ Callable Object
    - + Description

    @@ -36,7 +36,7 @@ of a function call operator.

    - + Models
      @@ -51,7 +51,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
    index c9408d9c..82844bc3 100644
    --- a/doc/html/fusion/functional/concepts/def_callable.html
    +++ b/doc/html/fusion/functional/concepts/def_callable.html
    @@ -28,7 +28,7 @@
             Callable Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -117,7 +117,7 @@
    - + Models
      @@ -130,7 +130,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index 2a8c5dce..d4430745 100644
    --- a/doc/html/fusion/functional/concepts/poly.html
    +++ b/doc/html/fusion/functional/concepts/poly.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -36,7 +36,7 @@ Callable Object type.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -128,7 +128,7 @@
    - + Models
      @@ -143,7 +143,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index 3a20e294..f1bf3831 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -67,7 +67,7 @@
    - + Expression requirements
    @@ -114,7 +114,7 @@
    - + Models
      @@ -126,7 +126,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
    index 4b2696e7..d275257d 100644
    --- a/doc/html/fusion/functional/generation/functions/mk_fused.html
    +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html
    @@ -28,7 +28,7 @@
               make_fused
     
     
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    float sub(float a, float b) { return a - b; }
    @@ -126,7 +126,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 c7c7f711..cc750390 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -28,7 +28,7 @@ make_fused_function_object
    - + Description

    @@ -38,7 +38,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -46,7 +46,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    struct sub
    @@ -141,7 +141,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 8cbf7f45..6ed65ea5 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -28,7 +28,7 @@ make_fused_procedure
    - + Description

    @@ -38,7 +38,7 @@ conversion applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -46,7 +46,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    vector<int,int,int> v(1,2,3);
    @@ -122,7 +122,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index d0e7debb..2d4388d8 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -28,7 +28,7 @@ make_unfused
    - + Description

    @@ -38,7 +38,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -46,7 +46,7 @@
     make_unfused(F const & f);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns a unfused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Example
    struct fused_incrementer
    @@ -138,7 +138,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 5aff0c2e..feb88db4 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -28,21 +28,21 @@ make_fused
    - + Description

    Returns the result type of make_fused.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,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 1ca685dd..72b1d59a 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -28,21 +28,21 @@ make_fused_function_object
    - + Description

    Returns the result type of make_fused_function_object.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,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 0bde6a1e..85d60a3d 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -28,21 +28,21 @@ make_fused_procedure
    - + Description

    Returns the result type of make_fused_procedure.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 0d38531e..e5aa24df 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -28,21 +28,21 @@ make_unfused
    - + Description

    Returns the result type of make_unfused.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -55,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index a05f4991..21792e86 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@ invoke
    - + Description

    @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -67,7 +67,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke.hpp>
     
    - + Example
    std::plus<int> add;
     assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index 4743ddd5..59b9df43 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -28,7 +28,7 @@ invoke_function_object
    - + Description

    @@ -43,7 +43,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -143,13 +143,13 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
    struct sub
    @@ -175,7 +175,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 bf1bd7ac..210ee6a5 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -28,7 +28,7 @@ invoke_procedure
    - + Description

    @@ -52,7 +52,7 @@ isn't implemented).

    - + Synopsis
    template<
    @@ -70,7 +70,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -136,7 +136,7 @@
    - + Expression Semantics
    @@ -151,13 +151,13 @@ as arguments.

    - + Header
    #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    vector<int,int> v(1,2);
    @@ -166,7 +166,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index ab3a9eba..4804edd4 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/invocation/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 79011aa5..7a7e547a 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@ invoke

    - + Description

    Returns the result type of invoke.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 735796fd..759c1634 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -28,14 +28,14 @@ invoke_function_object
    - + Description

    Returns the result type of invoke_function_object.

    - + Synopsis
    namespace result_of
    @@ -51,7 +51,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 18c86d1a..08c2e629 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -28,14 +28,14 @@ invoke_procedure
    - + Description

    Returns the result type of invoke_procedure.

    - + Synopsis
    namespace result_of
    @@ -51,7 +51,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index a3001ca6..65f71d12 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -116,7 +116,7 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types [1]. In MPL, + wish to work solely on types [1]. In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from @@ -130,7 +130,7 @@



    -

    [1] +

    [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 0a592a43..7307d67c 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -81,7 +81,7 @@ Sequence.

    - + Header

    #include <boost/fusion/iterator.hpp>
    diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html
    index ce1be982..5953e593 100644
    --- a/doc/html/fusion/iterator/concepts/associative_iterator.html
    +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html
    @@ -28,7 +28,7 @@
             Iterator
     
    - + Description

    @@ -50,7 +50,7 @@

    - + Refinement of
    @@ -61,7 +61,7 @@ Access Iterator

    - + Expression requirements
    @@ -113,7 +113,7 @@
    - + Meta Expressions
    @@ -174,7 +174,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index bdde4b2e..72749429 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -58,7 +58,7 @@

    - + Refinement of
    @@ -66,7 +66,7 @@ Forward Iterator

    - + Expression requirements
    @@ -173,7 +173,7 @@
    - + Meta Expressions
    @@ -208,7 +208,7 @@
    - + Expression Semantics
    @@ -248,7 +248,7 @@
    - + Invariants

    @@ -269,7 +269,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index aaa9922f..5bfaf9f1 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Expression requirements
    @@ -237,7 +237,7 @@
    - + Meta Expressions
    @@ -348,7 +348,7 @@
    - + Expression Semantics
    @@ -474,7 +474,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 85c106c8..f7894175 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -28,7 +28,7 @@ Access Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Refinement of
    @@ -68,7 +68,7 @@ Iterator

    - + Expression requirements
    @@ -175,7 +175,7 @@
    - + Meta Expressions
    @@ -238,7 +238,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index fe2a90b9..ee3fde4d 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -27,14 +27,14 @@ advance
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i);
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -128,14 +128,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
    index c7ebdf3a..ad364a79 100644
    --- a/doc/html/fusion/iterator/functions/advance_c.html
    +++ b/doc/html/fusion/iterator/functions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance_c<I, N>::type advance_c(I const& i);
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -108,7 +108,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
    index 13545705..ead9ce38 100644
    --- a/doc/html/fusion/iterator/functions/deref.html
    +++ b/doc/html/fusion/iterator/functions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -102,14 +102,14 @@ i.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
    index 22fb600f..33ae81fb 100644
    --- a/doc/html/fusion/iterator/functions/deref_data.html
    +++ b/doc/html/fusion/iterator/functions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ an associative iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref_data<I>::type deref(I const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

    - + Header
    #include <boost/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int&> > map;
    diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
    index ec969fc7..f79de2b4 100644
    --- a/doc/html/fusion/iterator/functions/distance.html
    +++ b/doc/html/fusion/iterator/functions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ iterators i and j.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
    index f1898adc..3280cb11 100644
    --- a/doc/html/fusion/iterator/functions/next.html
    +++ b/doc/html/fusion/iterator/functions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ next element after i.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
    index be4a5ff5..031ab894 100644
    --- a/doc/html/fusion/iterator/functions/prior.html
    +++ b/doc/html/fusion/iterator/functions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ element prior to i.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,int> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
    index d9a05d52..6a017e1e 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance.html
    @@ -27,14 +27,14 @@
     advance
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
    index 262b6a0f..01740d19 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
    index e10c8175..a027ce87 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ an iterator of type I.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
    index 1db23af7..e558aaea 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ referenced by an associative iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

    - + Header
    #include <boosta/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > map;
    diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
    index 09354000..f474ac9b 100644
    --- a/doc/html/fusion/iterator/metafunctions/distance.html
    +++ b/doc/html/fusion/iterator/metafunctions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -108,14 +108,14 @@ J.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
    index 40f4ff5f..2a94c7f5 100644
    --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
    @@ -27,7 +27,7 @@
     equal_to
     
     
    - + Description

    @@ -36,7 +36,7 @@ and J are equal.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
    index b9b00d67..441bdf76 100644
    --- a/doc/html/fusion/iterator/metafunctions/key_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/key_of.html
    @@ -27,7 +27,7 @@
     key_of
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

    - + Header
    #include <boost/fusion/iterator/key_of.hpp>
     #include <boost/fusion/include/key_of.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
    index 81e1b36c..36d146e1 100644
    --- a/doc/html/fusion/iterator/metafunctions/next.html
    +++ b/doc/html/fusion/iterator/metafunctions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ next element in the sequence after I.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
    index 6a5b5a0d..ac5c3db4 100644
    --- a/doc/html/fusion/iterator/metafunctions/prior.html
    +++ b/doc/html/fusion/iterator/metafunctions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ previous element in the sequence before I.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
    index 7d252858..96926348 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
    @@ -27,14 +27,14 @@
     value_of
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ a sequence at iterator position I.

    - + Header
    #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    - + Example
    typedef vector<int,int&,const int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    index 60b628dc..10595fd8 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    @@ -27,7 +27,7 @@
     value_of_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ by an associative iterator references.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -107,14 +107,14 @@ I.

    - + Header
    #include <boost/fusion/iterator/value_of_data.hpp>
     #include <boost/fusion/include/value_of_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
    index b06acd14..90029bf5 100644
    --- a/doc/html/fusion/iterator/operator/operator_equality.html
    +++ b/doc/html/fusion/iterator/operator/operator_equality.html
    @@ -28,14 +28,14 @@
             ==
     
     
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,7 +104,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index fd761e4d..de5863cd 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -28,14 +28,14 @@
             !=
     
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index d2b5411e..4415ff51 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -28,14 +28,14 @@
             *
     
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index eafe190c..d044f98a 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     Notes
     
     

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -101,7 +101,7 @@

    - + Extensibility

    @@ -136,7 +136,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -157,7 +157,7 @@ Arrays:

    - Array arguments are deduced to reference to const types. For example [10]: + Array arguments are deduced to reference to const types. For example [10]:

    make_list("Donald", "Daisy")
     
    @@ -185,7 +185,7 @@
    list<void (*)(int)>
     

    - + boost::ref

    @@ -225,7 +225,7 @@



    -

    [10] +

    [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index ab0b7eb2..42fbc30f 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -35,7 +35,7 @@ The library is organized in three layers:

    - + Layers

    @@ -60,7 +60,7 @@ against.

    - + Directory

      @@ -181,7 +181,7 @@

    - + Example

    @@ -196,11 +196,11 @@

    The first includes all containers The second includes only list - [4]. + [4].



    -

    [4] +

    [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index a65a0ad2..626fa406 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -33,7 +33,7 @@ --Niklaus Wirth

    - + Description

    @@ -51,7 +51,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -77,7 +77,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -85,7 +85,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -188,7 +188,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index ee51a060..0ef49666 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -34,13 +34,13 @@

    For starters, we shall include all of Fusion's Sequence(s) - [2]: + [2]:

    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     

    - Let's begin with a vector [3]: + Let's begin with a vector [3]:

    vector<int, char, std::string> stuff(1, 'x', "howdy");
     int i = at_c<0>(stuff);
    @@ -56,7 +56,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

    @@ -111,7 +111,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -143,7 +143,7 @@ Easy, right?

    - + Associative tuples

    @@ -215,7 +215,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -226,12 +226,12 @@



    -

    [2] +

    [2] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [3] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 03b7d0d4..9f314e8f 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    #include <boost/fusion/sequence.hpp>
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 8a2c77ff..79741268 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -40,7 +40,7 @@
             Fusion Sequences are organized into a hierarchy of concepts.
           

    - + Traversal

    @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index c6306d57..7ac1d3d1 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -28,7 +28,7 @@ Sequence

    - + Description

    @@ -64,7 +64,7 @@

    - + Valid Expressions
    @@ -169,7 +169,7 @@
    - + Result Type Expressions
    @@ -243,7 +243,7 @@

    - + Expression Semantics
    @@ -298,7 +298,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 123d867d..589f6368 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -37,7 +37,7 @@ Iterator.

    - + Refinement of
    @@ -66,7 +66,7 @@
    - + Valid Expressions
    @@ -192,7 +192,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Expression Semantics
    @@ -293,7 +293,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index f466f075..9ee89eb7 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -60,7 +60,7 @@

    - + Valid Expressions
    @@ -225,7 +225,7 @@
    - + Result Type Expressions
    @@ -310,7 +310,7 @@
    - + Expression Semantics
    @@ -398,7 +398,7 @@
    - + Invariants

    @@ -425,7 +425,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index bbe77682..040271d1 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -28,7 +28,7 @@ Access Sequence
    - + Description

    @@ -38,7 +38,7 @@ sequence elements.

    - + Refinement of
    @@ -73,7 +73,7 @@
    - + Valid Expressions
    @@ -199,7 +199,7 @@
    - + Result Type Expressions
    @@ -285,7 +285,7 @@

    - + Expression Semantics
    @@ -325,7 +325,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 5da5d809..dc35e208 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -36,10 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence[5]. + repertoire. They need to be implemented for each Fusion Sequence[5].

      - + Header
      #include <boost/fusion/sequence/intrinsic.hpp>
      @@ -47,7 +47,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/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index e6534cca..7aa5cf2f 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -27,14 +27,14 @@ at
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <typename N, typename Sequence>
    @@ -46,7 +46,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index 111e08a2..9d3135a9 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    @@ -27,14 +27,14 @@
     at_c
     
     
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <int N, typename Sequence>
    @@ -46,7 +46,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index b5f31aad..4853d202 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    @@ -27,14 +27,14 @@
     at_key
     
     
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -46,7 +46,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ with Key.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index b4ae81e1..db1e6657 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
    @@ -27,14 +27,14 @@
     back
     
     
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index 6d235f4f..a192e48d 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to the first element in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index 9aa72900..6e8237e2 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    @@ -27,7 +27,7 @@
     empty
     
     
    - + Description

    @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    template <typename Sequence>
    @@ -44,7 +44,7 @@
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index c5178cc6..8368e69b 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to one element past the end of the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index c3b1d698..23d90b95 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index c990987d..f07a74b0 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    @@ -27,7 +27,7 @@
     has_key
     
     
    - + Description

    @@ -37,7 +37,7 @@ to false.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index b00e1fa6..ffb3b09a 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
    @@ -27,7 +27,7 @@
     size
     
     
    - + Description

    @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -43,7 +43,7 @@
     size(Sequence const& seq);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index f98200d1..c6b35360 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -27,21 +27,21 @@
     swap
     
     
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -87,7 +87,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    vector<int, std::string> v1(1, "hello"), v2(2, "world");
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    index ee56748e..dac44e9c 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    @@ -27,14 +27,14 @@
     at
     
     
    - + Description

    - Returns the result type of at[6]. + Returns the result type of at[6].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ using at to access the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -140,7 +140,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 to diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 5a305186..885bcbe7 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -27,14 +27,14 @@ at_c

    - + Description

    - Returns the result type of at_c[7]. + Returns the result type of at_c[7].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ using at_c to access the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -139,7 +139,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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 15f78b03..6a479d1e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -27,14 +27,14 @@ at_key

    - + Description

    - Returns the result type of at_key[8]. + Returns the result type of at_key[8].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -126,14 +126,14 @@ Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    @@ -141,7 +141,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 want diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 7fb98818..7a3eb5ab 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -27,14 +27,14 @@ back

    - + Description

    Returns the result type of back.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index 9be5375b..f6470bec 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns the result type of begin.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ to the first element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index 909b7cd9..036b0fe2 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    @@ -27,14 +27,14 @@
     empty
     
     
    - + Description

    Returns the result type of empty.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    typedef vector<> empty_vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index 1f2a815c..47764137 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns the result type of end.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ one past the end of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index fa6bc78d..c5fe9537 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the result type of front.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index 212348c2..fecb24e1 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    @@ -27,14 +27,14 @@
     has_key
     
     
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index dc2ae281..6aab1a60 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    @@ -27,14 +27,14 @@
     size
     
     
    - + Description

    Returns the result type of size.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index 047da4b4..2e2e6fed 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -27,14 +27,14 @@
     swap
     
     
    - + Description

    Returns the return type of swap.

    - + Synopsis
    template<typename Seq1, typename Seq2>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ Semantics: Always returns void.

    - + Header
    #include <boost/fusion/sequence/intrinsic/swap.hpp>
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    index b73d14f3..e8ea7744 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    @@ -27,14 +27,14 @@
     value_at
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index 281c6b3e..620f5bd5 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    @@ -27,14 +27,14 @@
     value_at_c
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index f3caa001..763d6d61 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    @@ -27,14 +27,14 @@
     value_at_key
     
     
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     #include <boost/fusion/include/value_at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
    index 6df97afd..89551f32 100644
    --- a/doc/html/fusion/sequence/operator/comparison.html
    +++ b/doc/html/fusion/sequence/operator/comparison.html
    @@ -49,7 +49,7 @@
               only until the result is clear.
             

    - + Header
    #include <boost/fusion/sequence/comparison.hpp>
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index 88f43004..2765360e 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -27,14 +27,14 @@
     equal
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -42,7 +42,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -123,14 +123,14 @@ true.

    - + Header
    #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    vector<int, char> v1(5, 'a');
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index efbdb69d..c3d01cea 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns b < a.

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index a911455a..7f5e0f94 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

    - + Header
    #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index e85fc74a..95f614fc 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ and b.

    - + Header
    #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index 4cd021b3..85238e7c 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index 48d4686c..a177cdbb 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    @@ -31,7 +31,7 @@
                 Compare two sequences for inequality.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ Returns !(a == b).

    - + Header
    #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    vector<int, char> v3(5, 'b');
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index c4cb51d5..105c8d65 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -113,7 +113,7 @@
               representation may not be unambiguously parseable.
             

    - + Header
    #include <boost/fusion/sequence/io.hpp>
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index 180d36d9..a53120de 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -27,7 +27,7 @@
     in
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename IStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    vector<int, std::string, char> v;
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index 9fa241d2..e0dce931 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/i_o/out.html
    @@ -27,7 +27,7 @@
     out
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename OStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    std::cout << make_vector(123, "Hello", 'x') << std::endl;
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index 9810b7cb..aef84ef0 100644
    --- a/doc/html/fusion/support/category_of.html
    +++ b/doc/html/fusion/support/category_of.html
    @@ -27,7 +27,7 @@
     category_of
     
     
    - + Description

    @@ -37,7 +37,7 @@ Sequence Concepts).

    - + Synopsis
    namespace traits
    @@ -50,7 +50,7 @@
     }
     
    - + Parameters
    @@ -95,7 +95,7 @@
    - + Expression Semantics
    @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

    - + Header
    #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    - + Example
    using boost::is_base_of;
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index 64ad1193..9b377d0f 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -27,7 +27,7 @@
     deduce
     
     
    - + Description

    @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

    - + Header
    #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    - + Synopsis
    namespace traits
    @@ -60,7 +60,7 @@
     }
     
    - + Example
    template <typename T>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 0fa6084c..9c4c13f1 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -27,7 +27,7 @@ deduce_sequence
    - + Description

    @@ -38,14 +38,14 @@ original type as its argument.

    - + Header
    #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    - + Synopsis
    namespace traits
    @@ -58,7 +58,7 @@
     }
     
    - + Example
    template <class Seq>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 6f3d5ded..0803ec6c 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -27,7 +27,7 @@ is_sequence
    - + Description

    @@ -38,7 +38,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -51,7 +51,7 @@
     }
     
    - + Parameters
    @@ -96,7 +96,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ otherwise.

    - + Header
    #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index e807d7fb..22ae60fe 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -27,7 +27,7 @@
     is_view
     
     
    - + Description

    @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::is_view<T>::type c;
    @@ -115,14 +115,14 @@
             otherwise.
           

    - + Header
    #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index 2eb36986..933bdce9 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -27,7 +27,7 @@
     pair
     
     
    - + Description

    @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

    - + Synopsis
    template <typename First, typename Second>
    @@ -60,7 +60,7 @@
     make_pair(Second const &);
     
    - + Template parameters
    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -317,14 +317,14 @@
    - + Header
    #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    - + Example
    pair<int, char> p('X');
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 600c9d54..7aab0167 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -27,7 +27,7 @@
     tag_of
     
     
    - + Description

    @@ -41,7 +41,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::tag_of<T>::type tag;
    @@ -112,14 +112,14 @@
             with T.
           

    - + Header
    #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     
    - + Example
    typedef traits::tag_of<list<> >::type tag1;
    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
    index 361fd28a..92bbce28 100644
    --- a/doc/html/fusion/tuple/class_template_tuple.html
    +++ b/doc/html/fusion/tuple/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis
    template<
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 22dc1ef6..7ef6d58d 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     Construction
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 8766d0fe..97028ea4 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -28,7 +28,7 @@ access
    - + Description

    @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    template<int I, T>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index d4879bdc..a9e8003b 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    @@ -28,7 +28,7 @@
             operators
     
     
    - + Description

    @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index e9383301..f48d18d6 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -28,7 +28,7 @@ creation functions
    - + Description

    @@ -38,7 +38,7 @@ functions are described in this section.

    - + Specification
    template<typename T1, typename T2, ..., typename TN>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index 0bb111b0..503ec08d 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -28,7 +28,7 @@
             helper classes
     
     
    - + Description

    @@ -37,7 +37,7 @@ tuple size, and the element types.

    - + Specification
    tuple_size<T>::value
    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index f45b4a8f..6efabdde 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/pairs.html
    @@ -27,7 +27,7 @@
     Pairs
     
     
    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification
    tuple_size<std::pair<T1, T2> >::value
    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
    index d744a41a..f5c75f2d 100644
    --- a/doc/html/fusion/view.html
    +++ b/doc/html/fusion/view.html
    @@ -47,7 +47,7 @@
           to copy and be passed around by value.
         

    - + Header

    #include <boost/fusion/view.hpp>
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index c92e3bd0..247f3174 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -27,7 +27,7 @@
     filter_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header
    #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Pred>
     struct filter_view;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -144,7 +144,7 @@
    - + Expression Semantics

    @@ -214,7 +214,7 @@

    - + Example
    using boost::mpl::_;
    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 1bba3ca1..e4071eec 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -27,7 +27,7 @@
     iterator_range
     
     
    - + Description

    @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
    #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    - + Synopsis
    template <typename First, typename Last>
     struct iterator_range;
     
    - + Template parameters
    @@ -107,7 +107,7 @@
    - + Model of
      @@ -149,7 +149,7 @@
    - + Expression Semantics
    @@ -223,7 +223,7 @@
    - + Example
    char const* s = "Ruby";
    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index da4ca3ba..e6f09fed 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -27,7 +27,7 @@
     joint_view
     
     
    - + Description

    @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

    - + Header
    #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     
    - + Synopsis
    template <typename Sequence1, typename Sequence2>
     struct joint_view;
     
    - + Template parameters
    @@ -109,7 +109,7 @@
    - + Model of
      @@ -146,7 +146,7 @@
    - + Expression Semantics

    @@ -218,7 +218,7 @@

    - + Example
    vector<int, char> v1(3, 'x');
    diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
    index 813107b4..592eb61f 100644
    --- a/doc/html/fusion/view/nview.html
    +++ b/doc/html/fusion/view/nview.html
    @@ -27,7 +27,7 @@
     nview
     
     
    - + Description

    @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

    - + Header
    #include <boost/fusion/view/nview.hpp>
     #include <boost/fusion/include/nview.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Indicies>
    @@ -56,7 +56,7 @@
     as_nview(Sequence& s);
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -235,7 +235,7 @@ of references to the elements of the original Fusion Sequence

    - + Example
    typedef vector<int, char, double> vec;
    diff --git a/doc/html/fusion/view/repetitive_view.html b/doc/html/fusion/view/repetitive_view.html
    index 1cde08a5..29c48b47 100644
    --- a/doc/html/fusion/view/repetitive_view.html
    +++ b/doc/html/fusion/view/repetitive_view.html
    @@ -27,7 +27,7 @@
     repetitive_view
     
     
    - + Description

    @@ -40,21 +40,21 @@ is not.

    - + Header
    #include <boost/fusion/view/repetitive_view.hpp>
     #include <boost/fusion/include/repetitive_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct repetitive_view;
     
    - + Template parameters
    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -228,7 +228,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Example
    typedef vector<int, char, double> vec1;
    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index 6df8a2ac..98d0c90a 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -32,21 +32,21 @@
             element will be its first.
           

    - + Header
    #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct reverse_view;
     
    - + Template parameters
    @@ -89,7 +89,7 @@
    - + Model of
      @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -199,7 +199,7 @@
    - + Example
    typedef vector<int, short, double> vector_type;
    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index 2f016553..a92dd5da 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -31,21 +31,21 @@
             a value as a single element sequence.
           

    - + Header
    #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     
    - + Synopsis
    template <typename T>
     struct single_view;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
    - + Model of
    • @@ -111,7 +111,7 @@
    - + Expression Semantics

    @@ -182,7 +182,7 @@

    - + Example
    single_view<int> view(3);
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 5f8cbf32..95b77f53 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -36,14 +36,14 @@
             Traversal Concept) of its underlying sequence or sequences.
           

    - + Header
    #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     
    - + Synopsis

    @@ -59,7 +59,7 @@ struct transform_view;

    - + Template parameters
    @@ -169,7 +169,7 @@
    - + Model of
    • @@ -224,7 +224,7 @@
    - + Expression Semantics
    @@ -319,7 +319,7 @@
    - + Example
    struct square
    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index c5bc58e2..be0d6bd2 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -27,7 +27,7 @@
     zip_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ to the component _sequence_s.

    - + Header
    #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     
    - + Synopsis
    template <typename Sequences>
     struct zip_view;
     
    - + Template parameters
    @@ -95,7 +95,7 @@
    - + Model of
    • @@ -124,7 +124,7 @@
    - + Expression Semantics

    @@ -195,7 +195,7 @@

    - + Example
    typedef vector<int,int> vec1;
    diff --git a/doc/html/index.html b/doc/html/index.html
    index 277a9d3a..0b98ac3b 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -34,7 +34,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)

    @@ -257,7 +257,7 @@
    - +

    Last revised: July 07, 2010 at 20:51:04 GMT

    Last revised: July 08, 2010 at 17:09:26 GMT


    diff --git a/todo.txt b/todo.txt index e4f49f61..2add4cc8 100644 --- a/todo.txt +++ b/todo.txt @@ -6,10 +6,6 @@ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================== -* Provide macros for adapting classes, similar to BOOST_FUSION_ADAPT_STRUCT - and BOOST_FUSION_ADAPT_ASSOC_STRUCT, but with with user control over - member accessors (e.g. get and set free functions). - * Document extension::struct_size, extension::struct_member and extension::struct_assoc_member in extension section. From 134fbf960077b43c59addd0b297ba7c25300c159 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sat, 10 Jul 2010 10:06:33 +0000 Subject: [PATCH 41/82] fix for adapted classes' category [SVN r63805] --- include/boost/fusion/adapted/struct/detail/extension.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/fusion/adapted/struct/detail/extension.hpp b/include/boost/fusion/adapted/struct/detail/extension.hpp index 2ba3bf70..1f9f4f75 100644 --- a/include/boost/fusion/adapted/struct/detail/extension.hpp +++ b/include/boost/fusion/adapted/struct/detail/extension.hpp @@ -20,7 +20,7 @@ namespace boost { namespace fusion struct fusion_sequence_tag; struct assoc_struct_category - : bidirectional_traversal_tag, associative_tag + : random_access_traversal_tag, associative_tag {}; namespace extension From 9792f677002c47286c691eeb168a9a4a18c4e7c2 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Thu, 7 Oct 2010 22:58:44 +0000 Subject: [PATCH 42/82] Fusion: merge from trunk [SVN r65821] --- changelist.txt | 4 +- doc/adapted.qbk | 436 +++++++++++++++++- doc/algorithm.qbk | 3 +- doc/changelog.qbk | 5 +- doc/fusion.qbk | 27 +- doc/html/fusion/adapted.html | 6 +- doc/html/fusion/adapted/adapt_adt.html | 165 +++++++ doc/html/fusion/adapted/adapt_assoc.html | 10 +- doc/html/fusion/adapted/adapt_assoc_adt.html | 175 +++++++ .../adapted/adapt_assoc_struct_named.html | 16 +- .../fusion/adapted/adapt_assoc_tpl_adt.html | 182 ++++++++ .../adapted/adapt_assoc_tpl_struct.html | 10 +- doc/html/fusion/adapted/adapt_struct.html | 10 +- .../fusion/adapted/adapt_struct_named.html | 10 +- doc/html/fusion/adapted/adapt_tpl_adt.html | 173 +++++++ doc/html/fusion/adapted/adapt_tpl_struct.html | 10 +- doc/html/fusion/adapted/array.html | 6 +- doc/html/fusion/adapted/boost__array.html | 8 +- doc/html/fusion/adapted/boost__tuple.html | 8 +- .../fusion/adapted/define_assoc_struct.html | 10 +- .../adapted/define_assoc_tpl_struct.html | 10 +- doc/html/fusion/adapted/define_struct.html | 18 +- .../fusion/adapted/define_tpl_struct.html | 10 +- doc/html/fusion/adapted/mpl_sequence.html | 8 +- doc/html/fusion/adapted/std__pair.html | 8 +- doc/html/fusion/algorithm.html | 6 +- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 18 +- .../algorithm/iteration/functions/fold.html | 18 +- .../iteration/functions/for_each.html | 14 +- .../iteration/functions/iter_fold.html | 18 +- .../iteration/functions/reverse_fold.html | 18 +- .../functions/reverse_iter_fold.html | 18 +- .../iteration/metafunctions/accumulate.html | 12 +- .../iteration/metafunctions/fold.html | 12 +- .../iteration/metafunctions/for_each.html | 12 +- .../iteration/metafunctions/iter_fold.html | 12 +- .../iteration/metafunctions/reverse_fold.html | 12 +- .../metafunctions/reverse_iter_fold.html | 12 +- doc/html/fusion/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 +- .../fusion/algorithm/query/functions/any.html | 14 +- .../algorithm/query/functions/count.html | 14 +- .../algorithm/query/functions/count_if.html | 14 +- .../algorithm/query/functions/find.html | 14 +- .../algorithm/query/functions/find_if.html | 12 +- .../algorithm/query/functions/none.html | 14 +- .../algorithm/query/metafunctions/all.html | 12 +- .../algorithm/query/metafunctions/any.html | 12 +- .../algorithm/query/metafunctions/count.html | 12 +- .../query/metafunctions/count_if.html | 12 +- .../algorithm/query/metafunctions/find.html | 12 +- .../query/metafunctions/find_if.html | 12 +- .../algorithm/query/metafunctions/none.html | 12 +- doc/html/fusion/algorithm/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 | 18 +- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/change_log.html | 25 +- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 +- doc/html/fusion/container/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/container/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 | 14 +- .../generation/functions/make_set.html | 14 +- .../generation/functions/make_vector.html | 14 +- .../generation/functions/map_tie.html | 12 +- .../container/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 | 14 +- .../generation/metafunctions/make_set.html | 12 +- .../generation/metafunctions/make_vector.html | 12 +- .../generation/metafunctions/map_tie.html | 12 +- .../generation/metafunctions/vector_tie.html | 12 +- doc/html/fusion/container/list.html | 14 +- doc/html/fusion/container/map.html | 14 +- doc/html/fusion/container/set.html | 14 +- doc/html/fusion/container/vector.html | 14 +- doc/html/fusion/extension/ext_full.html | 16 +- .../fusion/extension/iterator_facade.html | 14 +- .../fusion/extension/sequence_facade.html | 14 +- doc/html/fusion/functional.html | 8 +- .../fusion/functional/adapters/fused.html | 16 +- .../adapters/fused_function_object.html | 16 +- .../functional/adapters/fused_procedure.html | 16 +- .../fusion/functional/adapters/limits.html | 4 +- .../fusion/functional/adapters/unfused.html | 16 +- .../functional/adapters/unfused_typed.html | 16 +- .../fusion/functional/concepts/callable.html | 6 +- .../functional/concepts/def_callable.html | 10 +- doc/html/fusion/functional/concepts/poly.html | 10 +- .../functional/concepts/reg_callable.html | 10 +- .../generation/functions/mk_fused.html | 14 +- .../generation/functions/mk_fused_fobj.html | 14 +- .../generation/functions/mk_fused_proc.html | 14 +- .../generation/functions/mk_unfused.html | 14 +- .../generation/metafunctions/mk_fused.html | 8 +- .../metafunctions/mk_fused_fobj.html | 8 +- .../metafunctions/mk_fused_proc.html | 8 +- .../generation/metafunctions/mk_unfused.html | 8 +- .../invocation/functions/invoke.html | 14 +- .../invocation/functions/invoke_fobj.html | 14 +- .../invocation/functions/invoke_proc.html | 14 +- .../fusion/functional/invocation/limits.html | 4 +- .../invocation/metafunctions/invoke.html | 6 +- .../invocation/metafunctions/invoke_fobj.html | 6 +- .../invocation/metafunctions/invoke_proc.html | 6 +- doc/html/fusion/introduction.html | 4 +- doc/html/fusion/iterator.html | 2 +- .../concepts/associative_iterator.html | 10 +- .../concepts/bidirectional_iterator.html | 14 +- .../iterator/concepts/forward_iterator.html | 12 +- .../concepts/random_access_iterator.html | 10 +- .../fusion/iterator/functions/advance.html | 12 +- .../fusion/iterator/functions/advance_c.html | 12 +- doc/html/fusion/iterator/functions/deref.html | 12 +- .../fusion/iterator/functions/deref_data.html | 12 +- .../fusion/iterator/functions/distance.html | 12 +- doc/html/fusion/iterator/functions/next.html | 12 +- doc/html/fusion/iterator/functions/prior.html | 12 +- .../iterator/metafunctions/advance.html | 12 +- .../iterator/metafunctions/advance_c.html | 12 +- .../fusion/iterator/metafunctions/deref.html | 12 +- .../iterator/metafunctions/deref_data.html | 12 +- .../iterator/metafunctions/distance.html | 12 +- .../iterator/metafunctions/equal_to.html | 12 +- .../fusion/iterator/metafunctions/key_of.html | 12 +- .../fusion/iterator/metafunctions/next.html | 12 +- .../fusion/iterator/metafunctions/prior.html | 12 +- .../iterator/metafunctions/value_of.html | 12 +- .../iterator/metafunctions/value_of_data.html | 12 +- .../iterator/operator/operator_equality.html | 10 +- .../operator/operator_inequality.html | 10 +- .../operator/operator_unary_star.html | 12 +- doc/html/fusion/notes.html | 247 +++++++++- doc/html/fusion/organization.html | 10 +- doc/html/fusion/preface.html | 10 +- doc/html/fusion/quick_start.html | 16 +- doc/html/fusion/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 +- .../concepts/associative_sequence.html | 10 +- .../concepts/bidirectional_sequence.html | 12 +- .../sequence/concepts/forward_sequence.html | 12 +- .../concepts/random_access_sequence.html | 12 +- doc/html/fusion/sequence/intrinsic.html | 6 +- .../sequence/intrinsic/functions/at.html | 12 +- .../sequence/intrinsic/functions/at_c.html | 12 +- .../sequence/intrinsic/functions/at_key.html | 12 +- .../sequence/intrinsic/functions/back.html | 12 +- .../sequence/intrinsic/functions/begin.html | 12 +- .../sequence/intrinsic/functions/empty.html | 12 +- .../sequence/intrinsic/functions/end.html | 12 +- .../sequence/intrinsic/functions/front.html | 12 +- .../sequence/intrinsic/functions/has_key.html | 12 +- .../sequence/intrinsic/functions/size.html | 12 +- .../sequence/intrinsic/functions/swap.html | 10 +- .../sequence/intrinsic/metafunctions/at.html | 16 +- .../intrinsic/metafunctions/at_c.html | 16 +- .../intrinsic/metafunctions/at_key.html | 16 +- .../intrinsic/metafunctions/back.html | 12 +- .../intrinsic/metafunctions/begin.html | 12 +- .../intrinsic/metafunctions/empty.html | 12 +- .../sequence/intrinsic/metafunctions/end.html | 12 +- .../intrinsic/metafunctions/front.html | 12 +- .../intrinsic/metafunctions/has_key.html | 12 +- .../intrinsic/metafunctions/size.html | 12 +- .../intrinsic/metafunctions/swap.html | 10 +- .../intrinsic/metafunctions/value_at.html | 12 +- .../intrinsic/metafunctions/value_at_c.html | 12 +- .../intrinsic/metafunctions/value_at_key.html | 12 +- .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 12 +- .../operator/comparison/greater_than.html | 10 +- .../comparison/greater_than_equal.html | 10 +- .../operator/comparison/less_than.html | 10 +- .../operator/comparison/less_than_equal.html | 10 +- .../operator/comparison/not_equal.html | 10 +- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 +- .../fusion/sequence/operator/i_o/out.html | 12 +- doc/html/fusion/support/category_of.html | 12 +- doc/html/fusion/support/deduce.html | 10 +- doc/html/fusion/support/deduce_sequence.html | 10 +- 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/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 +- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 +- doc/html/fusion/view/iterator_range.html | 14 +- doc/html/fusion/view/joint_view.html | 14 +- doc/html/fusion/view/nview.html | 14 +- doc/html/fusion/view/repetitive_view.html | 14 +- doc/html/fusion/view/reverse_view.html | 12 +- doc/html/fusion/view/single_view.html | 12 +- doc/html/fusion/view/transform_view.html | 12 +- doc/html/fusion/view/zip_view.html | 14 +- doc/html/index.html | 8 +- doc/notes.qbk | 75 +++ .../boost/fusion/adapted/adt/adapt_adt.hpp | 1 - .../fusion/adapted/adt/detail/adapt_base.hpp | 20 +- test/Jamfile | 1 + test/sequence/adapt_tpl_adt.cpp | 2 +- test/sequence/adapt_tpl_struct.cpp | 2 +- test/sequence/adt_attribute_proxy.cpp | 188 ++++++++ 261 files changed, 3062 insertions(+), 1429 deletions(-) create mode 100644 doc/html/fusion/adapted/adapt_adt.html create mode 100644 doc/html/fusion/adapted/adapt_assoc_adt.html create mode 100644 doc/html/fusion/adapted/adapt_assoc_tpl_adt.html create mode 100644 doc/html/fusion/adapted/adapt_tpl_adt.html create mode 100644 test/sequence/adt_attribute_proxy.cpp diff --git a/changelist.txt b/changelist.txt index 608b3c92..1e862f43 100644 --- a/changelist.txt +++ b/changelist.txt @@ -15,4 +15,6 @@ Interface Changes BOOST_FUSION_DEFINE_TPL_STRUCT, BOOST_FUSION_DEFINE_ASSOC_STRUCT and BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT - June 18, 2010: Added reverse_fold, iter_fold and reverse_iter_fold. Fixes - Boost Trac Ticket #1623. \ No newline at end of file + Boost Trac Ticket #1623. +- October 7, 2010: Added BOOST_FUSION_ADAPT_ADT, BOOST_FUSION_ADAPT_ASSOC_ADT, + BOOST_FUSION_ADAPT_TPL_ADT and BOOST_FUSION_ADAPT_ASSOC_TPL_ADT \ No newline at end of file diff --git a/doc/adapted.qbk b/doc/adapted.qbk index 7b4324f9..262671a3 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -548,9 +548,441 @@ namespace qualified name of the struct to be converted. [endsect] -[section:define_struct BOOST_FUSION_DEFINE_STRUCT] +[section:adapt_adt BOOST_FUSION_ADAPT_ADT] -[heading Description] +BOOST_FUSION_ADAPT_ADT is a macro than can be used to generate all the +necessary boilerplate to adapt an arbitrary class type as a model of +__random_access_sequence__. + +[heading Synopsis] + + BOOST_FUSION_ADAPT_ADT( + type_name, + (attribute_type0, attribute_const_type0, get_expr0, set_expr0) + (attribute_type1, attribute_const_type1, get_expr1, set_expr1) + ... + ) + +[heading Expression Semantics] + +The above macro generates the necessary code to adapt `type_name` +as a model of __random_access_sequence__. +The sequence of +[^(attribute_type['N], attribute_const_type['N], get_expr['N], set_expr['N])] +quadruples declares the types, const types, get-expressions and set-expressions +of the elements that are part of the adapted fusion sequence. +[^get_expr['N]] is the expression that is invoked to get the ['N]th element +of an instance of `type_name`. This expression may access a variable named +`obj` of type `type_name&` or `type_name const&` which represents the underlying +instance of `type_name`. +[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types +that [^get_expr['N]] denotes to. +[^set_expr['N]] is the expression that is invoked to set the ['N]th element +of an instance of `type_name`. This expression may access variables named +`obj` of type `type_name&`, which represent the corresponding instance of +`type_name`, and `val` of an arbitrary const-qualified reference template type +parameter `Val`, which represents the right operand of the assignment +expression. + +The actual return type of fusion's intrinsic sequence access (meta-)functions +when in invoked with (an instance of) `type_name` is a proxy type. +This type is implicitly convertible to the attribute type via [^get_expr['N]] and +forwards assignment to the underlying element via [^set_expr['N]]. +The value type (that is the type returned by __result_of_value_of__, +__result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element +is [^attribute_type['N]] with const-qualifier and reference removed. + +The macro should be used at global scope, and `type_name` should be the fully +namespace qualified name of the struct to be converted. + +[heading Header] + + #include + #include + +[heading Example] + namespace demo + { + struct employee + { + private: + std::string name; + int age; + + public: + void set_name(std::string const& n) + { + name=n; + } + + void set_age(int a) + { + age=a; + } + + std::string const& get_name()const + { + return name; + } + + int get_age()const + { + return age; + } + }; + } + + BOOST_FUSION_ADAPT_ADT( + demo::employee, + (std::string const&, std::string const&, obj.get_name(), obj.set_name(val)) + (int, int, obj.get_age(), obj.set_age(val))) + + demo::employee e; + front(e)="Edward Norton"; + back(e)=41; + //Prints 'Edward Norton is 41 years old' + std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl; + +[heading See also] + +__adt_attribute_proxy__ + +[endsect] + +[section:adapt_tpl_adt BOOST_FUSION_ADAPT_TPL_ADT] + +BOOST_FUSION_ADAPT_TPL_ADT is a macro than can be used to generate all the +necessary boilerplate to adapt an arbitrary template class type as a model of +__random_access_sequence__. + +[heading Synopsis] + + BOOST_FUSION_ADAPT_ADT( + (template_param0)(template_param1)..., + (type_name) (specialization_param0)(specialization_param1)..., + (attribute_type0, attribute_const_type0, get_expr0, set_expr0) + (attribute_type1, attribute_const_type1, get_expr1, set_expr1) + ... + ) + +[heading Expression Semantics] + +The above macro generates the necessary code to adapt `type_name` +or an arbitrary specialization of `type_name` +as a model of __random_access_sequence__. +The sequence `(template_param0)(template_param1)...` declares the names of +the template type parameters used. +The sequence `(specialization_param0)(specialization_param1)...` +declares the template parameters of the actual specialization of `type_name` +that is adapted as a fusion sequence. +The sequence of +[^(attribute_type['N], attribute_const_type['N], get_expr['N], set_expr['N])] +quadruples declares the types, const types, get-expressions and set-expressions +of the elements that are part of the adapted fusion sequence. +[^get_expr['N]] is the expression that is invoked to get the ['N]th element +of an instance of `type_name`. This expression may access a variable named +`obj` of type `type_name&` or `type_name const&` which represents the underlying +instance of `type_name`. +[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types +that [^get_expr['N]] denotes to. +[^set_expr['N]] is the expression that is invoked to set the ['N]th element +of an instance of `type_name`. This expression may access variables named +`obj` of type `type_name&`, which represent the corresponding instance of +`type_name`, and `val` of an arbitrary const-qualified reference template type +parameter `Val`, which represents the right operand of the assignment +expression. + +The actual return type of fusion's intrinsic sequence access (meta-)functions +when in invoked with (an instance of) `type_name` is a proxy type. +This type is implicitly convertible to the attribute type via [^get_expr['N]] and +forwards assignment to the underlying element via [^set_expr['N]]. +The value type (that is the type returned by __result_of_value_of__, +__result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element +is [^attribute_type['N]] with const-qualifier and reference removed. + +The macro should be used at global scope, and `type_name` should be the fully +namespace qualified name of the struct to be converted. + +[heading Header] + + #include + #include + +[heading Example] + namespace demo + { + template + struct employee + { + private: + Name name; + Age age; + + public: + void set_name(Name const& n) + { + name=n; + } + + void set_age(Age const& a) + { + age=a; + } + + Name const& get_name()const + { + return name; + } + + Age const& get_age()const + { + return age; + } + }; + } + + BOOST_FUSION_ADAPT_TPL_ADT( + (Name)(Age), + (demo::employee) (Name)(Age), + (Name const&, Name const&, obj.get_name(), obj.set_name(val)) + (Age const&, Age const&, obj.get_age(), obj.set_age(val))) + + demo::employee e; + boost::fusion::front(e)="Edward Norton"; + boost::fusion::back(e)=41; + //Prints 'Edward Norton is 41 years old' + std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl; + +[heading See also] + +__adt_attribute_proxy__ + +[endsect] + +[section:adapt_assoc_adt BOOST_FUSION_ADAPT_ASSOC_ADT] + +BOOST_FUSION_ADAPT_ASSOC_ADT is a macro than can be used to generate all the +necessary boilerplate to adapt an arbitrary class type as a model of +__random_access_sequence__ and __associative_sequence__. + +[heading Synopsis] + + BOOST_FUSION_ADAPT_ASSOC_ADT( + type_name, + (attribute_type0, attribute_const_type0, get_expr0, set_expr0, key_type0) + (attribute_type1, attribute_const_type1, get_expr1, set_expr1, key_type1) + ... + ) + +[heading Expression Semantics] + +The above macro generates the necessary code to adapt `type_name` +as a model of __random_access_sequence__ and __associative_sequence__. +The sequence of +[^(attribute_type['N], attribute_const_type['N], get_expr['N], set_expr['N], key_type['N])] +5-tuples declares the types, const types, get-expressions, set-expressions and key types +of the elements that are part of the adapted fusion sequence. +[^get_expr['N]] is the expression that is invoked to get the ['N]th element +of an instance of `type_name`. This expression may access a variable named +`obj` of type `type_name&` or `type_name const&` which represents the underlying +instance of `type_name`. +[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types +that [^get_expr['N]] denotes to. +[^set_expr['N]] is the expression that is invoked to set the ['N]th element +of an instance of `type_name`. This expression may access variables named +`obj` of type `type_name&`, which represent the corresponding instance of +`type_name`, and `val` of an arbitrary const-qualified reference template type +parameter `Val`, which represents the right operand of the assignment +expression. + +The actual return type of fusion's intrinsic sequence access (meta-)functions +when in invoked with (an instance of) `type_name` is a proxy type. +This type is implicitly convertible to the attribute type via [^get_expr['N]] and +forwards assignment to the underlying element via [^set_expr['N]]. +The value type (that is the type returned by __result_of_value_of__, +__result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element +is [^attribute_type['N]] with const-qualifier and reference removed. + +The macro should be used at global scope, and `type_name` should be the fully +namespace qualified name of the struct to be converted. + +[heading Header] + + #include + #include + +[heading Example] + namespace demo + { + struct employee + { + private: + std::string name; + int age; + + public: + void set_name(std::string const& n) + { + name=n; + } + + void set_age(int a) + { + age=a; + } + + std::string const& get_name()const + { + return name; + } + + int get_age()const + { + return age; + } + }; + } + + namespace keys + { + struct name; + struct age; + } + + BOOST_FUSION_ADAPT_ASSOC_ADT( + demo::employee, + (std::string const&, std::string const&, obj.get_name(), obj.set_name(val), keys::name) + (int, int, obj.get_age(), obj.set_age(val), keys::age)) + + demo::employee e; + at_key(e)="Edward Norton"; + at_key(e)=41; + //Prints 'Edward Norton is 41 years old' + std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl; + +[heading See also] + +__adt_attribute_proxy__ + +[endsect] + +[section:adapt_assoc_tpl_adt BOOST_FUSION_ADAPT_ASSOC_TPL_ADT] + +BOOST_FUSION_ADAPT_ASSOC_TPL_ADT is a macro than can be used to generate all the +necessary boilerplate to adapt an arbitrary template class type as a model of +__random_access_sequence__ and __associative_sequence__. + +[heading Synopsis] + + BOOST_FUSION_ADAPT_ASSOC_TPL_ADT( + (template_param0)(template_param1)..., + (type_name) (specialization_param0)(specialization_param1)..., + (attribute_type0, attribute_const_type0, get_expr0, set_expr0, key_type0) + (attribute_type1, attribute_const_type1, get_expr1, set_expr1, key_type1) + ... + ) + +[heading Expression Semantics] + +The above macro generates the necessary code to adapt `type_name` +or an arbitrary specialization of `type_name` +as a model of __random_access_sequence__ and __associative_sequence__. +The sequence `(template_param0)(template_param1)...` declares the names of +the template type parameters used. +The sequence `(specialization_param0)(specialization_param1)...` +declares the template parameters of the actual specialization of `type_name` +that is adapted as a fusion sequence. +The sequence of +[^(attribute_type['N], attribute_const_type['N], get_expr['N], set_expr['N], key_type['N])] +5-tuples declares the types, const types, get-expressions, set-expressions and key types +of the elements that are part of the adapted fusion sequence. +[^get_expr['N]] is the expression that is invoked to get the ['N]th element +of an instance of `type_name`. This expression may access a variable named +`obj` of type `type_name&` or `type_name const&` which represents the underlying +instance of `type_name`. +[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types +that [^get_expr['N]] denotes to. +[^set_expr['N]] is the expression that is invoked to set the ['N]th element +of an instance of `type_name`. This expression may access variables named +`obj` of type `type_name&`, which represent the corresponding instance of +`type_name`, and `val` of an arbitrary const-qualified reference template type +parameter `Val`, which represents the right operand of the assignment +expression. + +The actual return type of fusion's intrinsic sequence access (meta-)functions +when in invoked with (an instance of) `type_name` is a proxy type. +This type is implicitly convertible to the attribute type via [^get_expr['N]] and +forwards assignment to the underlying element via [^set_expr['N]]. +The value type (that is the type returned by __result_of_value_of__, +__result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element +is [^attribute_type['N]] with const-qualifier and reference removed. + +The macro should be used at global scope, and `type_name` should be the fully +namespace qualified name of the struct to be converted. + +[heading Header] + + #include + #include + +[heading Example] + namespace demo + { + template + struct employee + { + private: + Name name; + Age age; + + public: + void set_name(Name const& n) + { + name=n; + } + + void set_age(Age const& a) + { + age=a; + } + + Name const& get_name()const + { + return name; + } + + Age const& get_age()const + { + return age; + } + }; + } + + namespace keys + { + struct name; + struct age; + } + + BOOST_FUSION_ADAPT_ASSOC_TPL_ADT( + (Name)(Age), + (demo::employee) (Name)(Age), + (Name const&, Name const&, obj.get_name(), obj.set_name(val), keys::name) + (Age const&, Age const&, obj.get_age(), obj.set_age(val), keys::age)) + + demo::employee e; + at_key(e)="Edward Norton"; + at_key(e)=41; + //Prints 'Edward Norton is 41 years old' + std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl; + +[heading See also] + +__adt_attribute_proxy__ + +[endsect] + +[section:define_struct BOOST_FUSION_DEFINE_STRUCT] BOOST_FUSION_DEFINE_STRUCT is a macro that can be used to generate all the necessary boilerplate to define and adapt an arbitrary struct as a model of diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk index 46f1557a..d60df5fc 100644 --- a/doc/algorithm.qbk +++ b/doc/algorithm.qbk @@ -1,5 +1,6 @@ [/============================================================================== Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -91,7 +92,7 @@ the first call) and [arg_desc] of `seq`. [[Parameter][Requirement][Description]] [[`seq`][A model of seq_concept_macro][Operation's argument]] [[`initial_state`][Any type][Initial state]] - [[`f`][`f(s,arg_id_macro)` with return type `__boost_result_of_call__::type` must be a valid expression for current state `s` of type `S`, and for each invoke_desc_macro][Operation's argument]] + [[`f`][`f(s,arg_id_macro)` with return type `__boost_result_of_call__::type` for current state `s` of type `S`, and for each invoke_desc_macro][Operation's argument]] ] [heading Expression Semantics] diff --git a/doc/changelog.qbk b/doc/changelog.qbk index ca301a2a..67a65d0e 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -1,5 +1,6 @@ [/============================================================================== Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -34,6 +35,8 @@ This section summarizes significant changes to the Fusion library. __define_assoc_struct__ and __define_assoc_tpl_struct__ (Christopher Schmidt) * June 18, 2010: Added __reverse_fold__, __iter_fold__ and __reverse_iter_fold__ (Christopher Schmidt) - +* October 7, 2010: Added __adapt_adt__, __adapt_tpl_adt__, + __adapt_assoc_adt__ and __adapt_assoc_tpl_adt__ (Joel de Guzman, + Hartmut Kaiser and Christopher Schmidt) [endsect] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 9118c130..50892d7d 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -1,5 +1,6 @@ [/============================================================================== Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -131,16 +132,20 @@ [def __std_pair__ [link fusion.adapted.std__pair `std::pair`]] [def __boost_array__ [link fusion.adapted.boost__array `boost::array`]] [def __mpl_sequence__ [link fusion.adapted.mpl_sequence mpl sequence]] -[def __adapt_tpl_struct__ [link fusion.adapted.adapt_tpl_struct BOOST_FUSION_ADAPT_TPL_STRUCT]] -[def __adapt_struct_named__ [link fusion.adapted.adapt_struct_named BOOST_FUSION_ADAPT_STRUCT_NAMED]] -[def __adapt_struct_named_ns__ [link fusion.adapted.adapt_struct_named BOOST_FUSION_ADAPT_STRUCT_NAMED_NS]] -[def __adapt_assoc_tpl_struct__ [link fusion.adapted.adapt_assoc_tpl_struct BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT]] -[def __adapt_assoc_struct_named__ [link fusion.adapted.adapt_assoc_struct_named BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED]] -[def __adapt_assoc_struct_named_ns__ [link fusion.adapted.adapt_assoc_struct_named BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS]] -[def __define_struct__ [link fusion.adapted.define_struct BOOST_FUSION_DEFINE_STRUCT]] -[def __define_tpl_struct__ [link fusion.adapted.define_tpl_struct BOOST_FUSION_DEFINE_TPL_STRUCT]] -[def __define_assoc_struct__ [link fusion.adapted.define_assoc_struct BOOST_FUSION_DEFINE_ASSOC_STRUCT]] -[def __define_assoc_tpl_struct__ [link fusion.adapted.define_assoc_tpl_struct BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT]] +[def __adapt_tpl_struct__ [link fusion.adapted.adapt_tpl_struct `BOOST_FUSION_ADAPT_TPL_STRUCT`]] +[def __adapt_struct_named__ [link fusion.adapted.adapt_struct_named `BOOST_FUSION_ADAPT_STRUCT_NAMED`]] +[def __adapt_struct_named_ns__ [link fusion.adapted.adapt_struct_named `BOOST_FUSION_ADAPT_STRUCT_NAMED_NS`]] +[def __adapt_assoc_tpl_struct__ [link fusion.adapted.adapt_assoc_tpl_struct `BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT`]] +[def __adapt_assoc_struct_named__ [link fusion.adapted.adapt_assoc_struct_named `BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED`]] +[def __adapt_assoc_struct_named_ns__ [link fusion.adapted.adapt_assoc_struct_named `BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS`]] +[def __adapt_adt__ [link fusion.adapted.adapt_adt `BOOST_FUSION_ADAPT_ADT`]] +[def __adapt_tpl_adt__ [link fusion.adapted.adapt_tpl_adt `BOOST_FUSION_ADAPT_TPL_ADT`]] +[def __adapt_assoc_adt__ [link fusion.adapted.adapt_assoc_adt `BOOST_FUSION_ADAPT_ASSOC_ADT`]] +[def __adapt_assoc_tpl_adt__ [link fusion.adapted.adapt_assoc_tpl_adt `BOOST_FUSION_ADAPT_ASSOC_TPL_ADT`]] +[def __define_struct__ [link fusion.adapted.define_struct `BOOST_FUSION_DEFINE_STRUCT`]] +[def __define_tpl_struct__ [link fusion.adapted.define_tpl_struct `BOOST_FUSION_DEFINE_TPL_STRUCT`]] +[def __define_assoc_struct__ [link fusion.adapted.define_assoc_struct `BOOST_FUSION_DEFINE_ASSOC_STRUCT`]] +[def __define_assoc_tpl_struct__ [link fusion.adapted.define_assoc_tpl_struct `BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT`]] [def __intrinsic__ [link fusion.sequence.intrinsic Intrinsic]] [def __intrinsics__ [link fusion.sequence.intrinsic Intrinsics]] @@ -317,6 +322,8 @@ [def __sequence_facade__ [link fusion.extension.sequence_facade `sequence_facade`]] [def __iterator_facade__ [link fusion.extension.iterator_facade `iterator_facade`]] +[def __adt_attribute_proxy__ [link fusion.notes.adt_attribute_proxy `adt_attribute_proxy`]] + [include preface.qbk] [include introduction.qbk] [include quick_start.qbk] diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index c050010f..14543404 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -38,6 +38,10 @@
    BOOST_FUSION_ADAPT_ASSOC_STRUCT
    BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT
    BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED
    +
    BOOST_FUSION_ADAPT_ADT
    +
    BOOST_FUSION_ADAPT_TPL_ADT
    +
    BOOST_FUSION_ADAPT_ASSOC_ADT
    +
    BOOST_FUSION_ADAPT_ASSOC_TPL_ADT
    BOOST_FUSION_DEFINE_STRUCT
    BOOST_FUSION_DEFINE_TPL_STRUCT
    BOOST_FUSION_DEFINE_ASSOC_STRUCT
    @@ -56,7 +60,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

    #include <boost/fusion/adapted.hpp>
    diff --git a/doc/html/fusion/adapted/adapt_adt.html b/doc/html/fusion/adapted/adapt_adt.html
    new file mode 100644
    index 00000000..d4b6d12b
    --- /dev/null
    +++ b/doc/html/fusion/adapted/adapt_adt.html
    @@ -0,0 +1,165 @@
    +
    +
    +
    +BOOST_FUSION_ADAPT_ADT
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + BOOST_FUSION_ADAPT_ADT is a macro than can be used to generate all the necessary + boilerplate to adapt an arbitrary class type as a model of Random + Access Sequence. +

    +
    + + Synopsis +
    +
    BOOST_FUSION_ADAPT_ADT(
    +    type_name,
    +    (attribute_type0, attribute_const_type0, get_expr0, set_expr0)
    +    (attribute_type1, attribute_const_type1, get_expr1, set_expr1)
    +    ...
    +    )
    +
    +
    + + Expression + Semantics +
    +

    + The above macro generates the necessary code to adapt type_name + as a model of Random + Access Sequence. The sequence of (attribute_typeN, + attribute_const_typeN, get_exprN, + set_exprN) quadruples declares the types, + const types, get-expressions and set-expressions of the elements that are + part of the adapted fusion sequence. get_exprN + is the expression that is invoked to get the Nth element + of an instance of type_name. + This expression may access a variable named obj + of type type_name& + or type_name const& which represents the underlying instance + of type_name. attribute_typeN + and attribute_const_typeN may specify + the types that get_exprN denotes + to. set_exprN is the expression that + is invoked to set the Nth element of an instance of + type_name. This expression + may access variables named obj + of type type_name&, + which represent the corresponding instance of type_name, + and val of an arbitrary const-qualified + reference template type parameter Val, + which represents the right operand of the assignment expression. +

    +

    + The actual return type of fusion's intrinsic sequence access (meta-)functions + when in invoked with (an instance of) type_name + is a proxy type. This type is implicitly convertible to the attribute type + via get_exprN and forwards assignment + to the underlying element via set_exprN. + The value type (that is the type returned by result_of::value_of, result_of::value_at and result_of::value_at_c) of the Nth + element is attribute_typeN with const-qualifier + and reference removed. +

    +

    + The macros should be used at global scope, and type_name + should be the fully namespace qualified name of the struct to be converted. +

    +
    + + Header +
    +
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
    +#include <boost/fusion/include/adapt_adt.hpp>
    +
    +
    + + Example +
    +
    namespace demo
    +{
    +    struct employee
    +    {
    +    private:
    +        std::string name;
    +        int age;
    +            
    +    public:
    +        void set_name(std::string const& n)
    +        {
    +            name=n;
    +        }
    +            
    +        void set_age(int a)
    +        {
    +            age=a;
    +        }
    +            
    +        std::string const& get_name()const
    +        {
    +            return name;
    +        }
    +            
    +        int get_age()const
    +        {
    +            return age;
    +        }
    +    };
    +}
    +
    +BOOST_FUSION_ADAPT_ADT(
    +    demo::employee,
    +    (std::string const&, std::string const&, obj.get_name(), obj.set_name(val))
    +    (int, int, obj.get_age(), obj.set_age(val)))
    +
    +demo::employee e;
    +front(e)="Edward Norton";
    +back(e)=41;
    +//Prints 'Edward Norton is 41 years old'
    +std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +
    +
    + + See also +
    +

    + adt_attribute_proxy +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index 015f20d0..9fc434be 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT
    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    @@ -48,7 +48,7 @@
         )
     
    - + Semantics

    @@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_assoc_adt.html b/doc/html/fusion/adapted/adapt_assoc_adt.html
    new file mode 100644
    index 00000000..4ab345db
    --- /dev/null
    +++ b/doc/html/fusion/adapted/adapt_assoc_adt.html
    @@ -0,0 +1,175 @@
    +
    +
    +
    +BOOST_FUSION_ADAPT_ASSOC_ADT
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + BOOST_FUSION_ADAPT_ASSOC_ADT is a macro than can be used to generate all + the necessary boilerplate to adapt an arbitrary class type as a model of + Random Access + Sequence and Associative + Sequence. +

    +
    + + Synopsis +
    +
    BOOST_FUSION_ADAPT_ASSOC_ADT(
    +    type_name,
    +    (attribute_type0, attribute_const_type0, get_expr0, set_expr0, key_type0)
    +    (attribute_type1, attribute_const_type1, get_expr1, set_expr1, key_type1)
    +    ...
    +    )
    +
    +
    + + Expression + Semantics +
    +

    + The above macro generates the necessary code to adapt type_name + as a model of Random + Access Sequence and Associative + Sequence. The sequence of (attribute_typeN, + attribute_const_typeN, get_exprN, + set_exprN, key_typeN) + 5-tuples declares the types, const types, get-expressions, set-expressions + and key types of the elements that are part of the adapted fusion sequence. + get_exprN is the expression that + is invoked to get the Nth element of an instance of + type_name. This expression + may access a variable named obj + of type type_name& + or type_name const& which represents the underlying instance + of type_name. attribute_typeN + and attribute_const_typeN may specify + the types that get_exprN denotes + to. set_exprN is the expression that + is invoked to set the Nth element of an instance of + type_name. This expression + may access variables named obj + of type type_name&, + which represent the corresponding instance of type_name, + and val of an arbitrary const-qualified + reference template type parameter Val, + which represents the right operand of the assignment expression. +

    +

    + The actual return type of fusion's intrinsic sequence access (meta-)functions + when in invoked with (an instance of) type_name + is a proxy type. This type is implicitly convertible to the attribute type + via get_exprN and forwards assignment + to the underlying element via set_exprN. + The value type (that is the type returned by result_of::value_of, result_of::value_at and result_of::value_at_c) of the Nth + element is attribute_typeN with const-qualifier + and reference removed. +

    +

    + The macros should be used at global scope, and type_name + should be the fully namespace qualified name of the struct to be converted. +

    +
    + + Header +
    +
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
    +#include <boost/fusion/include/adapt_assoc_adt.hpp>
    +
    +
    + + Example +
    +
    namespace demo
    +{
    +    struct employee
    +    {
    +    private:
    +        std::string name;
    +        int age;
    +            
    +    public:
    +        void set_name(std::string const& n)
    +        {
    +            name=n;
    +        }
    +            
    +        void set_age(int a)
    +        {
    +            age=a;
    +        }
    +            
    +        std::string const& get_name()const
    +        {
    +            return name;
    +        }
    +            
    +        int get_age()const
    +        {
    +            return age;
    +        }
    +    };
    +}
    +
    +namespace keys
    +{
    +    struct name;
    +    struct age;
    +}
    +
    +BOOST_FUSION_ADAPT_ASSOC_ADT(
    +    demo::employee,
    +    (std::string const&, std::string const&, obj.get_name(), obj.set_name(val), keys::name)
    +    (int, int, obj.get_age(), obj.set_age(val), keys::age))
    +
    +demo::employee e;
    +at_key<keys::name>(e)="Edward Norton";
    +at_key<keys::age>(e)=41;
    +//Prints 'Edward Norton is 41 years old'
    +std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +
    +
    + + See also +
    +

    + adt_attribute_proxy +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html index 823db0a6..9cfe3f69 100644 --- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html +++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html @@ -7,7 +7,7 @@ - + @@ -20,14 +20,14 @@

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    @@ -58,7 +58,7 @@
         )
     
    - + Semantics

    @@ -83,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
     #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
     
    - + Example
    namespace demo
    @@ -127,7 +127,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html new file mode 100644 index 00000000..01861d7f --- /dev/null +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html @@ -0,0 +1,182 @@ + + + +BOOST_FUSION_ADAPT_ASSOC_TPL_ADT + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + BOOST_FUSION_ADAPT_ASSOC_TPL_ADT is a macro than can be used to generate + all the necessary boilerplate to adapt an arbitrary template class type as + a model of Random + Access Sequence and Associative + Sequence. +

    +
    + + Synopsis +
    +
    BOOST_FUSION_ADAPT_ASSOC_TPL_ADT(
    +    (template_param0)(template_param1)...,
    +    (type_name) (specialization_param0)(specialization_param1)...,
    +    (attribute_type0, attribute_const_type0, get_expr0, set_expr0, key_type0)
    +    (attribute_type1, attribute_const_type1, get_expr1, set_expr1, key_type1)
    +    ...
    +    )
    +
    +
    + + Expression + Semantics +
    +

    + The above macro generates the necessary code to adapt type_name + or an arbitrary specialization of type_name + as a model of Random + Access Sequence and Associative + Sequence. The sequence (template_param0)(template_param1)... + declares the names of the template type parameters used. The sequence (specialization_param0)(specialization_param1)... declares the template parameters of the + actual specialization of type_name + that is adapted as a fusion sequence. The sequence of (attribute_typeN, + attribute_const_typeN, get_exprN, + set_exprN, key_typeN) + 5-tuples declares the types, const types, get-expressions, set-expressions + and key types of the elements that are part of the adapted fusion sequence. + get_exprN is the expression that + is invoked to get the Nth element of an instance of + type_name. This expression + may access a variable named obj + of type type_name& + or type_name const& which represents the underlying instance + of type_name. attribute_typeN + and attribute_const_typeN may specify + the types that get_exprN denotes + to. set_exprN is the expression that + is invoked to set the Nth element of an instance of + type_name. This expression + may access variables named obj + of type type_name&, + which represent the corresponding instance of type_name, + and val of an arbitrary const-qualified + reference template type parameter Val, + which represents the right operand of the assignment expression. +

    +

    + The actual return type of fusion's intrinsic sequence access (meta-)functions + when in invoked with (an instance of) type_name + is a proxy type. This type is implicitly convertible to the attribute type + via get_exprN and forwards assignment + to the underlying element via set_exprN. + The value type (that is the type returned by result_of::value_of, result_of::value_at and result_of::value_at_c) of the Nth + element is attribute_typeN with const-qualifier + and reference removed. +

    +

    + The macros should be used at global scope, and type_name + should be the fully namespace qualified name of the struct to be converted. +

    +
    + + Header +
    +
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
    +#include <boost/fusion/include/adapt_assoc_adt.hpp>
    +
    +
    + + Example +
    +
    namespace demo
    +{
    +    template<typename Name, typename Age>
    +    struct employee
    +    {
    +    private:
    +        Name name;
    +        Age age;
    +            
    +    public:
    +        void set_name(Name const& n)
    +        {
    +            name=n;
    +        }
    +            
    +        void set_age(Age const& a)
    +        {
    +            age=a;
    +        }
    +            
    +        Name const& get_name()const
    +        {
    +            return name;
    +        }
    +            
    +        Age const& get_age()const
    +        {
    +            return age;
    +        }
    +    };
    +}
    +
    +namespace keys
    +{
    +    struct name;
    +    struct age;
    +}
    +
    +BOOST_FUSION_ADAPT_ASSOC_TPL_ADT(
    +    (Name)(Age),
    +    (demo::employee) (Name)(Age),
    +    (Name const&, Name const&, obj.get_name(), obj.set_name(val), keys::name)
    +    (Age const&, Age const&, obj.get_age(), obj.set_age(val), keys::age))
    +
    +demo::employee<std::string, int> e;
    +at_key<keys::name>(e)="Edward Norton";
    +at_key<keys::age>(e)=41;
    +//Prints 'Edward Norton is 41 years old'
    +std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +
    +
    + + See also +
    +

    + adt_attribute_proxy +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html index 0bae9d42..a79fecf8 100644 --- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT
    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
    @@ -50,7 +50,7 @@
         )
     
    - + Semantics

    @@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index ce17ac76..1a70b9cf 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT
     
     
    - + Description

    @@ -36,7 +36,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT(
    @@ -47,7 +47,7 @@
         )
     
    - + Semantics

    @@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html
    index 1aff279a..dbd7657f 100644
    --- a/doc/html/fusion/adapted/adapt_struct_named.html
    +++ b/doc/html/fusion/adapted/adapt_struct_named.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT_NAMED
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT_NAMED(
    @@ -57,7 +57,7 @@
         )
     
    - + Semantics

    @@ -81,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
     #include <boost/fusion/include/adapt_struct_named.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_tpl_adt.html b/doc/html/fusion/adapted/adapt_tpl_adt.html
    new file mode 100644
    index 00000000..302f45c1
    --- /dev/null
    +++ b/doc/html/fusion/adapted/adapt_tpl_adt.html
    @@ -0,0 +1,173 @@
    +
    +
    +
    +BOOST_FUSION_ADAPT_TPL_ADT
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + BOOST_FUSION_ADAPT_TPL_ADT is a macro than can be used to generate all the + necessary boilerplate to adapt an arbitrary template class type as a model + of Random + Access Sequence. +

    +
    + + Synopsis +
    +
    BOOST_FUSION_ADAPT_ADT(
    +    (template_param0)(template_param1)...,
    +    (type_name) (specialization_param0)(specialization_param1)...,
    +    (attribute_type0, attribute_const_type0, get_expr0, set_expr0)
    +    (attribute_type1, attribute_const_type1, get_expr1, set_expr1)
    +    ...
    +    )
    +
    +
    + + Expression + Semantics +
    +

    + The above macro generates the necessary code to adapt type_name + or an arbitrary specialization of type_name + as a model of Random + Access Sequence. The sequence (template_param0)(template_param1)... + declares the names of the template type parameters used. The sequence (specialization_param0)(specialization_param1)... declares the template parameters of the + actual specialization of type_name + that is adapted as a fusion sequence. The sequence of (attribute_typeN, + attribute_const_typeN, get_exprN, + set_exprN) quadruples declares the types, + const types, get-expressions and set-expressions of the elements that are + part of the adapted fusion sequence. get_exprN + is the expression that is invoked to get the Nth element + of an instance of type_name. + This expression may access a variable named obj + of type type_name& + or type_name const& which represents the underlying instance + of type_name. attribute_typeN + and attribute_const_typeN may specify + the types that get_exprN denotes + to. set_exprN is the expression that + is invoked to set the Nth element of an instance of + type_name. This expression + may access variables named obj + of type type_name&, + which represent the corresponding instance of type_name, + and val of an arbitrary const-qualified + reference template type parameter Val, + which represents the right operand of the assignment expression. +

    +

    + The actual return type of fusion's intrinsic sequence access (meta-)functions + when in invoked with (an instance of) type_name + is a proxy type. This type is implicitly convertible to the attribute type + via get_exprN and forwards assignment + to the underlying element via set_exprN. + The value type (that is the type returned by result_of::value_of, result_of::value_at and result_of::value_at_c) of the Nth + element is attribute_typeN with const-qualifier + and reference removed. +

    +

    + The macros should be used at global scope, and type_name + should be the fully namespace qualified name of the struct to be converted. +

    +
    + + Header +
    +
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
    +#include <boost/fusion/include/adapt_adt.hpp>
    +
    +
    + + Example +
    +
      namespace demo
    +  { 
    +template<typename Name, typename Age>
    +      struct employee
    +      {
    +      private:
    +          Name name;
    +          Age age;
    +              
    +      public:
    +          void set_name(Name const& n)
    +          {
    +              name=n;
    +          }
    +              
    +          void set_age(Age const& a)
    +          {
    +              age=a;
    +          }
    +              
    +          Name const& get_name()const
    +          {
    +              return name;
    +          }
    +              
    +          Age const& get_age()const
    +          {
    +              return age;
    +          }
    +      };
    +  }
    +  
    +  BOOST_FUSION_ADAPT_TPL_ADT(
    +      (Name)(Age),
    +      (demo::employee) (Name)(Age),
    +      (Name const&, Name const&, obj.get_name(), obj.set_name(val))
    +      (Age const&, Age const&, obj.get_age(), obj.set_age(val)))
    +
    +  demo::employee<std::string, int> e;
    +  boost::fusion::front(e)="Edward Norton";
    +  boost::fusion::back(e)=41;
    +  //Prints 'Edward Norton is 41 years old'
    +  std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +
    +
    + + See also +
    +

    + adt_attribute_proxy +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html index 4cab36b1..ce8087c4 100644 --- a/doc/html/fusion/adapted/adapt_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_TPL_STRUCT
    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_TPL_STRUCT(
    @@ -49,7 +49,7 @@
         )
     
    - + Semantics

    @@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html
    index 4dce6c87..f4ad0d69 100644
    --- a/doc/html/fusion/adapted/array.html
    +++ b/doc/html/fusion/adapted/array.html
    @@ -32,14 +32,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     
    - + Model of
    • @@ -47,7 +47,7 @@ Access Sequence
    - + Example
    int arr[3] = {1,2,3};
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index d975945f..d3c4492b 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -33,14 +33,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/boost_array.hpp>
     #include <boost/fusion/include/boost_array.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    boost::array<int,3> arr = {{1,2,3}};
    @@ -60,7 +60,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index eeabbe7d..a37d1e73 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -33,21 +33,21 @@ Sequence.

    - + Header
    #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     
    - + Model of
    - + Example
    boost::tuple<int,std::string> example_tuple(101, "hello");
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index b1f2a613..4b791513 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_DEFINE_ASSOC_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_STRUCT(
    @@ -68,7 +68,7 @@
     
     
     
    - + Expression Semantics
    @@ -182,14 +182,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    index 71b62c85..b6578a99 100644
    --- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT
     
     
    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
    @@ -73,7 +73,7 @@
     
     
     
    - + Expression Semantics
    @@ -187,14 +187,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html
    index 0e703808..871ade51 100644
    --- a/doc/html/fusion/adapted/define_struct.html
    +++ b/doc/html/fusion/adapted/define_struct.html
    @@ -6,7 +6,7 @@
     
     
     
    -
    +
     
     
     
    @@ -20,16 +20,12 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    -
    - - Description -

    BOOST_FUSION_DEFINE_STRUCT is a macro that can be used to generate all the necessary boilerplate to define and adapt an arbitrary struct as a model @@ -37,7 +33,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_STRUCT(
    @@ -67,7 +63,7 @@
     
     
    - + Expression Semantics
    @@ -178,14 +174,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // demo::employee is a Fusion sequence
    @@ -206,7 +202,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html index e367c5fb..751ca2e4 100644 --- a/doc/html/fusion/adapted/define_tpl_struct.html +++ b/doc/html/fusion/adapted/define_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_DEFINE_TPL_STRUCT
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_TPL_STRUCT(
    @@ -72,7 +72,7 @@
     
     
     
    - + Expression Semantics
    @@ -183,14 +183,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // Any instantiated demo::employee is a Fusion sequence
    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html
    index 07ee19f5..62921a20 100644
    --- a/doc/html/fusion/adapted/mpl_sequence.html
    +++ b/doc/html/fusion/adapted/mpl_sequence.html
    @@ -32,14 +32,14 @@
             sequences fully conforming fusion sequences.
           

    - + Header
    #include <boost/fusion/adapted/mpl.hpp>
     #include <boost/fusion/include/mpl.hpp>
     
    - + Model of
      @@ -60,7 +60,7 @@
    - + Example
    mpl::vector_c<int, 123, 456> vec_c;
    @@ -73,7 +73,7 @@
     std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index e0a23725..2b99776f 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,14 +33,14 @@ Access Sequence.

    - + Header
    #include <boost/fusion/adapted/std_pair.hpp>
     #include <boost/fusion/include/std_pair.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    std::pair<int, std::string> p(123, "Hola!!!");
    @@ -57,7 +57,7 @@
     std::cout << p << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 4a775c50..7a5e2315 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -44,7 +44,7 @@

    - + Lazy Evaluation

    @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

    - + Sequence Extension

    @@ -87,7 +87,7 @@ functions to convert back to the original sequence type.

    - + Header

    #include <boost/fusion/algorithm.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index a5a1dc0d..dd9d8cb7 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -35,7 +35,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header
    #include <boost/fusion/algorithm/iteration.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    index dbe77838..01d9a678 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    @@ -27,7 +27,7 @@
     accumulate
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -129,9 +129,7 @@

    - f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression - for current state s - of type S, + f(s,e) with return type boost::result_of<F(S,E)>::type for current state s of type S, and for each element e of type E in seq @@ -147,7 +145,7 @@


    - + Expression Semantics
    @@ -162,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index 609ad429..b08e4067 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -27,7 +27,7 @@
     fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -129,9 +129,7 @@

    - f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression - for current state s - of type S, + f(s,e) with return type boost::result_of<F(S,E)>::type for current state s of type S, and for each element e of type E in seq @@ -147,7 +145,7 @@


    - + Expression Semantics
    @@ -162,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index ecbaf016..7f590a80 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    @@ -27,14 +27,14 @@
     for_each
     
     
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence& seq, F f);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -126,21 +126,21 @@ in seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    struct increment
    diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    index 1a67c109..f1bba8e6 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    @@ -27,7 +27,7 @@
     iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -129,9 +129,7 @@

    - f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression - for current state s - of type S, + f(s,it) with return type boost::result_of<F(S,It)>::type for current state s of type S, and for each iterator it of type It on an element of seq @@ -147,7 +145,7 @@


    - + Expression Semantics
    @@ -162,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
     #include <boost/fusion/include/iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    index db26bf39..0f0b2beb 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    @@ -27,7 +27,7 @@
     reverse_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -129,9 +129,7 @@

    - f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression - for current state s - of type S, + f(s,e) with return type boost::result_of<F(S,E)>::type for current state s of type S, and for each element e of type E in seq @@ -147,7 +145,7 @@


    - + Expression Semantics
    @@ -162,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
     #include <boost/fusion/include/reverse_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    index ee756e0b..fa6f58ed 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    @@ -27,7 +27,7 @@
     reverse_iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ if it is the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -129,9 +129,7 @@

    - f(s,it) with return type boost::result_of<F(S,It)>::type must be a valid expression - for current state s - of type S, + f(s,it) with return type boost::result_of<F(S,It)>::type for current state s of type S, and for each iterator it of type It on an element of seq @@ -147,7 +145,7 @@


    - + Expression Semantics
    @@ -162,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
     #include <boost/fusion/include/reverse_iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    index 98e34c06..e96309b5 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    @@ -27,14 +27,14 @@
     accumulate
     
     
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index a6bc5d6d..303ab9de 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -27,14 +27,14 @@
     fold
     
     
    - + Description

    Returns the result type of fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index daa9cf7e..c40198f1 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -31,11 +31,11 @@
                 return type of for_each is always void.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    index bf76c067..9f8d6dd3 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    @@ -27,14 +27,14 @@
     iter_fold
     
     
    - + Description

    Returns the result type of iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    index c2df3e49..7f09918a 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    @@ -27,14 +27,14 @@
     reverse_fold
     
     
    - + Description

    Returns the result type of reverse_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    index 321100e6..13379b7c 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    @@ -27,14 +27,14 @@
     reverse_iter_fold
     
     
    - + Description

    Returns the result type of reverse_iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index 198110d9..c2432194 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -34,7 +34,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header
    #include <boost/fusion/algorithm/query.hpp>
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
    index a50edb9e..c2e09a5d 100644
    --- a/doc/html/fusion/algorithm/query/functions/all.html
    +++ b/doc/html/fusion/algorithm/query/functions/all.html
    @@ -27,7 +27,7 @@
     all
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index 039896ae..56baf69d 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/query/functions/any.html
    @@ -27,7 +27,7 @@
     any
     
     
    - + Description

    @@ -38,7 +38,7 @@ least one element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -116,7 +116,7 @@

    - + Expression semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index f1b8aac7..09d9eff4 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/query/functions/count.html
    @@ -27,14 +27,14 @@
     count
     
     
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -128,21 +128,21 @@ t in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    const vector<double,int,int> vec(1.0,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index 027d35f2..966c269c 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -127,21 +127,21 @@ in seq where f evaluates to true.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    const vector<int,int,int> vec(1,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index ce13fc23..79be3f13 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/query/functions/find.html
    @@ -27,14 +27,14 @@
     find
     
     
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    const vector<char,int> vec('a','0');
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index c076fd83..4234bf7b 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
    @@ -32,11 +32,11 @@
                 Lambda Expression evaluates to boost::mpl::true_.
               

    - + Description
    - + Synopsis
    template<
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -117,7 +117,7 @@

    - + Expression Semantics
    @@ -135,7 +135,7 @@ if there is no such element.

    - + Complexity

    @@ -150,7 +150,7 @@

    - + Example
    const vector<double,int> vec(1.0,2);
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index 0f69a952..2caaaf03 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/query/functions/none.html
    @@ -27,7 +27,7 @@
     none
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
    index 813359d4..07fe190c 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
    @@ -27,14 +27,14 @@
     all
     
     
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index 227892fd..a0d52d79 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -27,14 +27,14 @@
     any
     
     
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index 8efe122e..b29bf813 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -27,7 +27,7 @@
     count
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index 9ab45a72..2b7a3178 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index 7f90edc3..ff5abb27 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -27,7 +27,7 @@
     find
     
     
    - + Description

    @@ -35,7 +35,7 @@ search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index d7abb9ed..8423e3f6 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -27,7 +27,7 @@
     find_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index dda1ce0f..6662ae16 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -27,14 +27,14 @@
     none
     
     
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 9325d8d9..0b0c6c1e 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -47,7 +47,7 @@
             

    - + Header
    #include <boost/fusion/algorithm/transformation.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index b76f040d..28d92803 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html
    @@ -27,14 +27,14 @@
     clear
     
     
    - + Description

    clear returns an empty sequence.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,21 +103,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    assert(clear(make_vector(1,2,3)) == make_vector());
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index a312371c..31609b7c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
    @@ -27,7 +27,7 @@
     erase
     
     
    - + Description

    @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    template<
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.73. Parameters

    +

    Table 1.73. Parameters

    @@ -138,7 +138,7 @@

    - + Expression Semantics
    @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    const vector<int, double, char> vec(1, 2.0, 'c');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index 909a2e9e..022be51c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -39,7 +39,7 @@ key.

    - + Synposis
    template<
    @@ -49,7 +49,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index 211f135d..5936a449 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ the elements of a specified type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    const vector<int,int,long,long> vec(1,2,3,4);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index 8723610f..9cda3fca 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -140,21 +140,21 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    const vector<int,int,double,double> vec(1,2,3.0,4.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index 43116335..4b7298aa 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -129,7 +129,7 @@

    - + Expression Semantics
    @@ -150,21 +150,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index 28920878..eaead16b 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -130,7 +130,7 @@

    - + Expression Semantics
    @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 074c3c66..c705da30 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
    @@ -27,7 +27,7 @@
     join
     
     
    - + Description

    @@ -35,7 +35,7 @@ first followed by the elements of the second.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ The order of the elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index bf9a9f8f..f0843f01 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    @@ -27,14 +27,14 @@
     pop_back
     
     
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 1cbc7971..b5713205 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    @@ -27,14 +27,14 @@
     pop_front
     
     
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index 98b9f363..bcf3d69b 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    @@ -27,14 +27,14 @@
     push_back
     
     
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -129,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>
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index 0c6f5cb9..06456dc9 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    @@ -27,14 +27,14 @@
     push_front
     
     
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -130,21 +130,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index b255106c..b01c6966 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ except those of a given type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index 9f50dcc0..f261c604 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -139,21 +139,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index 91e80e04..80d5ab5a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ a new value.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index 46f87bc1..fad4f7e0 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ replaced with a new value.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index c351f200..8cf2b45e 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -27,14 +27,14 @@
     reverse
     
     
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -120,21 +120,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 05284e65..26e86e66 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -134,7 +134,7 @@ within seq.

    - + Binary version synopsis
    @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index 222af4df..9ed4e66e 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -114,21 +114,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index 9c907913..8a2431ac 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -27,7 +27,7 @@
     clear
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.92. Parameters

    +

    Table 1.92. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index 9f738251..d35a3918 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -31,11 +31,11 @@
                 and range delimiting iterator types.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -168,14 +168,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index cdb90419..c4fcec5e 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -35,7 +35,7 @@ and key types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.94. Parameters

    +

    Table 1.94. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index bc305030..d2776de3 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ and type to retain.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.83. Parameter

    +

    Table 1.83. Parameter

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 73876b57..495f3c15 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate type.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameter

    +

    Table 1.84. Parameter

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index 5ab9c731..dd20378d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ position iterator and insertion types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.95. Parameters

    +

    Table 1.95. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -151,14 +151,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index 41ee3357..540d8fc2 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.96. Parameters

    +

    Table 1.96. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -160,14 +160,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 6ac41ff8..7ff86016 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -27,14 +27,14 @@
     join
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 2b7f04d8..539e6e78 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -27,7 +27,7 @@
     pop_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.97. Parameters

    +

    Table 1.97. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 6fcc81e7..67cd7586 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -27,7 +27,7 @@
     pop_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.98. Parameters

    +

    Table 1.98. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    index 0a44319b..e78951cd 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    @@ -27,7 +27,7 @@
     push_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.99. Parameters

    +

    Table 1.99. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    index c70ea208..a133f805 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    @@ -27,7 +27,7 @@
     push_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.100. Parameters

    +

    Table 1.100. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    index 9b418db3..cc776038 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ removal types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 8040ad2d..13d28659 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 5c735409..9a88cdcd 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to replace.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index e0765419..b485df20 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -146,14 +146,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index 29388eb5..b336e79c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -27,7 +27,7 @@
     reverse
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index 6a9bfddb..e31147aa 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -145,7 +145,7 @@ within seq.

    - + Binary version synopsis
    @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 7a3d342c..33396d10 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -72,14 +72,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
    index 0e36666b..3e8710f0 100644
    --- a/doc/html/fusion/change_log.html
    +++ b/doc/html/fusion/change_log.html
    @@ -65,29 +65,34 @@
               Schmidt)
             
     
  • - March 1, 2010: Added BOOST_FUSION_ADAPT_STRUCT_NAMED - and BOOST_FUSION_ADAPT_STRUCT_NAMED_NS + March 1, 2010: Added BOOST_FUSION_ADAPT_STRUCT_NAMED + and BOOST_FUSION_ADAPT_STRUCT_NAMED_NS (Hartmut Kaiser)
  • April 4, 2010: Added array - support, BOOST_FUSION_ADAPT_TPL_STRUCT, - BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT, - BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED - and BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS + support, BOOST_FUSION_ADAPT_TPL_STRUCT, + BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT, + BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED + and BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS (Christopher Schmidt)
  • - April 5, 2010: Added BOOST_FUSION_DEFINE_STRUCT, - BOOST_FUSION_DEFINE_TPL_STRUCT, - BOOST_FUSION_DEFINE_ASSOC_STRUCT - and BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT + April 5, 2010: Added BOOST_FUSION_DEFINE_STRUCT, BOOST_FUSION_DEFINE_TPL_STRUCT, + BOOST_FUSION_DEFINE_ASSOC_STRUCT + and BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT (Christopher Schmidt)
  • June 18, 2010: Added reverse_fold, iter_fold and reverse_iter_fold (Christopher Schmidt)
  • +
  • + October 7, 2010: Added BOOST_FUSION_ADAPT_ADT, BOOST_FUSION_ADAPT_TPL_ADT, + BOOST_FUSION_ADAPT_ASSOC_ADT + and BOOST_FUSION_ADAPT_ASSOC_TPL_ADT + (Joel de Guzman, Hartmut Kaiser and Christopher Schmidt) +
  • diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index 48a70067..306705f6 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -49,7 +49,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    #include <boost/fusion/container.hpp>
    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index f77add57..e15b2a90 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -27,7 +27,7 @@
     cons
     
     
    - + Description

    @@ -42,21 +42,21 @@ Inlined Functions).

    - + Header
    #include <boost/fusion/container/list/cons.hpp>
     #include <boost/fusion/include/cons.hpp>
     
    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct cons;
     
    - + Template parameters
    @@ -117,7 +117,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -292,7 +292,7 @@

    - + Example
    cons<int, cons<float> > l(12, cons<float>(5.5f));
    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index 2ae18d78..d4015f8c 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -35,7 +35,7 @@
             types using one of these conversion functions.
           

    - + Header
    #include <boost/fusion/include/convert.hpp>
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
    index 0f4517c9..325075a6 100644
    --- a/doc/html/fusion/container/conversion/functions/as_list.html
    +++ b/doc/html/fusion/container/conversion/functions/as_list.html
    @@ -27,14 +27,14 @@
     as_list
     
     
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    as_list(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index 25f16e52..64f5edd5 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/conversion/functions/as_map.html
    @@ -27,14 +27,14 @@
     as_map
     
     
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    as_map(make_vector(
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index 61b7d5dd..8f1c60ed 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/conversion/functions/as_set.html
    @@ -27,14 +27,14 @@
     as_set
     
     
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    as_set(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index 4872b954..c050c1f8 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/functions/as_vector.html
    @@ -27,14 +27,14 @@
     as_vector
     
     
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    as_vector(make_list('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    index 24464a0c..f5da378e 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    @@ -27,21 +27,21 @@
     as_list
     
     
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    template <typename Sequence>
     struct as_list;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    result_of::as_list<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index 33cb0d39..febc61a3 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    @@ -27,21 +27,21 @@
     as_map
     
     
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    template <typename Sequence>
     struct as_map;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    result_of::as_map<vector<
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index 0be22bb4..d523531b 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    @@ -27,21 +27,21 @@
     as_set
     
     
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    template <typename Sequence>
     struct as_set;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    result_of::as_set<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index 00b609c7..0458b21c 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    @@ -27,21 +27,21 @@
     as_vector
     
     
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    template <typename Sequence>
     struct as_vector;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    result_of::as_vector<list<char, int> >::type
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index e96dba39..164d3f2f 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -34,7 +34,7 @@
             These are the functions that you can use to generate various forms of Container from elemental values.
           

    - + Header
    #include <boost/fusion/container/generation.hpp>
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
    index 2d3614e3..87b070dc 100644
    --- a/doc/html/fusion/container/generation/functions/list_tie.html
    +++ b/doc/html/fusion/container/generation/functions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index ca646976..2d00fa9c 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -27,7 +27,7 @@
     make_cons
     
     
    - + Description

    @@ -36,7 +36,7 @@ and optional cdr (tail).

    - + Synopsis
    template <typename Car>
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -127,20 +127,20 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 232a62cf..f0f7f3ee 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -27,7 +27,7 @@ make_list
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 7f0a9af8..49ef963a 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -27,7 +27,7 @@ make_map
    - + Description

    @@ -35,7 +35,7 @@ from one or more key/data pairs.

    - + Synopsis
    template <
    @@ -55,7 +55,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,20 +143,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    make_map<int, double>('X', "Men")
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 42752f89..249634bc 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -27,7 +27,7 @@ make_set
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -117,20 +117,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    make_set(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index 8635ec4c..bdd98ba9 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -27,7 +27,7 @@ make_vector
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
    make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 89404baf..8809e712 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -27,14 +27,14 @@ map_tie
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 5ddcce7a..ee4db823 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -54,7 +54,7 @@
                 The vector_tie function creates
                 a vector
                 of type vector<int&, char&, double&>. The same result could be achieved
    -            with the call make_vector(ref(i), ref(c), ref(a)) [9].
    +            with the call make_vector(ref(i), ref(c), ref(a)) [9].
               

    A tie can be used to 'unpack' another tuple into @@ -70,7 +70,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -84,7 +84,7 @@



    -

    [9] +

    [9] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 28c96efd..6863c5d5 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -27,14 +27,14 @@ vector_tie
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    index 63475712..dddc38f2 100644
    --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    result_of::list_tie<int, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index ccef7021..065b4191 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    @@ -27,21 +27,21 @@
     make_cons
     
     
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct make_cons;
     
    - + Parameters
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    result_of::make_cons<char, result_of::make_cons<int>::type>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index 286baef3..78e16787 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
    @@ -27,14 +27,14 @@
     make_list
     
     
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_list<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index 4244b6e8..5d26f44e 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
    @@ -27,14 +27,14 @@
     make_map
     
     
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    template <
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -140,20 +140,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    result_of::make_map<int, double, char, double>::type
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index ca217d8e..11cb5daf 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -27,14 +27,14 @@ make_set
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    result_of::make_set<int, char, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    index 01eaa210..0cd53f42 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    @@ -27,14 +27,14 @@
     make_vector
     
     
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_vector<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index 3bb4078d..f79ee442 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -27,14 +27,14 @@
     map_tie
     
     
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -119,7 +119,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index 0f753273..928db86c 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -27,14 +27,14 @@
     vector_tie
     
     
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    result_of::vector_tie<int, double>::type
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index 64bb4774..75523d0f 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/list.html
    @@ -27,7 +27,7 @@
     list
     
     
    - + Description

    @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    #include <boost/fusion/container/list.hpp>
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -75,7 +75,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    • @@ -154,7 +154,7 @@
    - + Expression Semantics

    @@ -261,7 +261,7 @@

    - + Example
    list<int, float> l(12, 5.5f);
    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index ac9ade09..6b26bb22 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -27,7 +27,7 @@
     map
     
     
    - + Description

    @@ -40,7 +40,7 @@ (see Overloaded Functions).

    - + Header
    #include <boost/fusion/container/map.hpp>
    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -77,7 +77,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -122,7 +122,7 @@
    - + Model of
      @@ -157,7 +157,7 @@
    - + Expression Semantics

    @@ -241,7 +241,7 @@

    - + Example
    typedef map<
    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index e78179a4..3a7f81e3 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -27,7 +27,7 @@
     set
     
     
    - + Description

    @@ -39,7 +39,7 @@ Functions).

    - + Header
    #include <boost/fusion/container/set.hpp>
    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -76,7 +76,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -121,7 +121,7 @@
    - + Model of
      @@ -156,7 +156,7 @@
    - + Expression Semantics

    @@ -240,7 +240,7 @@

    - + Example
    typedef set<int, float> S;
    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index a2f5fb58..992eb12c 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -27,7 +27,7 @@
     vector
     
     
    - + Description

    @@ -39,7 +39,7 @@ efficient.

    - + Header
    #include <boost/fusion/container/vector.hpp>
    @@ -60,7 +60,7 @@
     #include <boost/fusion/include/vector50.hpp>
     
    - + Synopsis

    @@ -115,7 +115,7 @@

    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -160,7 +160,7 @@
    - + Model of
    • @@ -190,7 +190,7 @@
    - + Expression Semantics

    @@ -273,7 +273,7 @@

    - + Example
    vector<int, float> v(12, 5.5f);
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index a82c8b21..67a32feb 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -50,7 +50,7 @@
               
     
     
    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching
    @@ -121,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
    - + Designing a suitable iterator
    @@ -183,7 +183,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features
    @@ -323,7 +323,7 @@

    - + Implementing the remaining iterator functionality
    @@ -374,7 +374,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence
    @@ -430,7 +430,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative sequence
    @@ -494,7 +494,7 @@ are provided in the example code.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 49319da6..1675b9c0 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -27,7 +27,7 @@ Iterator Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     
    - + Usage

    @@ -57,7 +57,7 @@ type.

    -

    Table 1.103. Parameters

    +

    Table 1.103. Parameters

    @@ -106,7 +106,7 @@

    -

    Table 1.104. Key Expressions

    +

    Table 1.104. Key Expressions

    @@ -439,14 +439,14 @@

    - + Header
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 2dc362ef..51b03803 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -27,7 +27,7 @@ Sequence Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     
    - + Usage

    @@ -59,7 +59,7 @@ type.

    -

    Table 1.101. Parameters

    +

    Table 1.101. Parameters

    @@ -107,7 +107,7 @@

    -

    Table 1.102. Key Expressions

    +

    Table 1.102. Key Expressions

    @@ -244,14 +244,14 @@

    - + Include
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 9cb0d4f2..2bc12b36 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -63,13 +63,13 @@ through a function object interface.

    - + Header

    #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -103,7 +103,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index db1bcef7..70d06e7c 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -27,7 +27,7 @@ fused
    - + Description

    @@ -54,20 +54,20 @@ and boost::shared_ptr).

    - + Header
    #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -148,7 +148,7 @@
    - + Expression Semantics
    @@ -213,14 +213,14 @@
    - + Example
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index c3cef187..ae25966c 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -27,7 +27,7 @@ fused_function_object
    - + Description

    @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

    - + Header
    #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    template <class Function>
     class fused_function_object;
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
    @@ -139,7 +139,7 @@
    - + Expression Semantics
    @@ -204,7 +204,7 @@
    - + Example
    template<class SeqOfSeqs, class Func>
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 54b43a95..1c816df7 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -27,7 +27,7 @@ fused_procedure
    - + Description

    @@ -62,20 +62,20 @@ case is not implemented).

    - + Header
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -119,7 +119,7 @@
    - + Model of
    @@ -157,7 +157,7 @@
    - + Expression Semantics
    @@ -222,7 +222,7 @@
    - + Example
    template<class SequenceOfSequences, class Func>
    @@ -242,7 +242,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index 61939a19..5dad50a8 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/adapter/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index 8760d979..e3de5966 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -27,7 +27,7 @@ unfused

    - + Description

    @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

    - + Header
    #include <boost/fusion/functional/adapter/unfused.hpp>
     
    - + Synopsis
    template <class Function, bool AllowNullary = true>
     class unfused;
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
      @@ -174,7 +174,7 @@
    - + Expression Semantics
    @@ -239,7 +239,7 @@
    - + Example
    struct fused_incrementer
    @@ -266,7 +266,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index ad0cd71c..29b79854 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -27,7 +27,7 @@ unfused_typed
    - + Description

    @@ -66,20 +66,20 @@

    - + Header
    #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    template <class Function, class Sequence>
     class unfused_typed;
     
    - + Template parameters
    @@ -139,7 +139,7 @@
    - + Model of
    @@ -186,7 +186,7 @@
    - + Expression Semantics
    @@ -253,7 +253,7 @@
    - + Example
    struct add_assign // applies operator+=
    @@ -321,7 +321,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 8050c7b8..b645a477 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@ Callable Object
    - + Description

    @@ -36,7 +36,7 @@ of a function call operator.

    - + Models
      @@ -51,7 +51,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
    index 1c8b1e7a..f046aa66 100644
    --- a/doc/html/fusion/functional/concepts/def_callable.html
    +++ b/doc/html/fusion/functional/concepts/def_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -117,7 +117,7 @@
    - + Models
      @@ -130,7 +130,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index 60ff05ee..236c9503 100644
    --- a/doc/html/fusion/functional/concepts/poly.html
    +++ b/doc/html/fusion/functional/concepts/poly.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -36,7 +36,7 @@ Callable Object type.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -128,7 +128,7 @@
    - + Models
      @@ -143,7 +143,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index b329cd58..c19f57df 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -67,7 +67,7 @@
    - + Expression requirements
    @@ -114,7 +114,7 @@
    - + Models
      @@ -126,7 +126,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
    index 4bec9b60..23ff0086 100644
    --- a/doc/html/fusion/functional/generation/functions/mk_fused.html
    +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html
    @@ -27,7 +27,7 @@
     make_fused
     
     
    - + Description

    @@ -36,7 +36,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -44,7 +44,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    float sub(float a, float b) { return a - b; }
    @@ -125,7 +125,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 a26755ab..9d2747d8 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -27,7 +27,7 @@ make_fused_function_object
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    struct sub
    @@ -140,7 +140,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 00492065..6b07ca57 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -27,7 +27,7 @@ make_fused_procedure
    - + Description

    @@ -37,7 +37,7 @@ conversion applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    vector<int,int,int> v(1,2,3);
    @@ -121,7 +121,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index 77680f0b..c42d2ab8 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -27,7 +27,7 @@ make_unfused
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_unfused(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ Semantics: Returns a unfused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Example
    struct fused_incrementer
    @@ -137,7 +137,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 08019035..2206dea8 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -27,21 +27,21 @@ make_fused
    - + Description

    Returns the result type of make_fused.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 ba142d77..5098e924 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -27,21 +27,21 @@ make_fused_function_object
    - + Description

    Returns the result type of make_fused_function_object.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 a1addcdc..7d8b3682 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -27,21 +27,21 @@ make_fused_procedure
    - + Description

    Returns the result type of make_fused_procedure.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 66985cce..40fdfdb3 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -27,21 +27,21 @@ make_unfused
    - + Description

    Returns the result type of make_unfused.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 96d8f554..5044ce2a 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@ invoke
    - + Description

    @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -67,7 +67,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke.hpp>
     
    - + Example
    std::plus<int> add;
     assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index 7f694ce1..0859d392 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -27,7 +27,7 @@ invoke_function_object
    - + Description

    @@ -42,7 +42,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -60,7 +60,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -126,7 +126,7 @@
    - + Expression Semantics
    @@ -142,13 +142,13 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
    struct sub
    @@ -174,7 +174,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 e3a54fc2..778e731e 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -27,7 +27,7 @@ invoke_procedure
    - + Description

    @@ -51,7 +51,7 @@ isn't implemented).

    - + Synopsis
    template<
    @@ -69,7 +69,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -150,13 +150,13 @@ as arguments.

    - + Header
    #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    vector<int,int> v(1,2);
    @@ -165,7 +165,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 2c525613..9be51e43 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/invocation/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 35c40459..b55091e4 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@ invoke

    - + Description

    Returns the result type of invoke.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 1439f785..9f24915b 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -27,14 +27,14 @@ invoke_function_object
    - + Description

    Returns the result type of invoke_function_object.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 4738779a..ff7ec8a6 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -27,14 +27,14 @@ invoke_procedure
    - + Description

    Returns the result type of invoke_procedure.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 3b2495e8..be6ee81f 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -116,7 +116,7 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types [1]. In MPL, + wish to work solely on types [1]. In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from @@ -130,7 +130,7 @@



    -

    [1] +

    [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 9f5d642f..db5b1580 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -81,7 +81,7 @@ Sequence.

    - + Header

    #include <boost/fusion/iterator.hpp>
    diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html
    index 60b0d44a..f32247a5 100644
    --- a/doc/html/fusion/iterator/concepts/associative_iterator.html
    +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html
    @@ -28,7 +28,7 @@
             Iterator
     
    - + Description

    @@ -50,7 +50,7 @@

    - + Refinement of
    @@ -61,7 +61,7 @@ Access Iterator

    - + Expression requirements
    @@ -113,7 +113,7 @@
    - + Meta Expressions
    @@ -174,7 +174,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 7afc5873..ccbbd5c7 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -58,7 +58,7 @@

    - + Refinement of
    @@ -66,7 +66,7 @@ Forward Iterator

    - + Expression requirements
    @@ -173,7 +173,7 @@
    - + Meta Expressions
    @@ -208,7 +208,7 @@
    - + Expression Semantics
    @@ -248,7 +248,7 @@
    - + Invariants

    @@ -269,7 +269,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 5bc331b0..2b60cc2d 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Expression requirements
    @@ -237,7 +237,7 @@
    - + Meta Expressions
    @@ -348,7 +348,7 @@
    - + Expression Semantics
    @@ -474,7 +474,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 388e8086..1c319cdc 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -28,7 +28,7 @@ Access Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Refinement of
    @@ -68,7 +68,7 @@ Iterator

    - + Expression requirements
    @@ -175,7 +175,7 @@
    - + Meta Expressions
    @@ -238,7 +238,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index b92f109c..eb43ab25 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -27,14 +27,14 @@ advance
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i);
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -128,14 +128,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
    index 323d0940..f73f6cfa 100644
    --- a/doc/html/fusion/iterator/functions/advance_c.html
    +++ b/doc/html/fusion/iterator/functions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance_c<I, N>::type advance_c(I const& i);
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -108,7 +108,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
    index 8b589041..c7d98fa0 100644
    --- a/doc/html/fusion/iterator/functions/deref.html
    +++ b/doc/html/fusion/iterator/functions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -102,14 +102,14 @@ i.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
    index ae855d72..87c719e2 100644
    --- a/doc/html/fusion/iterator/functions/deref_data.html
    +++ b/doc/html/fusion/iterator/functions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ an associative iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref_data<I>::type deref(I const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

    - + Header
    #include <boost/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int&> > map;
    diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
    index 491d47be..2c712b0c 100644
    --- a/doc/html/fusion/iterator/functions/distance.html
    +++ b/doc/html/fusion/iterator/functions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ iterators i and j.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
    index 8881e040..3ef0fc0b 100644
    --- a/doc/html/fusion/iterator/functions/next.html
    +++ b/doc/html/fusion/iterator/functions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ next element after i.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
    index 985f9851..59a21c98 100644
    --- a/doc/html/fusion/iterator/functions/prior.html
    +++ b/doc/html/fusion/iterator/functions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ element prior to i.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,int> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
    index bc346fba..42294799 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance.html
    @@ -27,14 +27,14 @@
     advance
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
    index 757ddb53..7a8d5584 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
    index d5b62803..cb0cfdaf 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ an iterator of type I.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
    index f0c225f8..92a9480f 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ referenced by an associative iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

    - + Header
    #include <boosta/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > map;
    diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
    index cc8a6696..e67ae1bb 100644
    --- a/doc/html/fusion/iterator/metafunctions/distance.html
    +++ b/doc/html/fusion/iterator/metafunctions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -108,14 +108,14 @@ J.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
    index 06269b5b..595ae6bf 100644
    --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
    @@ -27,7 +27,7 @@
     equal_to
     
     
    - + Description

    @@ -36,7 +36,7 @@ and J are equal.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
    index 90b676fb..69a76fec 100644
    --- a/doc/html/fusion/iterator/metafunctions/key_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/key_of.html
    @@ -27,7 +27,7 @@
     key_of
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

    - + Header
    #include <boost/fusion/iterator/key_of.hpp>
     #include <boost/fusion/include/key_of.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
    index a8e7d9cb..1ccb75aa 100644
    --- a/doc/html/fusion/iterator/metafunctions/next.html
    +++ b/doc/html/fusion/iterator/metafunctions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ next element in the sequence after I.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
    index 30cf9449..13afd638 100644
    --- a/doc/html/fusion/iterator/metafunctions/prior.html
    +++ b/doc/html/fusion/iterator/metafunctions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ previous element in the sequence before I.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
    index 630fda5d..5a0f6c32 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
    @@ -27,14 +27,14 @@
     value_of
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ a sequence at iterator position I.

    - + Header
    #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    - + Example
    typedef vector<int,int&,const int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    index 874cf709..dabe24db 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    @@ -27,7 +27,7 @@
     value_of_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ by an associative iterator references.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -107,14 +107,14 @@ I.

    - + Header
    #include <boost/fusion/iterator/value_of_data.hpp>
     #include <boost/fusion/include/value_of_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
    index 78494607..8865d02e 100644
    --- a/doc/html/fusion/iterator/operator/operator_equality.html
    +++ b/doc/html/fusion/iterator/operator/operator_equality.html
    @@ -28,14 +28,14 @@
             ==
     
     
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,7 +104,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index 6dc8245d..d3b97c9b 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -28,14 +28,14 @@
             !=
     
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 5ce77123..2e81a0e9 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -28,14 +28,14 @@
             *
     
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index 2036055c..5faed22f 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     Notes
     
     

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -101,7 +101,7 @@

    - + Extensibility

    @@ -136,7 +136,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -157,7 +157,7 @@ Arrays:

    - Array arguments are deduced to reference to const types. For example [10]: + Array arguments are deduced to reference to const types. For example [10]:

    make_list("Donald", "Daisy")
     
    @@ -185,7 +185,7 @@
    list<void (*)(int)>
     

    - + boost::ref

    @@ -223,9 +223,240 @@ See Boost.Ref for details.

    +

    + + adt_attribute_proxy +

    +

    + To adapt arbitrary data types that do not allow direct access to their members, + but allow indirect access via expressions (such as invocations of get- and + set-methods), fusion's BOOST_FUSION_ADAPT_xxxADTxxx-family + (e.g. BOOST_FUSION_ADAPT_ADT) + may be used. To bypass the restriction of not having actual lvalues that represent + the elements of the fusion sequence, but rather a sequence of paired expressions + that access the elements, the actual return type of fusion's intrinsic sequence + access functions (at, at_c, at_key, deref, and deref_data) is a proxy type, an instance + of adt_attribute_proxy, that + encapsulates these expressions. +

    +

    + adt_attribute_proxy is defined + in the namespace boost::fusion::extension and has three template arguments: +

    +
    namespace boost { namespace fusion { namespace extension
    +{    
    +    template<
    +        typename Type
    +      , int Index
    +      , bool Const
    +    >
    +    struct adt_attribute_proxy;
    +}}}
    +
    +

    + When adapting a class type, adt_attribute_proxy + is specialized for every element of the adapted sequence, with Type being the class type that is adapted, + Index the 0-based indices of + the elements, and Const both + true and false. + The return type of fusion's intrinsic sequence access functions for the Nth + element of an adapted class type type_name + is adt_attribute_proxy<type_name, N, Const>, + with Const being true + for constant instances of type_name + and false for non-constant ones. +

    +
    +

    Notation

    +
    +
    type_name
    +

    + The type to be adapted, with M attributes +

    +
    inst
    +

    + Object of type type_name +

    +
    const_inst
    +

    + Object of type type_name const +

    +
    (attribute_typeN, attribute_const_typeN, + get_exprN, set_exprN)
    +

    + Attribute descriptor of the Nth attribute of type_name as passed to the adaption + macro, 0≤N<M +

    +
    proxy_typeN
    +

    + adt_attribute_proxy<type_name, N, false> with N + being an integral constant, 0≤N<M +

    +
    const_proxy_typeN
    +

    + adt_attribute_proxy<type_name, N, true> with N + being an integral constant, 0≤N<M +

    +
    proxyN
    +

    + Object of type proxy_typeN +

    +
    const_proxyN
    +

    + Object of type const_proxy_typeN +

    +
    +
    +

    + Expression Semantics +

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Semantics +

    +
    +

    + proxy_typeN(inst) +

    +
    +

    + Creates an instance of proxy_typeN + with underlying object inst +

    +
    +

    + const_proxy_typeN(const_inst) +

    +
    +

    + Creates an instance of const_proxy_typeN + with underlying object const_inst +

    +
    +

    + proxy_typeN::type +

    +
    +

    + Another name for attribute_typeN +

    +
    +

    + const_proxy_typeN::type +

    +
    +

    + Another name for const_attribute_typeN +

    +
    +

    + proxyN=t +

    +
    +

    + Invokes set_exprN, with + t being an arbitrary + object. set_exprN may access + the variables named obj + of type type_name&, which represent the corresponding + instance of type_name, + and val of an arbitrary + const-qualified reference template type parameter Val, + which represents t. +

    +
    +

    + proxyN.get() +

    +
    +

    + Invokes get_exprN and forwards + its return value. get_exprN + may access the variable named obj + of type type_name& which represents the underlying + instance of type_name. + attribute_typeN may specify + the type that get_exprN denotes + to. +

    +
    +

    + const_proxyN.get() +

    +
    +

    + Invokes get_exprN and forwards + its return value. get_exprN + may access the variable named obj + of type type_name const& + which represents the underlying instance of type_name. + attribute_const_typeN may + specify the type that get_exprN + denotes to. +

    +
    +

    + Additionally, proxy_typeN and const_proxy_typeN + are copy constructible, copy assignable and implicitly convertible to proxy_typeN::type + or const_proxy_typeN::type. +

    +
    + + + + + +
    [Tip]Tip

    + To avoid the pitfalls of the proxy type, an arbitrary class type may also + be adapted directly using fusion's intrinsic + extension mechanism. +



    -

    [10] +

    [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 16c3c787..d458e277 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -35,7 +35,7 @@ The library is organized in three layers:

    - + Layers

    @@ -60,7 +60,7 @@ against.

    - + Directory

      @@ -191,7 +191,7 @@

    - + Example

    @@ -206,11 +206,11 @@

    The first includes all containers The second includes only list - [4]. + [4].



    -

    [4] +

    [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 74d486c3..8c6f7542 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -33,7 +33,7 @@ --Niklaus Wirth

    - + Description

    @@ -51,7 +51,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -77,7 +77,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -85,7 +85,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -188,7 +188,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index a32a60fa..59dd889f 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -34,13 +34,13 @@

    For starters, we shall include all of Fusion's Sequence(s) - [2]: + [2]:

    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     

    - Let's begin with a vector [3]: + Let's begin with a vector [3]:

    vector<int, char, std::string> stuff(1, 'x', "howdy");
     int i = at_c<0>(stuff);
    @@ -56,7 +56,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

    @@ -111,7 +111,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -143,7 +143,7 @@ Easy, right?

    - + Associative tuples

    @@ -215,7 +215,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -226,12 +226,12 @@



    -

    [2] +

    [2] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [3] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 5a962f02..5b0a266d 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    #include <boost/fusion/sequence.hpp>
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 2cfed414..9eac12a0 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -40,7 +40,7 @@
             Fusion Sequences are organized into a hierarchy of concepts.
           

    - + Traversal

    @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 4e460b28..039324a6 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -28,7 +28,7 @@ Sequence

    - + Description

    @@ -64,7 +64,7 @@

    - + Valid Expressions
    @@ -169,7 +169,7 @@
    - + Result Type Expressions
    @@ -243,7 +243,7 @@

    - + Expression Semantics
    @@ -298,7 +298,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 257e6db3..cbd36573 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -37,7 +37,7 @@ Iterator.

    - + Refinement of
    @@ -66,7 +66,7 @@
    - + Valid Expressions
    @@ -192,7 +192,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Expression Semantics
    @@ -293,7 +293,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 7924c59a..76b481f3 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -60,7 +60,7 @@

    - + Valid Expressions
    @@ -225,7 +225,7 @@
    - + Result Type Expressions
    @@ -310,7 +310,7 @@
    - + Expression Semantics
    @@ -398,7 +398,7 @@
    - + Invariants

    @@ -425,7 +425,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 07a72e70..a9787d39 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -28,7 +28,7 @@ Access Sequence
    - + Description

    @@ -38,7 +38,7 @@ sequence elements.

    - + Refinement of
    @@ -73,7 +73,7 @@
    - + Valid Expressions
    @@ -199,7 +199,7 @@
    - + Result Type Expressions
    @@ -285,7 +285,7 @@

    - + Expression Semantics
    @@ -325,7 +325,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 4513e96f..08e41375 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -36,10 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence[5]. + repertoire. They need to be implemented for each Fusion Sequence[5].

      - + Header
      #include <boost/fusion/sequence/intrinsic.hpp>
      @@ -47,7 +47,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/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index eef0cf59..0ec6edeb 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -27,14 +27,14 @@ at
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <typename N, typename Sequence>
    @@ -46,7 +46,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index df159250..cedd530a 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    @@ -27,14 +27,14 @@
     at_c
     
     
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <int N, typename Sequence>
    @@ -46,7 +46,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index 277a8947..04eb2a3b 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    @@ -27,14 +27,14 @@
     at_key
     
     
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -46,7 +46,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ with Key.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index ef171a74..9a21f45a 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
    @@ -27,14 +27,14 @@
     back
     
     
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index 225cda8d..9bb9f0b8 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to the first element in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index d06016ec..20476a4c 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    @@ -27,7 +27,7 @@
     empty
     
     
    - + Description

    @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    template <typename Sequence>
    @@ -44,7 +44,7 @@
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index a5c87e0d..2c98e2f5 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to one element past the end of the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index 7c3c40ab..ecb8471e 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index 5570d129..6410a690 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    @@ -27,7 +27,7 @@
     has_key
     
     
    - + Description

    @@ -37,7 +37,7 @@ to false.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index f034ec6c..dbbde44d 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
    @@ -27,7 +27,7 @@
     size
     
     
    - + Description

    @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -43,7 +43,7 @@
     size(Sequence const& seq);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index 442b0689..38773e19 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -27,21 +27,21 @@
     swap
     
     
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -87,7 +87,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    vector<int, std::string> v1(1, "hello"), v2(2, "world");
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    index da795b41..90d2ec47 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    @@ -27,14 +27,14 @@
     at
     
     
    - + Description

    - Returns the result type of at[6]. + Returns the result type of at[6].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ using at to access the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -140,7 +140,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 to diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index b1ed0a4a..33c12afe 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -27,14 +27,14 @@ at_c

    - + Description

    - Returns the result type of at_c[7]. + Returns the result type of at_c[7].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ using at_c to access the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -139,7 +139,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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index ea072854..8dc78609 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -27,14 +27,14 @@ at_key

    - + Description

    - Returns the result type of at_key[8]. + Returns the result type of at_key[8].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -126,14 +126,14 @@ Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    @@ -141,7 +141,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 want diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index b52591b8..a6ee7025 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -27,14 +27,14 @@ back

    - + Description

    Returns the result type of back.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index 980b70ef..8ee31412 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns the result type of begin.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ to the first element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index 35fd6593..e26ee5f5 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    @@ -27,14 +27,14 @@
     empty
     
     
    - + Description

    Returns the result type of empty.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    typedef vector<> empty_vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index e58acebd..522e8875 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns the result type of end.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ one past the end of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index 4022a431..ec5bd923 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the result type of front.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index 8fe241a9..d06069e4 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    @@ -27,14 +27,14 @@
     has_key
     
     
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index e6c36a31..addbf588 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    @@ -27,14 +27,14 @@
     size
     
     
    - + Description

    Returns the result type of size.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index 89b7125e..a748d8a5 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -27,14 +27,14 @@
     swap
     
     
    - + Description

    Returns the return type of swap.

    - + Synopsis
    template<typename Seq1, typename Seq2>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ Semantics: Always returns void.

    - + Header
    #include <boost/fusion/sequence/intrinsic/swap.hpp>
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    index 3da1cef5..78f41976 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    @@ -27,14 +27,14 @@
     value_at
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index 1878e1eb..599f59f8 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    @@ -27,14 +27,14 @@
     value_at_c
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index 4ccdf18f..0432f94a 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    @@ -27,14 +27,14 @@
     value_at_key
     
     
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     #include <boost/fusion/include/value_at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
    index 8b499d6f..eae77dd2 100644
    --- a/doc/html/fusion/sequence/operator/comparison.html
    +++ b/doc/html/fusion/sequence/operator/comparison.html
    @@ -49,7 +49,7 @@
               only until the result is clear.
             

    - + Header
    #include <boost/fusion/sequence/comparison.hpp>
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index 7122c8bd..28dffa8c 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -27,14 +27,14 @@
     equal
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -42,7 +42,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -123,14 +123,14 @@ true.

    - + Header
    #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    vector<int, char> v1(5, 'a');
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index cddb7b50..f2d07d4d 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns b < a.

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index 013e0e72..1c3c753e 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

    - + Header
    #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index 3a0c83ca..656ccdb9 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ and b.

    - + Header
    #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index f1d3fbb2..36ba19cb 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index 46deebd6..5a339c77 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    @@ -31,7 +31,7 @@
                 Compare two sequences for inequality.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ Returns !(a == b).

    - + Header
    #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    vector<int, char> v3(5, 'b');
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 85b541ed..e73ba947 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -113,7 +113,7 @@
               representation may not be unambiguously parseable.
             

    - + Header
    #include <boost/fusion/sequence/io.hpp>
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index 423aa69d..5a8cc2c1 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -27,7 +27,7 @@
     in
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename IStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    vector<int, std::string, char> v;
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index cdc07453..fdf1ab71 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/i_o/out.html
    @@ -27,7 +27,7 @@
     out
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename OStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    std::cout << make_vector(123, "Hello", 'x') << std::endl;
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index 072df802..798bff26 100644
    --- a/doc/html/fusion/support/category_of.html
    +++ b/doc/html/fusion/support/category_of.html
    @@ -27,7 +27,7 @@
     category_of
     
     
    - + Description

    @@ -37,7 +37,7 @@ Sequence Concepts).

    - + Synopsis
    namespace traits
    @@ -50,7 +50,7 @@
     }
     
    - + Parameters
    @@ -95,7 +95,7 @@
    - + Expression Semantics
    @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

    - + Header
    #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    - + Example
    using boost::is_base_of;
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index b383ee1c..86c4f87a 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -27,7 +27,7 @@
     deduce
     
     
    - + Description

    @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

    - + Header
    #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    - + Synopsis
    namespace traits
    @@ -60,7 +60,7 @@
     }
     
    - + Example
    template <typename T>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 07f95781..25db3661 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -27,7 +27,7 @@ deduce_sequence
    - + Description

    @@ -38,14 +38,14 @@ original type as its argument.

    - + Header
    #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    - + Synopsis
    namespace traits
    @@ -58,7 +58,7 @@
     }
     
    - + Example
    template <class Seq>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 9fed8837..5b561b1c 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -27,7 +27,7 @@ is_sequence
    - + Description

    @@ -38,7 +38,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -51,7 +51,7 @@
     }
     
    - + Parameters
    @@ -96,7 +96,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ otherwise.

    - + Header
    #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index 43a617e2..ee041332 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -27,7 +27,7 @@
     is_view
     
     
    - + Description

    @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::is_view<T>::type c;
    @@ -115,14 +115,14 @@
             otherwise.
           

    - + Header
    #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index 4d833011..358d8702 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -27,7 +27,7 @@
     pair
     
     
    - + Description

    @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

    - + Synopsis
    template <typename First, typename Second>
    @@ -60,7 +60,7 @@
     make_pair(Second const &);
     
    - + Template parameters
    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -317,14 +317,14 @@
    - + Header
    #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    - + Example
    pair<int, char> p('X');
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index cf9f336b..8d813078 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -27,7 +27,7 @@
     tag_of
     
     
    - + Description

    @@ -41,7 +41,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::tag_of<T>::type tag;
    @@ -112,14 +112,14 @@
             with T.
           

    - + Header
    #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     
    - + Example
    typedef traits::tag_of<list<> >::type tag1;
    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
    index 5e0dd624..c2221257 100644
    --- a/doc/html/fusion/tuple/class_template_tuple.html
    +++ b/doc/html/fusion/tuple/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis
    template<
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 09a05711..64d398fc 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     Construction
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 2baaf925..82f2781f 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -28,7 +28,7 @@ access
    - + Description

    @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    template<int I, T>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index 42b1c566..80a45250 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    @@ -28,7 +28,7 @@
             operators
     
     
    - + Description

    @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 94afad73..5b28eb95 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -28,7 +28,7 @@ creation functions
    - + Description

    @@ -38,7 +38,7 @@ functions are described in this section.

    - + Specification
    template<typename T1, typename T2, ..., typename TN>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index 1dc2d0ef..c272a47c 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -28,7 +28,7 @@
             helper classes
     
     
    - + Description

    @@ -37,7 +37,7 @@ tuple size, and the element types.

    - + Specification
    tuple_size<T>::value
    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index fd16da9e..e60c1ae3 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/pairs.html
    @@ -27,7 +27,7 @@
     Pairs
     
     
    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification
    tuple_size<std::pair<T1, T2> >::value
    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
    index 0b595059..9e1e77f9 100644
    --- a/doc/html/fusion/view.html
    +++ b/doc/html/fusion/view.html
    @@ -47,7 +47,7 @@
           to copy and be passed around by value.
         

    - + Header

    #include <boost/fusion/view.hpp>
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index 2abdc828..7315a836 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -27,7 +27,7 @@
     filter_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header
    #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Pred>
     struct filter_view;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -144,7 +144,7 @@
    - + Expression Semantics

    @@ -214,7 +214,7 @@

    - + Example
    using boost::mpl::_;
    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index b375b54a..76077a9e 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -27,7 +27,7 @@
     iterator_range
     
     
    - + Description

    @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
    #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    - + Synopsis
    template <typename First, typename Last>
     struct iterator_range;
     
    - + Template parameters
    @@ -107,7 +107,7 @@
    - + Model of
      @@ -149,7 +149,7 @@
    - + Expression Semantics
    @@ -223,7 +223,7 @@
    - + Example
    char const* s = "Ruby";
    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 0d37dc57..1529a87a 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -27,7 +27,7 @@
     joint_view
     
     
    - + Description

    @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

    - + Header
    #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     
    - + Synopsis
    template <typename Sequence1, typename Sequence2>
     struct joint_view;
     
    - + Template parameters
    @@ -109,7 +109,7 @@
    - + Model of
      @@ -146,7 +146,7 @@
    - + Expression Semantics

    @@ -218,7 +218,7 @@

    - + Example
    vector<int, char> v1(3, 'x');
    diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
    index c15184bd..be423805 100644
    --- a/doc/html/fusion/view/nview.html
    +++ b/doc/html/fusion/view/nview.html
    @@ -27,7 +27,7 @@
     nview
     
     
    - + Description

    @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

    - + Header
    #include <boost/fusion/view/nview.hpp>
     #include <boost/fusion/include/nview.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Indicies>
    @@ -56,7 +56,7 @@
     as_nview(Sequence& s);
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -235,7 +235,7 @@ of references to the elements of the original Fusion Sequence

    - + Example
    typedef vector<int, char, double> vec;
    diff --git a/doc/html/fusion/view/repetitive_view.html b/doc/html/fusion/view/repetitive_view.html
    index 804e431c..b2c23e75 100644
    --- a/doc/html/fusion/view/repetitive_view.html
    +++ b/doc/html/fusion/view/repetitive_view.html
    @@ -27,7 +27,7 @@
     repetitive_view
     
     
    - + Description

    @@ -40,21 +40,21 @@ is not.

    - + Header
    #include <boost/fusion/view/repetitive_view.hpp>
     #include <boost/fusion/include/repetitive_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct repetitive_view;
     
    - + Template parameters
    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -228,7 +228,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Example
    typedef vector<int, char, double> vec1;
    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index 5665b2ca..359f86e7 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -32,21 +32,21 @@
             element will be its first.
           

    - + Header
    #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct reverse_view;
     
    - + Template parameters
    @@ -89,7 +89,7 @@
    - + Model of
      @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -199,7 +199,7 @@
    - + Example
    typedef vector<int, short, double> vector_type;
    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index 91d5349b..61bcbeb2 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -31,21 +31,21 @@
             a value as a single element sequence.
           

    - + Header
    #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     
    - + Synopsis
    template <typename T>
     struct single_view;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
    - + Model of
    • @@ -111,7 +111,7 @@
    - + Expression Semantics

    @@ -182,7 +182,7 @@

    - + Example
    single_view<int> view(3);
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 2f19872d..6537f02d 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -36,14 +36,14 @@
             Traversal Concept) of its underlying sequence or sequences.
           

    - + Header
    #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     
    - + Synopsis

    @@ -59,7 +59,7 @@ struct transform_view;

    - + Template parameters
    @@ -169,7 +169,7 @@
    - + Model of
    • @@ -224,7 +224,7 @@
    - + Expression Semantics
    @@ -319,7 +319,7 @@
    - + Example
    struct square
    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index c66bfd25..2bba292c 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -27,7 +27,7 @@
     zip_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ to the component _sequence_s.

    - + Header
    #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     
    - + Synopsis
    template <typename Sequences>
     struct zip_view;
     
    - + Template parameters
    @@ -95,7 +95,7 @@
    - + Model of
    • @@ -124,7 +124,7 @@
    - + Expression Semantics

    @@ -195,7 +195,7 @@

    - + Example
    typedef vector<int,int> vec1;
    diff --git a/doc/html/index.html b/doc/html/index.html
    index f4db3640..9d5b0631 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -34,7 +34,7 @@
     
    - +

    Last revised: August 27, 2010 at 20:23:40 GMT

    Last revised: October 07, 2010 at 20:04:30 GMT


    diff --git a/doc/notes.qbk b/doc/notes.qbk index e26eee6f..f8255733 100644 --- a/doc/notes.qbk +++ b/doc/notes.qbk @@ -1,5 +1,6 @@ [/============================================================================== Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -149,5 +150,79 @@ For example: See __boost_ref__ for details. +[heading adt_attribute_proxy] + +To adapt arbitrary data types that do not allow direct access to their members, +but allow indirect access via expressions (such as invocations of get- and +set-methods), fusion's [^BOOST\_FUSION\_ADAPT\_['xxx]ADT['xxx]]-family (e.g. +__adapt_adt__) may be used. +To bypass the restriction of not having actual lvalues that +represent the elements of the fusion sequence, but rather a sequence of paired +expressions that access the elements, the actual return type of fusion's +intrinsic sequence access functions (__at__, __at_c__, __at_key__, __deref__, +and __deref_data__) is a proxy type, an instance of +`adt_attribute_proxy`, that encapsulates these expressions. + +`adt_attribute_proxy` is defined in the namespace `boost::fusion::extension` and +has three template arguments: + + namespace boost { namespace fusion { namespace extension + { + template< + typename Type + , int Index + , bool Const + > + struct adt_attribute_proxy; + }}} + +When adapting a class type, `adt_attribute_proxy` is specialized for every +element of the adapted sequence, with `Type` being the class type that is +adapted, `Index` the 0-based indices of the elements, and `Const` both `true` +and `false`. The return type of fusion's intrinsic sequence access functions +for the ['N]th element of an adapted class type `type_name` is +[^adt_attribute_proxy], with [^['Const]] being `true` +for constant instances of `type_name` and `false` for non-constant ones. + +[variablelist Notation + [[`type_name`] + [The type to be adapted, with M attributes]] + [[`inst`] + [Object of type `type_name`]] + [[`const_inst`] + [Object of type `type_name const`]] + [[[^(attribute_type['N], attribute_const_type['N], get_expr['N], set_expr['N])]] + [Attribute descriptor of the ['N]th attribute of `type_name` as passed to the adaption macro, 0\u2264['N]] with ['N] being an integral constant, 0\u2264['N]] with ['N] being an integral constant, 0\u2264['N]::type>::type + boost::remove_const::type>::type #define BOOST_FUSION_ADAPT_ADT_C_BASE( \ TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,ATTRIBUTE,ATTRIBUTE_TUPEL_SIZE) \ @@ -38,11 +38,11 @@ , I \ > \ { \ - template \ + template \ static void \ boost_fusion_adapt_adt_impl_set( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj, \ - Arg const& val) \ + Val const& val) \ { \ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 3, ATTRIBUTE); \ } \ @@ -75,8 +75,8 @@ \ explicit \ adt_attribute_proxy( \ - BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const*const o) \ - : obj(o) \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& o) \ + : obj(&o) \ {} \ \ type get() const \ @@ -108,13 +108,13 @@ \ explicit \ adt_attribute_proxy( \ - BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)*const o) \ - : obj(o) \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& o) \ + : obj(&o) \ {} \ \ - template \ + template \ adt_attribute_proxy& \ - operator=(Arg const& val) \ + operator=(Val const& val) \ { \ access::adt_attribute_access< \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ @@ -173,7 +173,7 @@ static type \ call(Seq& obj) \ { \ - return type(&obj); \ + return type(obj); \ } \ }; \ }; diff --git a/test/Jamfile b/test/Jamfile index 302d65b7..4827bbaa 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -124,6 +124,7 @@ import testing ; [ run sequence/adapt_struct.cpp : : : : ] [ run sequence/adapt_tpl_adt.cpp : : : : ] [ run sequence/adapt_tpl_struct.cpp : : : : ] + [ run sequence/adt_attribute_proxy.cpp : : : : ] [ run sequence/define_struct.cpp : : : : ] [ run sequence/define_assoc_struct.cpp : : : : ] [ run sequence/define_tpl_struct.cpp : : : : ] diff --git a/test/sequence/adapt_tpl_adt.cpp b/test/sequence/adapt_tpl_adt.cpp index e6981ddf..babb3370 100644 --- a/test/sequence/adapt_tpl_adt.cpp +++ b/test/sequence/adapt_tpl_adt.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2010 Christopher Schmidt Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/sequence/adapt_tpl_struct.cpp b/test/sequence/adapt_tpl_struct.cpp index 0218fbae..7db3bd8a 100644 --- a/test/sequence/adapt_tpl_struct.cpp +++ b/test/sequence/adapt_tpl_struct.cpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2010 Christopher Schmidt Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/sequence/adt_attribute_proxy.cpp b/test/sequence/adt_attribute_proxy.cpp new file mode 100644 index 00000000..4535bb92 --- /dev/null +++ b/test/sequence/adt_attribute_proxy.cpp @@ -0,0 +1,188 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include + +namespace fusion=boost::fusion; + +template +struct employee +{ +private: + Name name; + Age age; + +public: + template + void + set_name(OtherName const& n) + { + name=n; + } + + template + void + set_age(OtherAge const& a) + { + age=a; + } + + Name& get_name() + { + return name; + } + + Name const& get_name()const + { + return name; + } + + Age& get_age() + { + return age; + } + + Age const& get_age()const + { + return age; + } +}; + +namespace keys +{ + struct name; + struct age; +} + +BOOST_FUSION_ADAPT_ASSOC_TPL_ADT( + (Name)(Age), + (employee) (Name)(Age), + (Name&, Name const&, obj.get_name(), obj.template set_name(val), keys::name) + (Age&, Age const&, obj.get_age(), obj.template set_age(val), keys::age)) + +int main() +{ + typedef employee et; + typedef et const etc; + et e; + etc& ec=e; + + fusion::at_key(e)="marshall mathers"; + fusion::at_key(e)=37; + + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::value_at_key::type, + std::string + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::value_at_key::type, + fusion::result_of::value_at_c::type + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::value_at_key::type, + int + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::value_at_key::type, + fusion::result_of::value_at_c::type + >)); + + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::extension::adt_attribute_proxy + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::extension::adt_attribute_proxy + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::result_of::front::type + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::result_of::back::type + >)); + + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::extension::adt_attribute_proxy + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::extension::adt_attribute_proxy + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::result_of::front::type + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::result_of::at_key::type, + fusion::result_of::back::type + >)); + + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::extension::adt_attribute_proxy::type, + std::string& + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::extension::adt_attribute_proxy::type, + std::string const& + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::extension::adt_attribute_proxy::type, + int& + >)); + BOOST_MPL_ASSERT(( + boost::is_same< + fusion::extension::adt_attribute_proxy::type, + int const& + >)); + + { + std::string& name=fusion::at_key(e); + int& age=fusion::at_key(e); + BOOST_TEST(name=="marshall mathers"); + BOOST_TEST(age==37); + BOOST_TEST(fusion::at_key(e).get()=="marshall mathers"); + BOOST_TEST(fusion::at_key(e).get()==37); + BOOST_TEST(fusion::front(e).get()=="marshall mathers"); + BOOST_TEST(fusion::back(e).get()==37); + } + + { + std::string const& name=fusion::at_key(ec); + int const& age=fusion::at_key(ec); + BOOST_TEST(name=="marshall mathers"); + BOOST_TEST(age==37); + BOOST_TEST(fusion::at_key(ec).get()=="marshall mathers"); + BOOST_TEST(fusion::at_key(ec).get()==37); + BOOST_TEST(fusion::front(ec).get()=="marshall mathers"); + BOOST_TEST(fusion::back(ec).get()==37); + } +} From 7aa4e2cbdad3132ce23705d5a252914c7cfe3038 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sun, 10 Oct 2010 20:57:01 +0000 Subject: [PATCH 43/82] Fusion: merge from trunk - fixed minor doc typos [SVN r65895] --- doc/adapted.qbk | 16 ++++++++-------- doc/fusion.qbk | 1 - doc/html/fusion/adapted.html | 2 +- doc/html/fusion/adapted/adapt_adt.html | 14 +++++++------- doc/html/fusion/adapted/adapt_assoc.html | 10 +++++----- doc/html/fusion/adapted/adapt_assoc_adt.html | 16 ++++++++-------- .../adapted/adapt_assoc_struct_named.html | 10 +++++----- .../fusion/adapted/adapt_assoc_tpl_adt.html | 17 +++++++++-------- .../adapted/adapt_assoc_tpl_struct.html | 10 +++++----- doc/html/fusion/adapted/adapt_struct.html | 10 +++++----- .../fusion/adapted/adapt_struct_named.html | 10 +++++----- doc/html/fusion/adapted/adapt_tpl_adt.html | 15 ++++++++------- doc/html/fusion/adapted/adapt_tpl_struct.html | 10 +++++----- doc/html/fusion/adapted/array.html | 6 +++--- doc/html/fusion/adapted/boost__array.html | 8 ++++---- doc/html/fusion/adapted/boost__tuple.html | 8 ++++---- .../fusion/adapted/define_assoc_struct.html | 10 +++++----- .../adapted/define_assoc_tpl_struct.html | 10 +++++----- doc/html/fusion/adapted/define_struct.html | 8 ++++---- .../fusion/adapted/define_tpl_struct.html | 10 +++++----- doc/html/fusion/adapted/mpl_sequence.html | 8 ++++---- doc/html/fusion/adapted/std__pair.html | 8 ++++---- doc/html/fusion/algorithm.html | 6 +++--- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 +++++++------- .../algorithm/iteration/functions/fold.html | 14 +++++++------- .../iteration/functions/for_each.html | 14 +++++++------- .../iteration/functions/iter_fold.html | 14 +++++++------- .../iteration/functions/reverse_fold.html | 14 +++++++------- .../functions/reverse_iter_fold.html | 14 +++++++------- .../iteration/metafunctions/accumulate.html | 12 ++++++------ .../iteration/metafunctions/fold.html | 12 ++++++------ .../iteration/metafunctions/for_each.html | 12 ++++++------ .../iteration/metafunctions/iter_fold.html | 12 ++++++------ .../iteration/metafunctions/reverse_fold.html | 12 ++++++------ .../metafunctions/reverse_iter_fold.html | 12 ++++++------ doc/html/fusion/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 +++++++------- .../fusion/algorithm/query/functions/any.html | 14 +++++++------- .../algorithm/query/functions/count.html | 14 +++++++------- .../algorithm/query/functions/count_if.html | 14 +++++++------- .../algorithm/query/functions/find.html | 14 +++++++------- .../algorithm/query/functions/find_if.html | 12 ++++++------ .../algorithm/query/functions/none.html | 14 +++++++------- .../algorithm/query/metafunctions/all.html | 12 ++++++------ .../algorithm/query/metafunctions/any.html | 12 ++++++------ .../algorithm/query/metafunctions/count.html | 12 ++++++------ .../query/metafunctions/count_if.html | 12 ++++++------ .../algorithm/query/metafunctions/find.html | 12 ++++++------ .../query/metafunctions/find_if.html | 12 ++++++------ .../algorithm/query/metafunctions/none.html | 12 ++++++------ doc/html/fusion/algorithm/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 | 18 +++++++++--------- .../transformation/metafunctions/zip.html | 10 +++++----- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 +++++++------- doc/html/fusion/container/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/container/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 | 14 +++++++------- .../generation/functions/make_set.html | 14 +++++++------- .../generation/functions/make_vector.html | 14 +++++++------- .../generation/functions/map_tie.html | 12 ++++++------ .../container/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 | 14 +++++++------- .../generation/metafunctions/make_set.html | 12 ++++++------ .../generation/metafunctions/make_vector.html | 12 ++++++------ .../generation/metafunctions/map_tie.html | 12 ++++++------ .../generation/metafunctions/vector_tie.html | 12 ++++++------ doc/html/fusion/container/list.html | 14 +++++++------- doc/html/fusion/container/map.html | 14 +++++++------- doc/html/fusion/container/set.html | 14 +++++++------- doc/html/fusion/container/vector.html | 14 +++++++------- doc/html/fusion/extension/ext_full.html | 19 ++++++++++--------- .../fusion/extension/iterator_facade.html | 14 +++++++------- .../fusion/extension/sequence_facade.html | 14 +++++++------- doc/html/fusion/functional.html | 8 ++++---- .../fusion/functional/adapters/fused.html | 16 ++++++++-------- .../adapters/fused_function_object.html | 16 ++++++++-------- .../functional/adapters/fused_procedure.html | 16 ++++++++-------- .../fusion/functional/adapters/limits.html | 4 ++-- .../fusion/functional/adapters/unfused.html | 16 ++++++++-------- .../functional/adapters/unfused_typed.html | 16 ++++++++-------- .../fusion/functional/concepts/callable.html | 6 +++--- .../functional/concepts/def_callable.html | 10 +++++----- doc/html/fusion/functional/concepts/poly.html | 10 +++++----- .../functional/concepts/reg_callable.html | 10 +++++----- .../generation/functions/mk_fused.html | 14 +++++++------- .../generation/functions/mk_fused_fobj.html | 14 +++++++------- .../generation/functions/mk_fused_proc.html | 14 +++++++------- .../generation/functions/mk_unfused.html | 14 +++++++------- .../generation/metafunctions/mk_fused.html | 8 ++++---- .../metafunctions/mk_fused_fobj.html | 8 ++++---- .../metafunctions/mk_fused_proc.html | 8 ++++---- .../generation/metafunctions/mk_unfused.html | 8 ++++---- .../invocation/functions/invoke.html | 14 +++++++------- .../invocation/functions/invoke_fobj.html | 14 +++++++------- .../invocation/functions/invoke_proc.html | 14 +++++++------- .../fusion/functional/invocation/limits.html | 4 ++-- .../invocation/metafunctions/invoke.html | 6 +++--- .../invocation/metafunctions/invoke_fobj.html | 6 +++--- .../invocation/metafunctions/invoke_proc.html | 6 +++--- doc/html/fusion/introduction.html | 4 ++-- doc/html/fusion/iterator.html | 2 +- .../concepts/associative_iterator.html | 10 +++++----- .../concepts/bidirectional_iterator.html | 14 +++++++------- .../iterator/concepts/forward_iterator.html | 12 ++++++------ .../concepts/random_access_iterator.html | 10 +++++----- .../fusion/iterator/functions/advance.html | 12 ++++++------ .../fusion/iterator/functions/advance_c.html | 12 ++++++------ doc/html/fusion/iterator/functions/deref.html | 12 ++++++------ .../fusion/iterator/functions/deref_data.html | 12 ++++++------ .../fusion/iterator/functions/distance.html | 12 ++++++------ doc/html/fusion/iterator/functions/next.html | 12 ++++++------ doc/html/fusion/iterator/functions/prior.html | 12 ++++++------ .../iterator/metafunctions/advance.html | 12 ++++++------ .../iterator/metafunctions/advance_c.html | 12 ++++++------ .../fusion/iterator/metafunctions/deref.html | 12 ++++++------ .../iterator/metafunctions/deref_data.html | 12 ++++++------ .../iterator/metafunctions/distance.html | 12 ++++++------ .../iterator/metafunctions/equal_to.html | 12 ++++++------ .../fusion/iterator/metafunctions/key_of.html | 12 ++++++------ .../fusion/iterator/metafunctions/next.html | 12 ++++++------ .../fusion/iterator/metafunctions/prior.html | 12 ++++++------ .../iterator/metafunctions/value_of.html | 12 ++++++------ .../iterator/metafunctions/value_of_data.html | 12 ++++++------ .../iterator/operator/operator_equality.html | 10 +++++----- .../operator/operator_inequality.html | 10 +++++----- .../operator/operator_unary_star.html | 12 ++++++------ doc/html/fusion/notes.html | 18 +++++++++--------- doc/html/fusion/organization.html | 10 +++++----- doc/html/fusion/preface.html | 10 +++++----- doc/html/fusion/quick_start.html | 16 ++++++++-------- doc/html/fusion/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 ++-- .../concepts/associative_sequence.html | 10 +++++----- .../concepts/bidirectional_sequence.html | 12 ++++++------ .../sequence/concepts/forward_sequence.html | 12 ++++++------ .../concepts/random_access_sequence.html | 12 ++++++------ doc/html/fusion/sequence/intrinsic.html | 6 +++--- .../sequence/intrinsic/functions/at.html | 12 ++++++------ .../sequence/intrinsic/functions/at_c.html | 12 ++++++------ .../sequence/intrinsic/functions/at_key.html | 12 ++++++------ .../sequence/intrinsic/functions/back.html | 12 ++++++------ .../sequence/intrinsic/functions/begin.html | 12 ++++++------ .../sequence/intrinsic/functions/empty.html | 12 ++++++------ .../sequence/intrinsic/functions/end.html | 12 ++++++------ .../sequence/intrinsic/functions/front.html | 12 ++++++------ .../sequence/intrinsic/functions/has_key.html | 12 ++++++------ .../sequence/intrinsic/functions/size.html | 12 ++++++------ .../sequence/intrinsic/functions/swap.html | 10 +++++----- .../sequence/intrinsic/metafunctions/at.html | 16 ++++++++-------- .../intrinsic/metafunctions/at_c.html | 16 ++++++++-------- .../intrinsic/metafunctions/at_key.html | 16 ++++++++-------- .../intrinsic/metafunctions/back.html | 12 ++++++------ .../intrinsic/metafunctions/begin.html | 12 ++++++------ .../intrinsic/metafunctions/empty.html | 12 ++++++------ .../sequence/intrinsic/metafunctions/end.html | 12 ++++++------ .../intrinsic/metafunctions/front.html | 12 ++++++------ .../intrinsic/metafunctions/has_key.html | 12 ++++++------ .../intrinsic/metafunctions/size.html | 12 ++++++------ .../intrinsic/metafunctions/swap.html | 10 +++++----- .../intrinsic/metafunctions/value_at.html | 12 ++++++------ .../intrinsic/metafunctions/value_at_c.html | 12 ++++++------ .../intrinsic/metafunctions/value_at_key.html | 12 ++++++------ .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 12 ++++++------ .../operator/comparison/greater_than.html | 10 +++++----- .../comparison/greater_than_equal.html | 10 +++++----- .../operator/comparison/less_than.html | 10 +++++----- .../operator/comparison/less_than_equal.html | 10 +++++----- .../operator/comparison/not_equal.html | 10 +++++----- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 ++++++------ .../fusion/sequence/operator/i_o/out.html | 12 ++++++------ doc/html/fusion/support/category_of.html | 12 ++++++------ doc/html/fusion/support/deduce.html | 10 +++++----- doc/html/fusion/support/deduce_sequence.html | 10 +++++----- 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/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 ++-- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 +++++++------- doc/html/fusion/view/iterator_range.html | 14 +++++++------- doc/html/fusion/view/joint_view.html | 14 +++++++------- doc/html/fusion/view/nview.html | 14 +++++++------- doc/html/fusion/view/repetitive_view.html | 14 +++++++------- doc/html/fusion/view/reverse_view.html | 12 ++++++------ doc/html/fusion/view/single_view.html | 12 ++++++------ doc/html/fusion/view/transform_view.html | 12 ++++++------ doc/html/fusion/view/zip_view.html | 14 +++++++------- doc/html/index.html | 4 ++-- 250 files changed, 1409 insertions(+), 1407 deletions(-) diff --git a/doc/adapted.qbk b/doc/adapted.qbk index 262671a3..ea47a5d1 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -593,7 +593,7 @@ __result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element is [^attribute_type['N]] with const-qualifier and reference removed. The macro should be used at global scope, and `type_name` should be the fully -namespace qualified name of the struct to be converted. +namespace qualified name of the class type to be adapted. [heading Header] @@ -701,7 +701,7 @@ __result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element is [^attribute_type['N]] with const-qualifier and reference removed. The macro should be used at global scope, and `type_name` should be the fully -namespace qualified name of the struct to be converted. +namespace qualified name of the template class type to be adapted. [heading Header] @@ -799,12 +799,12 @@ The actual return type of fusion's intrinsic sequence access (meta-)functions when in invoked with (an instance of) `type_name` is a proxy type. This type is implicitly convertible to the attribute type via [^get_expr['N]] and forwards assignment to the underlying element via [^set_expr['N]]. -The value type (that is the type returned by __result_of_value_of__, -__result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element +The value type (that is the type returned by __result_of_value_of__, __result_of_value_of_data__, +__result_of_value_at__, __result_of_value_at_c__ and __result_of_value_at_key__) of the ['N]th element is [^attribute_type['N]] with const-qualifier and reference removed. The macro should be used at global scope, and `type_name` should be the fully -namespace qualified name of the struct to be converted. +namespace qualified name of the class type to be adapted. [heading Header] @@ -913,12 +913,12 @@ The actual return type of fusion's intrinsic sequence access (meta-)functions when in invoked with (an instance of) `type_name` is a proxy type. This type is implicitly convertible to the attribute type via [^get_expr['N]] and forwards assignment to the underlying element via [^set_expr['N]]. -The value type (that is the type returned by __result_of_value_of__, -__result_of_value_at__ and __result_of_value_at_c__) of the ['N]th element +The value type (that is the type returned by __result_of_value_of__, __result_of_value_of_data__, +__result_of_value_at__, __result_of_value_at_c__ and __result_of_value_at_key__) of the ['N]th element is [^attribute_type['N]] with const-qualifier and reference removed. The macro should be used at global scope, and `type_name` should be the fully -namespace qualified name of the struct to be converted. +namespace qualified name of the template class type to be adapted. [heading Header] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 50892d7d..e7138610 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -169,7 +169,6 @@ [def __result_of_at_key__ [link fusion.sequence.intrinsic.metafunctions.at_key `result_of::at_key`]] [def __has_key__ [link fusion.sequence.intrinsic.functions.has_key `has_key`]] [def __result_of_has_key__ [link fusion.sequence.intrinsic.metafunctions.has_key `result_of::has_key`]] -[def __value_at_key__ [link fusion.sequence.intrinsic.metafunctions.value_at_key `value_at_key`]] [def __result_of_value_at__ [link fusion.sequence.intrinsic.metafunctions.value_at `result_of::value_at`]] [def __result_of_value_at_c__ [link fusion.sequence.intrinsic.metafunctions.value_at_c `result_of::value_at_c`]] [def __result_of_value_at_key__ [link fusion.sequence.intrinsic.metafunctions.value_at_key `result_of::value_at_key`]] diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 14543404..4eb45c5c 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -60,7 +60,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

    #include <boost/fusion/adapted.hpp>
    diff --git a/doc/html/fusion/adapted/adapt_adt.html b/doc/html/fusion/adapted/adapt_adt.html
    index d4b6d12b..8fcd7484 100644
    --- a/doc/html/fusion/adapted/adapt_adt.html
    +++ b/doc/html/fusion/adapted/adapt_adt.html
    @@ -32,7 +32,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ADT(
    @@ -43,7 +43,7 @@
         )
     
    - + Expression Semantics
    @@ -84,18 +84,18 @@ and reference removed.

    - The macros should be used at global scope, and type_name - should be the fully namespace qualified name of the struct to be converted. + The macro should be used at global scope, and type_name + should be the fully namespace qualified name of the class type to be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
     #include <boost/fusion/include/adapt_adt.hpp>
     
    - + Example
    namespace demo
    @@ -141,7 +141,7 @@
     std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index 9fc434be..df42c761 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT

    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    @@ -48,7 +48,7 @@
         )
     
    - + Semantics

    @@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_assoc_adt.html b/doc/html/fusion/adapted/adapt_assoc_adt.html
    index 4ab345db..4f56eddc 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_adt.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_adt.html
    @@ -34,7 +34,7 @@
             Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_ADT(
    @@ -45,7 +45,7 @@
         )
     
    - + Expression Semantics
    @@ -83,23 +83,23 @@ is a proxy type. This type is implicitly convertible to the attribute type via get_exprN and forwards assignment to the underlying element via set_exprN. - The value type (that is the type returned by result_of::value_of, result_of::value_at and result_of::value_at_c) of the Nth + The value type (that is the type returned by result_of::value_of, result_of::value_of_data, result_of::value_at, result_of::value_at_c and result_of::value_at_key) of the Nth element is attribute_typeN with const-qualifier and reference removed.

    - The macros should be used at global scope, and type_name - should be the fully namespace qualified name of the struct to be converted. + The macro should be used at global scope, and type_name + should be the fully namespace qualified name of the class type to be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
     #include <boost/fusion/include/adapt_assoc_adt.hpp>
     
    - + Example
    namespace demo
    @@ -151,7 +151,7 @@
     std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html index 9cfe3f69..48270fc3 100644 --- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html +++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED

    - + Description

    @@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    @@ -58,7 +58,7 @@
         )
     
    - + Semantics

    @@ -83,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
     #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    index 01861d7f..d383b1f5 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    @@ -34,7 +34,7 @@
             Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_ADT(
    @@ -46,7 +46,7 @@
         )
     
    - + Expression Semantics
    @@ -88,23 +88,24 @@ is a proxy type. This type is implicitly convertible to the attribute type via get_exprN and forwards assignment to the underlying element via set_exprN. - The value type (that is the type returned by result_of::value_of, result_of::value_at and result_of::value_at_c) of the Nth + The value type (that is the type returned by result_of::value_of, result_of::value_of_data, result_of::value_at, result_of::value_at_c and result_of::value_at_key) of the Nth element is attribute_typeN with const-qualifier and reference removed.

    - The macros should be used at global scope, and type_name - should be the fully namespace qualified name of the struct to be converted. + The macro should be used at global scope, and type_name + should be the fully namespace qualified name of the template class type to + be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
     #include <boost/fusion/include/adapt_assoc_adt.hpp>
     
    - + Example
    namespace demo
    @@ -158,7 +159,7 @@
     std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html index a79fecf8..7684c30a 100644 --- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
    @@ -50,7 +50,7 @@
         )
     
    - + Semantics

    @@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 1a70b9cf..5d9d2d40 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT
     
     
    - + Description

    @@ -36,7 +36,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT(
    @@ -47,7 +47,7 @@
         )
     
    - + Semantics

    @@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html
    index dbd7657f..53dac8f2 100644
    --- a/doc/html/fusion/adapted/adapt_struct_named.html
    +++ b/doc/html/fusion/adapted/adapt_struct_named.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT_NAMED
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT_NAMED(
    @@ -57,7 +57,7 @@
         )
     
    - + Semantics

    @@ -81,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
     #include <boost/fusion/include/adapt_struct_named.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_tpl_adt.html b/doc/html/fusion/adapted/adapt_tpl_adt.html
    index 302f45c1..bbeb9895 100644
    --- a/doc/html/fusion/adapted/adapt_tpl_adt.html
    +++ b/doc/html/fusion/adapted/adapt_tpl_adt.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ADT(
    @@ -45,7 +45,7 @@
         )
     
    - + Expression Semantics
    @@ -90,18 +90,19 @@ and reference removed.

    - The macros should be used at global scope, and type_name - should be the fully namespace qualified name of the struct to be converted. + The macro should be used at global scope, and type_name + should be the fully namespace qualified name of the template class type to + be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
     #include <boost/fusion/include/adapt_adt.hpp>
     
    - + Example
      namespace demo
    @@ -149,7 +150,7 @@
       std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html index ce8087c4..2b9cffac 100644 --- a/doc/html/fusion/adapted/adapt_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_TPL_STRUCT

    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_TPL_STRUCT(
    @@ -49,7 +49,7 @@
         )
     
    - + Semantics

    @@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html
    index f4ad0d69..6f2da6f3 100644
    --- a/doc/html/fusion/adapted/array.html
    +++ b/doc/html/fusion/adapted/array.html
    @@ -32,14 +32,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     
    - + Model of
    • @@ -47,7 +47,7 @@ Access Sequence
    - + Example
    int arr[3] = {1,2,3};
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index d3c4492b..1c19dba3 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -33,14 +33,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/boost_array.hpp>
     #include <boost/fusion/include/boost_array.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    boost::array<int,3> arr = {{1,2,3}};
    @@ -60,7 +60,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index a37d1e73..1c7b67c5 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -33,21 +33,21 @@ Sequence.

    - + Header
    #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     
    - + Model of
    - + Example
    boost::tuple<int,std::string> example_tuple(101, "hello");
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index 4b791513..ef391820 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_DEFINE_ASSOC_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_STRUCT(
    @@ -68,7 +68,7 @@
     
     
     
    - + Expression Semantics
    @@ -182,14 +182,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    index b6578a99..45da1e1b 100644
    --- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT
     
     
    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
    @@ -73,7 +73,7 @@
     
     
     
    - + Expression Semantics
    @@ -187,14 +187,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html
    index 871ade51..24e4163f 100644
    --- a/doc/html/fusion/adapted/define_struct.html
    +++ b/doc/html/fusion/adapted/define_struct.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_DEFINE_STRUCT(
    @@ -63,7 +63,7 @@
     
     
     
    - + Expression Semantics
    @@ -174,14 +174,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // demo::employee is a Fusion sequence
    diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html
    index 751ca2e4..beee5413 100644
    --- a/doc/html/fusion/adapted/define_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_tpl_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_DEFINE_TPL_STRUCT
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_TPL_STRUCT(
    @@ -72,7 +72,7 @@
     
     
     
    - + Expression Semantics
    @@ -183,14 +183,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // Any instantiated demo::employee is a Fusion sequence
    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html
    index 62921a20..c0d4f676 100644
    --- a/doc/html/fusion/adapted/mpl_sequence.html
    +++ b/doc/html/fusion/adapted/mpl_sequence.html
    @@ -32,14 +32,14 @@
             sequences fully conforming fusion sequences.
           

    - + Header
    #include <boost/fusion/adapted/mpl.hpp>
     #include <boost/fusion/include/mpl.hpp>
     
    - + Model of
      @@ -60,7 +60,7 @@
    - + Example
    mpl::vector_c<int, 123, 456> vec_c;
    @@ -73,7 +73,7 @@
     std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 2b99776f..57a7156f 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,14 +33,14 @@ Access Sequence.

    - + Header
    #include <boost/fusion/adapted/std_pair.hpp>
     #include <boost/fusion/include/std_pair.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    std::pair<int, std::string> p(123, "Hola!!!");
    @@ -57,7 +57,7 @@
     std::cout << p << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 7a5e2315..8f340b45 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -44,7 +44,7 @@

    - + Lazy Evaluation

    @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

    - + Sequence Extension

    @@ -87,7 +87,7 @@ functions to convert back to the original sequence type.

    - + Header

    #include <boost/fusion/algorithm.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index dd9d8cb7..d69beea1 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -35,7 +35,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header
    #include <boost/fusion/algorithm/iteration.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    index 01d9a678..40e86964 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    @@ -27,7 +27,7 @@
     accumulate
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index b08e4067..de1904c9 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -27,7 +27,7 @@
     fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index 7f590a80..5cda6620 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    @@ -27,14 +27,14 @@
     for_each
     
     
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence& seq, F f);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -126,21 +126,21 @@ in seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    struct increment
    diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    index f1bba8e6..9d945a65 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    @@ -27,7 +27,7 @@
     iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
     #include <boost/fusion/include/iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    index 0f0b2beb..c2e401a4 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    @@ -27,7 +27,7 @@
     reverse_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
     #include <boost/fusion/include/reverse_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    index fa6f58ed..01aec32a 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    @@ -27,7 +27,7 @@
     reverse_iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ if it is the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
     #include <boost/fusion/include/reverse_iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    index e96309b5..e08e2337 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    @@ -27,14 +27,14 @@
     accumulate
     
     
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index 303ab9de..af5af651 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -27,14 +27,14 @@
     fold
     
     
    - + Description

    Returns the result type of fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index c40198f1..980d4928 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -31,11 +31,11 @@
                 return type of for_each is always void.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    index 9f8d6dd3..37ad8cc6 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    @@ -27,14 +27,14 @@
     iter_fold
     
     
    - + Description

    Returns the result type of iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    index 7f09918a..b5b86571 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    @@ -27,14 +27,14 @@
     reverse_fold
     
     
    - + Description

    Returns the result type of reverse_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    index 13379b7c..f742f54b 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    @@ -27,14 +27,14 @@
     reverse_iter_fold
     
     
    - + Description

    Returns the result type of reverse_iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index c2432194..b1f1df29 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -34,7 +34,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header
    #include <boost/fusion/algorithm/query.hpp>
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
    index c2e09a5d..9d08e0cf 100644
    --- a/doc/html/fusion/algorithm/query/functions/all.html
    +++ b/doc/html/fusion/algorithm/query/functions/all.html
    @@ -27,7 +27,7 @@
     all
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index 56baf69d..be11dbc2 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/query/functions/any.html
    @@ -27,7 +27,7 @@
     any
     
     
    - + Description

    @@ -38,7 +38,7 @@ least one element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -116,7 +116,7 @@

    - + Expression semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index 09d9eff4..2664a844 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/query/functions/count.html
    @@ -27,14 +27,14 @@
     count
     
     
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -128,21 +128,21 @@ t in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    const vector<double,int,int> vec(1.0,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index 966c269c..26b49a37 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -127,21 +127,21 @@ in seq where f evaluates to true.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    const vector<int,int,int> vec(1,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index 79be3f13..ae02ff6e 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/query/functions/find.html
    @@ -27,14 +27,14 @@
     find
     
     
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    const vector<char,int> vec('a','0');
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index 4234bf7b..3d729190 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
    @@ -32,11 +32,11 @@
                 Lambda Expression evaluates to boost::mpl::true_.
               

    - + Description
    - + Synopsis
    template<
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -117,7 +117,7 @@

    - + Expression Semantics
    @@ -135,7 +135,7 @@ if there is no such element.

    - + Complexity

    @@ -150,7 +150,7 @@

    - + Example
    const vector<double,int> vec(1.0,2);
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index 2caaaf03..54eab623 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/query/functions/none.html
    @@ -27,7 +27,7 @@
     none
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
    index 07fe190c..2a503ac0 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
    @@ -27,14 +27,14 @@
     all
     
     
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index a0d52d79..5a5b87df 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -27,14 +27,14 @@
     any
     
     
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index b29bf813..88f4eb89 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -27,7 +27,7 @@
     count
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index 2b7a3178..45c46890 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index ff5abb27..c00519b0 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -27,7 +27,7 @@
     find
     
     
    - + Description

    @@ -35,7 +35,7 @@ search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index 8423e3f6..3f90d59f 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -27,7 +27,7 @@
     find_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index 6662ae16..89832593 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -27,14 +27,14 @@
     none
     
     
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 0b0c6c1e..b645f45c 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -47,7 +47,7 @@
             

    - + Header
    #include <boost/fusion/algorithm/transformation.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index 28d92803..324ac0aa 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html
    @@ -27,14 +27,14 @@
     clear
     
     
    - + Description

    clear returns an empty sequence.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,21 +103,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    assert(clear(make_vector(1,2,3)) == make_vector());
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index 31609b7c..f858446a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
    @@ -27,7 +27,7 @@
     erase
     
     
    - + Description

    @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    template<
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.73. Parameters

    +

    Table 1.73. Parameters

    @@ -138,7 +138,7 @@

    - + Expression Semantics
    @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    const vector<int, double, char> vec(1, 2.0, 'c');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index 022be51c..32ce3ba8 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -39,7 +39,7 @@ key.

    - + Synposis
    template<
    @@ -49,7 +49,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index 5936a449..38084461 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ the elements of a specified type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    const vector<int,int,long,long> vec(1,2,3,4);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index 9cda3fca..dfb86f83 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -140,21 +140,21 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    const vector<int,int,double,double> vec(1,2,3.0,4.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index 4b7298aa..bdeb8e22 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -129,7 +129,7 @@

    - + Expression Semantics
    @@ -150,21 +150,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index eaead16b..fb863ac1 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -130,7 +130,7 @@

    - + Expression Semantics
    @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index c705da30..1746f17a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
    @@ -27,7 +27,7 @@
     join
     
     
    - + Description

    @@ -35,7 +35,7 @@ first followed by the elements of the second.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ The order of the elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index f0843f01..014e013c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    @@ -27,14 +27,14 @@
     pop_back
     
     
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index b5713205..84ee9bc4 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    @@ -27,14 +27,14 @@
     pop_front
     
     
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index bcf3d69b..bc0deafe 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    @@ -27,14 +27,14 @@
     push_back
     
     
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -129,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>
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index 06456dc9..cc49e6a7 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    @@ -27,14 +27,14 @@
     push_front
     
     
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -130,21 +130,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index b01c6966..14d128f9 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ except those of a given type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index f261c604..39f930ad 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -139,21 +139,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index 80d5ab5a..dfb11294 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ a new value.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index fad4f7e0..9376c1cd 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ replaced with a new value.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index 8cf2b45e..e8603fe8 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -27,14 +27,14 @@
     reverse
     
     
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -120,21 +120,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 26e86e66..baffee7a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -134,7 +134,7 @@ within seq.

    - + Binary version synopsis
    @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index 9ed4e66e..3deb8ac5 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -114,21 +114,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index 8a2431ac..156d6c56 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -27,7 +27,7 @@
     clear
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.92. Parameters

    +

    Table 1.92. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index d35a3918..6c2fb350 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -31,11 +31,11 @@
                 and range delimiting iterator types.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -168,14 +168,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index c4fcec5e..8479612b 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -35,7 +35,7 @@ and key types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.94. Parameters

    +

    Table 1.94. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index d2776de3..e712f7cf 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ and type to retain.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.83. Parameter

    +

    Table 1.83. Parameter

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 495f3c15..1335c1de 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate type.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameter

    +

    Table 1.84. Parameter

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index dd20378d..c77848bd 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ position iterator and insertion types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.95. Parameters

    +

    Table 1.95. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -151,14 +151,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index 540d8fc2..6b9b1246 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.96. Parameters

    +

    Table 1.96. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -160,14 +160,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 7ff86016..10039676 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -27,14 +27,14 @@
     join
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 539e6e78..8adbc3aa 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -27,7 +27,7 @@
     pop_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.97. Parameters

    +

    Table 1.97. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 67cd7586..0aac263a 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -27,7 +27,7 @@
     pop_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.98. Parameters

    +

    Table 1.98. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    index e78951cd..80deaeb1 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    @@ -27,7 +27,7 @@
     push_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.99. Parameters

    +

    Table 1.99. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    index a133f805..d56b0a9d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    @@ -27,7 +27,7 @@
     push_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.100. Parameters

    +

    Table 1.100. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    index cc776038..c431b7b9 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ removal types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 13d28659..e40caf8c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 9a88cdcd..3af76a8b 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to replace.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index b485df20..6de3608c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -146,14 +146,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index b336e79c..bd1cff24 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -27,7 +27,7 @@
     reverse
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index e31147aa..ea79a55c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -145,7 +145,7 @@ within seq.

    - + Binary version synopsis
    @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 33396d10..8eebaa94 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -72,14 +72,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
    diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html
    index 306705f6..8fb8ce77 100644
    --- a/doc/html/fusion/container.html
    +++ b/doc/html/fusion/container.html
    @@ -49,7 +49,7 @@
           These containers are more or less counterparts of those in STL.
         

    - + Header

    #include <boost/fusion/container.hpp>
    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index e15b2a90..853268e5 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -27,7 +27,7 @@
     cons
     
     
    - + Description

    @@ -42,21 +42,21 @@ Inlined Functions).

    - + Header
    #include <boost/fusion/container/list/cons.hpp>
     #include <boost/fusion/include/cons.hpp>
     
    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct cons;
     
    - + Template parameters
    @@ -117,7 +117,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -292,7 +292,7 @@

    - + Example
    cons<int, cons<float> > l(12, cons<float>(5.5f));
    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index d4015f8c..4fa03fd3 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -35,7 +35,7 @@
             types using one of these conversion functions.
           

    - + Header
    #include <boost/fusion/include/convert.hpp>
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
    index 325075a6..caf00535 100644
    --- a/doc/html/fusion/container/conversion/functions/as_list.html
    +++ b/doc/html/fusion/container/conversion/functions/as_list.html
    @@ -27,14 +27,14 @@
     as_list
     
     
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    as_list(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index 64f5edd5..b1236172 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/conversion/functions/as_map.html
    @@ -27,14 +27,14 @@
     as_map
     
     
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    as_map(make_vector(
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index 8f1c60ed..6fcf10aa 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/conversion/functions/as_set.html
    @@ -27,14 +27,14 @@
     as_set
     
     
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    as_set(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index c050c1f8..a07e5c2b 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/functions/as_vector.html
    @@ -27,14 +27,14 @@
     as_vector
     
     
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    as_vector(make_list('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    index f5da378e..dd989ee1 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    @@ -27,21 +27,21 @@
     as_list
     
     
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    template <typename Sequence>
     struct as_list;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    result_of::as_list<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index febc61a3..d8fc643f 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    @@ -27,21 +27,21 @@
     as_map
     
     
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    template <typename Sequence>
     struct as_map;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    result_of::as_map<vector<
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index d523531b..8158fa2f 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    @@ -27,21 +27,21 @@
     as_set
     
     
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    template <typename Sequence>
     struct as_set;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    result_of::as_set<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index 0458b21c..fc18284c 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    @@ -27,21 +27,21 @@
     as_vector
     
     
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    template <typename Sequence>
     struct as_vector;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    result_of::as_vector<list<char, int> >::type
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index 164d3f2f..1e0c6e3b 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -34,7 +34,7 @@
             These are the functions that you can use to generate various forms of Container from elemental values.
           

    - + Header
    #include <boost/fusion/container/generation.hpp>
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
    index 87b070dc..a2acc87f 100644
    --- a/doc/html/fusion/container/generation/functions/list_tie.html
    +++ b/doc/html/fusion/container/generation/functions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index 2d00fa9c..f88fc4c0 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -27,7 +27,7 @@
     make_cons
     
     
    - + Description

    @@ -36,7 +36,7 @@ and optional cdr (tail).

    - + Synopsis
    template <typename Car>
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -127,20 +127,20 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index f0f7f3ee..261cc59d 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -27,7 +27,7 @@ make_list
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 49ef963a..05e02f18 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -27,7 +27,7 @@ make_map
    - + Description

    @@ -35,7 +35,7 @@ from one or more key/data pairs.

    - + Synopsis
    template <
    @@ -55,7 +55,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,20 +143,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    make_map<int, double>('X', "Men")
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 249634bc..54de41c9 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -27,7 +27,7 @@ make_set
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -117,20 +117,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    make_set(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index bdd98ba9..60e8abb9 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -27,7 +27,7 @@ make_vector
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
    make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 8809e712..ee473b56 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -27,14 +27,14 @@ map_tie
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index ee4db823..a6991616 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -54,7 +54,7 @@
                 The vector_tie function creates
                 a vector
                 of type vector<int&, char&, double&>. The same result could be achieved
    -            with the call make_vector(ref(i), ref(c), ref(a)) [9].
    +            with the call make_vector(ref(i), ref(c), ref(a)) [9].
               

    A tie can be used to 'unpack' another tuple into @@ -70,7 +70,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -84,7 +84,7 @@



    -

    [9] +

    [9] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 6863c5d5..a07b8115 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -27,14 +27,14 @@ vector_tie
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    index dddc38f2..f31f0f6a 100644
    --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    result_of::list_tie<int, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index 065b4191..e958b352 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    @@ -27,21 +27,21 @@
     make_cons
     
     
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct make_cons;
     
    - + Parameters
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    result_of::make_cons<char, result_of::make_cons<int>::type>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index 78e16787..c2af09ce 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
    @@ -27,14 +27,14 @@
     make_list
     
     
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_list<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index 5d26f44e..bae76a1e 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
    @@ -27,14 +27,14 @@
     make_map
     
     
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    template <
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -140,20 +140,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    result_of::make_map<int, double, char, double>::type
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 11cb5daf..b398b16b 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -27,14 +27,14 @@ make_set
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    result_of::make_set<int, char, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    index 0cd53f42..413a7f61 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    @@ -27,14 +27,14 @@
     make_vector
     
     
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_vector<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index f79ee442..3e46889a 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -27,14 +27,14 @@
     map_tie
     
     
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -119,7 +119,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index 928db86c..8d545419 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -27,14 +27,14 @@
     vector_tie
     
     
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    result_of::vector_tie<int, double>::type
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index 75523d0f..15eb0ddf 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/list.html
    @@ -27,7 +27,7 @@
     list
     
     
    - + Description

    @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    #include <boost/fusion/container/list.hpp>
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -75,7 +75,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    • @@ -154,7 +154,7 @@
    - + Expression Semantics

    @@ -261,7 +261,7 @@

    - + Example
    list<int, float> l(12, 5.5f);
    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index 6b26bb22..f8bd46f4 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -27,7 +27,7 @@
     map
     
     
    - + Description

    @@ -40,7 +40,7 @@ (see Overloaded Functions).

    - + Header
    #include <boost/fusion/container/map.hpp>
    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -77,7 +77,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -122,7 +122,7 @@
    - + Model of
      @@ -157,7 +157,7 @@
    - + Expression Semantics

    @@ -241,7 +241,7 @@

    - + Example
    typedef map<
    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index 3a7f81e3..9252403f 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -27,7 +27,7 @@
     set
     
     
    - + Description

    @@ -39,7 +39,7 @@ Functions).

    - + Header
    #include <boost/fusion/container/set.hpp>
    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -76,7 +76,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -121,7 +121,7 @@
    - + Model of
      @@ -156,7 +156,7 @@
    - + Expression Semantics

    @@ -240,7 +240,7 @@

    - + Example
    typedef set<int, float> S;
    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index 992eb12c..52346a63 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -27,7 +27,7 @@
     vector
     
     
    - + Description

    @@ -39,7 +39,7 @@ efficient.

    - + Header
    #include <boost/fusion/container/vector.hpp>
    @@ -60,7 +60,7 @@
     #include <boost/fusion/include/vector50.hpp>
     
    - + Synopsis

    @@ -115,7 +115,7 @@

    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -160,7 +160,7 @@
    - + Model of
    • @@ -190,7 +190,7 @@
    - + Expression Semantics

    @@ -273,7 +273,7 @@

    - + Example
    vector<int, float> v(12, 5.5f);
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index 67a32feb..3ff36d2c 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -50,7 +50,7 @@
               
     
     
    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching
    @@ -121,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
    - + Designing a suitable iterator
    @@ -183,7 +183,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features
    @@ -323,7 +323,7 @@

    - + Implementing the remaining iterator functionality
    @@ -374,7 +374,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence
    @@ -430,7 +430,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative sequence
    @@ -438,7 +438,8 @@ In order for example_struct to serve as an associative forward sequence, we need to adapt the traversal category of our sequence and our iterator accordingly and enable 3 intrinsic - sequence lookup features, at_key, value_at_key and has_key. We also need to enable + sequence lookup features, at_key, __value_atkey_ + and has_key. We also need to enable 3 iterator lookup features, result_of::key_of, result_of::value_of_data and deref_data.

    @@ -494,7 +495,7 @@ are provided in the example code.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 1675b9c0..2c61d4c9 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -27,7 +27,7 @@ Iterator Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     
    - + Usage

    @@ -57,7 +57,7 @@ type.

    -

    Table 1.103. Parameters

    +

    Table 1.103. Parameters

    @@ -106,7 +106,7 @@

    -

    Table 1.104. Key Expressions

    +

    Table 1.104. Key Expressions

    @@ -439,14 +439,14 @@

    - + Header
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 51b03803..6c0c590c 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -27,7 +27,7 @@ Sequence Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     
    - + Usage

    @@ -59,7 +59,7 @@ type.

    -

    Table 1.101. Parameters

    +

    Table 1.101. Parameters

    @@ -107,7 +107,7 @@

    -

    Table 1.102. Key Expressions

    +

    Table 1.102. Key Expressions

    @@ -244,14 +244,14 @@

    - + Include
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 2bc12b36..2e5648fb 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -63,13 +63,13 @@ through a function object interface.

    - + Header

    #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -103,7 +103,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 70d06e7c..62f9c979 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -27,7 +27,7 @@ fused
    - + Description

    @@ -54,20 +54,20 @@ and boost::shared_ptr).

    - + Header
    #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -148,7 +148,7 @@
    - + Expression Semantics
    @@ -213,14 +213,14 @@
    - + Example
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index ae25966c..1f32a6c0 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -27,7 +27,7 @@ fused_function_object
    - + Description

    @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

    - + Header
    #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    template <class Function>
     class fused_function_object;
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
    @@ -139,7 +139,7 @@
    - + Expression Semantics
    @@ -204,7 +204,7 @@
    - + Example
    template<class SeqOfSeqs, class Func>
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 1c816df7..f68b25e9 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -27,7 +27,7 @@ fused_procedure
    - + Description

    @@ -62,20 +62,20 @@ case is not implemented).

    - + Header
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -119,7 +119,7 @@
    - + Model of
    @@ -157,7 +157,7 @@
    - + Expression Semantics
    @@ -222,7 +222,7 @@
    - + Example
    template<class SequenceOfSequences, class Func>
    @@ -242,7 +242,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index 5dad50a8..d69821bc 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/adapter/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index e3de5966..0c0408ae 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -27,7 +27,7 @@ unfused

    - + Description

    @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

    - + Header
    #include <boost/fusion/functional/adapter/unfused.hpp>
     
    - + Synopsis
    template <class Function, bool AllowNullary = true>
     class unfused;
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
      @@ -174,7 +174,7 @@
    - + Expression Semantics
    @@ -239,7 +239,7 @@
    - + Example
    struct fused_incrementer
    @@ -266,7 +266,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 29b79854..dd6d65d6 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -27,7 +27,7 @@ unfused_typed
    - + Description

    @@ -66,20 +66,20 @@

    - + Header
    #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    template <class Function, class Sequence>
     class unfused_typed;
     
    - + Template parameters
    @@ -139,7 +139,7 @@
    - + Model of
    @@ -186,7 +186,7 @@
    - + Expression Semantics
    @@ -253,7 +253,7 @@
    - + Example
    struct add_assign // applies operator+=
    @@ -321,7 +321,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index b645a477..92a85779 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@ Callable Object
    - + Description

    @@ -36,7 +36,7 @@ of a function call operator.

    - + Models
      @@ -51,7 +51,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
    index f046aa66..36ef24dd 100644
    --- a/doc/html/fusion/functional/concepts/def_callable.html
    +++ b/doc/html/fusion/functional/concepts/def_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -117,7 +117,7 @@
    - + Models
      @@ -130,7 +130,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index 236c9503..1c761781 100644
    --- a/doc/html/fusion/functional/concepts/poly.html
    +++ b/doc/html/fusion/functional/concepts/poly.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -36,7 +36,7 @@ Callable Object type.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -128,7 +128,7 @@
    - + Models
      @@ -143,7 +143,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index c19f57df..4a96d751 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -67,7 +67,7 @@
    - + Expression requirements
    @@ -114,7 +114,7 @@
    - + Models
      @@ -126,7 +126,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
    index 23ff0086..def6a9a5 100644
    --- a/doc/html/fusion/functional/generation/functions/mk_fused.html
    +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html
    @@ -27,7 +27,7 @@
     make_fused
     
     
    - + Description

    @@ -36,7 +36,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -44,7 +44,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    float sub(float a, float b) { return a - b; }
    @@ -125,7 +125,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 9d2747d8..ee23a767 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -27,7 +27,7 @@ make_fused_function_object
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    struct sub
    @@ -140,7 +140,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 6b07ca57..fb17bd84 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -27,7 +27,7 @@ make_fused_procedure
    - + Description

    @@ -37,7 +37,7 @@ conversion applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    vector<int,int,int> v(1,2,3);
    @@ -121,7 +121,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index c42d2ab8..d269ae7a 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -27,7 +27,7 @@ make_unfused
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_unfused(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ Semantics: Returns a unfused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Example
    struct fused_incrementer
    @@ -137,7 +137,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 2206dea8..0e1fb91b 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -27,21 +27,21 @@ make_fused
    - + Description

    Returns the result type of make_fused.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 5098e924..00c1cdd0 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -27,21 +27,21 @@ make_fused_function_object
    - + Description

    Returns the result type of make_fused_function_object.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 7d8b3682..d425e383 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -27,21 +27,21 @@ make_fused_procedure
    - + Description

    Returns the result type of make_fused_procedure.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 40fdfdb3..1f3b5675 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -27,21 +27,21 @@ make_unfused
    - + Description

    Returns the result type of make_unfused.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 5044ce2a..908b368c 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@ invoke
    - + Description

    @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -67,7 +67,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke.hpp>
     
    - + Example
    std::plus<int> add;
     assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index 0859d392..db60b1bc 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -27,7 +27,7 @@ invoke_function_object
    - + Description

    @@ -42,7 +42,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -60,7 +60,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -126,7 +126,7 @@
    - + Expression Semantics
    @@ -142,13 +142,13 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
    struct sub
    @@ -174,7 +174,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 778e731e..02575625 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -27,7 +27,7 @@ invoke_procedure
    - + Description

    @@ -51,7 +51,7 @@ isn't implemented).

    - + Synopsis
    template<
    @@ -69,7 +69,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -150,13 +150,13 @@ as arguments.

    - + Header
    #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    vector<int,int> v(1,2);
    @@ -165,7 +165,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 9be51e43..5ef5a7c9 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/invocation/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index b55091e4..69aa4e58 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@ invoke

    - + Description

    Returns the result type of invoke.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 9f24915b..d5cb7c04 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -27,14 +27,14 @@ invoke_function_object
    - + Description

    Returns the result type of invoke_function_object.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 ff7ec8a6..9b8e32aa 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -27,14 +27,14 @@ invoke_procedure
    - + Description

    Returns the result type of invoke_procedure.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index be6ee81f..3a83d1e4 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -116,7 +116,7 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types [1]. In MPL, + wish to work solely on types [1]. In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from @@ -130,7 +130,7 @@



    -

    [1] +

    [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index db5b1580..82f52649 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -81,7 +81,7 @@ Sequence.

    - + Header

    #include <boost/fusion/iterator.hpp>
    diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html
    index f32247a5..d701220f 100644
    --- a/doc/html/fusion/iterator/concepts/associative_iterator.html
    +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html
    @@ -28,7 +28,7 @@
             Iterator
     
    - + Description

    @@ -50,7 +50,7 @@

    - + Refinement of
    @@ -61,7 +61,7 @@ Access Iterator

    - + Expression requirements
    @@ -113,7 +113,7 @@
    - + Meta Expressions
    @@ -174,7 +174,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index ccbbd5c7..6c88b93b 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -58,7 +58,7 @@

    - + Refinement of
    @@ -66,7 +66,7 @@ Forward Iterator

    - + Expression requirements
    @@ -173,7 +173,7 @@
    - + Meta Expressions
    @@ -208,7 +208,7 @@
    - + Expression Semantics
    @@ -248,7 +248,7 @@
    - + Invariants

    @@ -269,7 +269,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 2b60cc2d..438a641a 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Expression requirements
    @@ -237,7 +237,7 @@
    - + Meta Expressions
    @@ -348,7 +348,7 @@
    - + Expression Semantics
    @@ -474,7 +474,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 1c319cdc..5431aa94 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -28,7 +28,7 @@ Access Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Refinement of
    @@ -68,7 +68,7 @@ Iterator

    - + Expression requirements
    @@ -175,7 +175,7 @@
    - + Meta Expressions
    @@ -238,7 +238,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index eb43ab25..a1b8aeaf 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -27,14 +27,14 @@ advance
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i);
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -128,14 +128,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
    index f73f6cfa..c5d17e95 100644
    --- a/doc/html/fusion/iterator/functions/advance_c.html
    +++ b/doc/html/fusion/iterator/functions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance_c<I, N>::type advance_c(I const& i);
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -108,7 +108,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
    index c7d98fa0..27eeea41 100644
    --- a/doc/html/fusion/iterator/functions/deref.html
    +++ b/doc/html/fusion/iterator/functions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -102,14 +102,14 @@ i.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
    index 87c719e2..1d6db2f5 100644
    --- a/doc/html/fusion/iterator/functions/deref_data.html
    +++ b/doc/html/fusion/iterator/functions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ an associative iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref_data<I>::type deref(I const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

    - + Header
    #include <boost/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int&> > map;
    diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
    index 2c712b0c..5a54b64a 100644
    --- a/doc/html/fusion/iterator/functions/distance.html
    +++ b/doc/html/fusion/iterator/functions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ iterators i and j.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
    index 3ef0fc0b..a85ee728 100644
    --- a/doc/html/fusion/iterator/functions/next.html
    +++ b/doc/html/fusion/iterator/functions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ next element after i.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
    index 59a21c98..696563cd 100644
    --- a/doc/html/fusion/iterator/functions/prior.html
    +++ b/doc/html/fusion/iterator/functions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ element prior to i.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,int> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
    index 42294799..0fd0b0f3 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance.html
    @@ -27,14 +27,14 @@
     advance
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
    index 7a8d5584..a5b07fde 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
    index cb0cfdaf..b22ce67b 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ an iterator of type I.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
    index 92a9480f..f4ededf0 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ referenced by an associative iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

    - + Header
    #include <boosta/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > map;
    diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
    index e67ae1bb..28bc6830 100644
    --- a/doc/html/fusion/iterator/metafunctions/distance.html
    +++ b/doc/html/fusion/iterator/metafunctions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -108,14 +108,14 @@ J.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
    index 595ae6bf..b9dd1274 100644
    --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
    @@ -27,7 +27,7 @@
     equal_to
     
     
    - + Description

    @@ -36,7 +36,7 @@ and J are equal.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
    index 69a76fec..03b23290 100644
    --- a/doc/html/fusion/iterator/metafunctions/key_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/key_of.html
    @@ -27,7 +27,7 @@
     key_of
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

    - + Header
    #include <boost/fusion/iterator/key_of.hpp>
     #include <boost/fusion/include/key_of.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
    index 1ccb75aa..2df36ff2 100644
    --- a/doc/html/fusion/iterator/metafunctions/next.html
    +++ b/doc/html/fusion/iterator/metafunctions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ next element in the sequence after I.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
    index 13afd638..71b88995 100644
    --- a/doc/html/fusion/iterator/metafunctions/prior.html
    +++ b/doc/html/fusion/iterator/metafunctions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ previous element in the sequence before I.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
    index 5a0f6c32..7ae116d9 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
    @@ -27,14 +27,14 @@
     value_of
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ a sequence at iterator position I.

    - + Header
    #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    - + Example
    typedef vector<int,int&,const int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    index dabe24db..5875a6fd 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    @@ -27,7 +27,7 @@
     value_of_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ by an associative iterator references.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -107,14 +107,14 @@ I.

    - + Header
    #include <boost/fusion/iterator/value_of_data.hpp>
     #include <boost/fusion/include/value_of_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
    index 8865d02e..710114ae 100644
    --- a/doc/html/fusion/iterator/operator/operator_equality.html
    +++ b/doc/html/fusion/iterator/operator/operator_equality.html
    @@ -28,14 +28,14 @@
             ==
     
     
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,7 +104,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index d3b97c9b..61960ca8 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -28,14 +28,14 @@
             !=
     
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 2e81a0e9..4ab2d9f3 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -28,14 +28,14 @@
             *
     
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index 5faed22f..419f0044 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     Notes
     
     

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -101,7 +101,7 @@

    - + Extensibility

    @@ -136,7 +136,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -157,7 +157,7 @@ Arrays:

    - Array arguments are deduced to reference to const types. For example [10]: + Array arguments are deduced to reference to const types. For example [10]:

    make_list("Donald", "Daisy")
     
    @@ -185,7 +185,7 @@
    list<void (*)(int)>
     

    - + boost::ref

    @@ -224,7 +224,7 @@ details.

    - + adt_attribute_proxy

    @@ -456,7 +456,7 @@



    -

    [10] +

    [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index d458e277..369830cf 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -35,7 +35,7 @@ The library is organized in three layers:

    - + Layers

    @@ -60,7 +60,7 @@ against.

    - + Directory

      @@ -191,7 +191,7 @@

    - + Example

    @@ -206,11 +206,11 @@

    The first includes all containers The second includes only list - [4]. + [4].



    -

    [4] +

    [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 8c6f7542..cd81759c 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -33,7 +33,7 @@ --Niklaus Wirth

    - + Description

    @@ -51,7 +51,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -77,7 +77,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -85,7 +85,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -188,7 +188,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 59dd889f..79d4cd64 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -34,13 +34,13 @@

    For starters, we shall include all of Fusion's Sequence(s) - [2]: + [2]:

    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     

    - Let's begin with a vector [3]: + Let's begin with a vector [3]:

    vector<int, char, std::string> stuff(1, 'x', "howdy");
     int i = at_c<0>(stuff);
    @@ -56,7 +56,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

    @@ -111,7 +111,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -143,7 +143,7 @@ Easy, right?

    - + Associative tuples

    @@ -215,7 +215,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -226,12 +226,12 @@



    -

    [2] +

    [2] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [3] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 5b0a266d..636a9f9d 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    #include <boost/fusion/sequence.hpp>
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 9eac12a0..85eb3ae8 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -40,7 +40,7 @@
             Fusion Sequences are organized into a hierarchy of concepts.
           

    - + Traversal

    @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 039324a6..c18d9fcf 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -28,7 +28,7 @@ Sequence

    - + Description

    @@ -64,7 +64,7 @@

    - + Valid Expressions
    @@ -169,7 +169,7 @@
    - + Result Type Expressions
    @@ -243,7 +243,7 @@

    - + Expression Semantics
    @@ -298,7 +298,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index cbd36573..5d3461c7 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -37,7 +37,7 @@ Iterator.

    - + Refinement of
    @@ -66,7 +66,7 @@
    - + Valid Expressions
    @@ -192,7 +192,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Expression Semantics
    @@ -293,7 +293,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 76b481f3..245922a7 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -60,7 +60,7 @@

    - + Valid Expressions
    @@ -225,7 +225,7 @@
    - + Result Type Expressions
    @@ -310,7 +310,7 @@
    - + Expression Semantics
    @@ -398,7 +398,7 @@
    - + Invariants

    @@ -425,7 +425,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index a9787d39..7803b8a8 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -28,7 +28,7 @@ Access Sequence
    - + Description

    @@ -38,7 +38,7 @@ sequence elements.

    - + Refinement of
    @@ -73,7 +73,7 @@
    - + Valid Expressions
    @@ -199,7 +199,7 @@
    - + Result Type Expressions
    @@ -285,7 +285,7 @@

    - + Expression Semantics
    @@ -325,7 +325,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 08e41375..f4ee713d 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -36,10 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence[5]. + repertoire. They need to be implemented for each Fusion Sequence[5].

      - + Header
      #include <boost/fusion/sequence/intrinsic.hpp>
      @@ -47,7 +47,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/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 0ec6edeb..1c2236f7 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -27,14 +27,14 @@ at
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <typename N, typename Sequence>
    @@ -46,7 +46,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index cedd530a..d3bb40bd 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    @@ -27,14 +27,14 @@
     at_c
     
     
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <int N, typename Sequence>
    @@ -46,7 +46,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index 04eb2a3b..6a7d19bb 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    @@ -27,14 +27,14 @@
     at_key
     
     
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -46,7 +46,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ with Key.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index 9a21f45a..8bb2a449 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
    @@ -27,14 +27,14 @@
     back
     
     
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index 9bb9f0b8..2c30c62f 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to the first element in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index 20476a4c..95d34ae4 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    @@ -27,7 +27,7 @@
     empty
     
     
    - + Description

    @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    template <typename Sequence>
    @@ -44,7 +44,7 @@
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index 2c98e2f5..9222a1c1 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to one element past the end of the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index ecb8471e..5fb45995 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index 6410a690..1f364324 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    @@ -27,7 +27,7 @@
     has_key
     
     
    - + Description

    @@ -37,7 +37,7 @@ to false.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index dbbde44d..e9ff7342 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
    @@ -27,7 +27,7 @@
     size
     
     
    - + Description

    @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -43,7 +43,7 @@
     size(Sequence const& seq);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index 38773e19..4075d9c7 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -27,21 +27,21 @@
     swap
     
     
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -87,7 +87,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    vector<int, std::string> v1(1, "hello"), v2(2, "world");
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    index 90d2ec47..4746f161 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    @@ -27,14 +27,14 @@
     at
     
     
    - + Description

    - Returns the result type of at[6]. + Returns the result type of at[6].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ using at to access the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -140,7 +140,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 to diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 33c12afe..d5d70d1c 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -27,14 +27,14 @@ at_c

    - + Description

    - Returns the result type of at_c[7]. + Returns the result type of at_c[7].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ using at_c to access the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -139,7 +139,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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 8dc78609..b10531ed 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -27,14 +27,14 @@ at_key

    - + Description

    - Returns the result type of at_key[8]. + Returns the result type of at_key[8].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -126,14 +126,14 @@ Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    @@ -141,7 +141,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 want diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index a6ee7025..e7fa3915 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -27,14 +27,14 @@ back

    - + Description

    Returns the result type of back.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index 8ee31412..8244a41e 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns the result type of begin.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ to the first element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index e26ee5f5..ceafcc53 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    @@ -27,14 +27,14 @@
     empty
     
     
    - + Description

    Returns the result type of empty.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    typedef vector<> empty_vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index 522e8875..d34d8655 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns the result type of end.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ one past the end of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index ec5bd923..6b155584 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the result type of front.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index d06069e4..1ac841eb 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    @@ -27,14 +27,14 @@
     has_key
     
     
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index addbf588..338e086d 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    @@ -27,14 +27,14 @@
     size
     
     
    - + Description

    Returns the result type of size.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index a748d8a5..a861ba54 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -27,14 +27,14 @@
     swap
     
     
    - + Description

    Returns the return type of swap.

    - + Synopsis
    template<typename Seq1, typename Seq2>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ Semantics: Always returns void.

    - + Header
    #include <boost/fusion/sequence/intrinsic/swap.hpp>
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    index 78f41976..bcb4d9d6 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    @@ -27,14 +27,14 @@
     value_at
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index 599f59f8..68b76aa5 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    @@ -27,14 +27,14 @@
     value_at_c
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index 0432f94a..9e2526af 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    @@ -27,14 +27,14 @@
     value_at_key
     
     
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     #include <boost/fusion/include/value_at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
    index eae77dd2..09548b38 100644
    --- a/doc/html/fusion/sequence/operator/comparison.html
    +++ b/doc/html/fusion/sequence/operator/comparison.html
    @@ -49,7 +49,7 @@
               only until the result is clear.
             

    - + Header
    #include <boost/fusion/sequence/comparison.hpp>
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index 28dffa8c..ab01186c 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -27,14 +27,14 @@
     equal
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -42,7 +42,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -123,14 +123,14 @@ true.

    - + Header
    #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    vector<int, char> v1(5, 'a');
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index f2d07d4d..db69daac 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns b < a.

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index 1c3c753e..6f3b5813 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

    - + Header
    #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index 656ccdb9..4a92f1fb 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ and b.

    - + Header
    #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index 36ba19cb..7764b47c 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index 5a339c77..64bfd402 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    @@ -31,7 +31,7 @@
                 Compare two sequences for inequality.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ Returns !(a == b).

    - + Header
    #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    vector<int, char> v3(5, 'b');
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index e73ba947..5b4f4472 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -113,7 +113,7 @@
               representation may not be unambiguously parseable.
             

    - + Header
    #include <boost/fusion/sequence/io.hpp>
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index 5a8cc2c1..db3bdbe1 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -27,7 +27,7 @@
     in
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename IStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    vector<int, std::string, char> v;
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index fdf1ab71..77a1df99 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/i_o/out.html
    @@ -27,7 +27,7 @@
     out
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename OStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    std::cout << make_vector(123, "Hello", 'x') << std::endl;
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index 798bff26..2db452b8 100644
    --- a/doc/html/fusion/support/category_of.html
    +++ b/doc/html/fusion/support/category_of.html
    @@ -27,7 +27,7 @@
     category_of
     
     
    - + Description

    @@ -37,7 +37,7 @@ Sequence Concepts).

    - + Synopsis
    namespace traits
    @@ -50,7 +50,7 @@
     }
     
    - + Parameters
    @@ -95,7 +95,7 @@
    - + Expression Semantics
    @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

    - + Header
    #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    - + Example
    using boost::is_base_of;
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index 86c4f87a..65d50f23 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -27,7 +27,7 @@
     deduce
     
     
    - + Description

    @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

    - + Header
    #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    - + Synopsis
    namespace traits
    @@ -60,7 +60,7 @@
     }
     
    - + Example
    template <typename T>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 25db3661..2ffd7ed3 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -27,7 +27,7 @@ deduce_sequence
    - + Description

    @@ -38,14 +38,14 @@ original type as its argument.

    - + Header
    #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    - + Synopsis
    namespace traits
    @@ -58,7 +58,7 @@
     }
     
    - + Example
    template <class Seq>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 5b561b1c..7e97674f 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -27,7 +27,7 @@ is_sequence
    - + Description

    @@ -38,7 +38,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -51,7 +51,7 @@
     }
     
    - + Parameters
    @@ -96,7 +96,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ otherwise.

    - + Header
    #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index ee041332..28fc5700 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -27,7 +27,7 @@
     is_view
     
     
    - + Description

    @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::is_view<T>::type c;
    @@ -115,14 +115,14 @@
             otherwise.
           

    - + Header
    #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index 358d8702..e00d3779 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -27,7 +27,7 @@
     pair
     
     
    - + Description

    @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

    - + Synopsis
    template <typename First, typename Second>
    @@ -60,7 +60,7 @@
     make_pair(Second const &);
     
    - + Template parameters
    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -317,14 +317,14 @@
    - + Header
    #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    - + Example
    pair<int, char> p('X');
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 8d813078..b0f62789 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -27,7 +27,7 @@
     tag_of
     
     
    - + Description

    @@ -41,7 +41,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::tag_of<T>::type tag;
    @@ -112,14 +112,14 @@
             with T.
           

    - + Header
    #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     
    - + Example
    typedef traits::tag_of<list<> >::type tag1;
    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
    index c2221257..1d885b5a 100644
    --- a/doc/html/fusion/tuple/class_template_tuple.html
    +++ b/doc/html/fusion/tuple/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis
    template<
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 64d398fc..d43eac1d 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     Construction
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 82f2781f..8e4308d7 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -28,7 +28,7 @@ access
    - + Description

    @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    template<int I, T>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index 80a45250..38d2c2d3 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    @@ -28,7 +28,7 @@
             operators
     
     
    - + Description

    @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 5b28eb95..7c6b39d1 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -28,7 +28,7 @@ creation functions
    - + Description

    @@ -38,7 +38,7 @@ functions are described in this section.

    - + Specification
    template<typename T1, typename T2, ..., typename TN>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index c272a47c..41278128 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -28,7 +28,7 @@
             helper classes
     
     
    - + Description

    @@ -37,7 +37,7 @@ tuple size, and the element types.

    - + Specification
    tuple_size<T>::value
    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index e60c1ae3..40c289a4 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/pairs.html
    @@ -27,7 +27,7 @@
     Pairs
     
     
    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification
    tuple_size<std::pair<T1, T2> >::value
    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
    index 9e1e77f9..b68a2bcd 100644
    --- a/doc/html/fusion/view.html
    +++ b/doc/html/fusion/view.html
    @@ -47,7 +47,7 @@
           to copy and be passed around by value.
         

    - + Header

    #include <boost/fusion/view.hpp>
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index 7315a836..fcb94d92 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -27,7 +27,7 @@
     filter_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header
    #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Pred>
     struct filter_view;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -144,7 +144,7 @@
    - + Expression Semantics

    @@ -214,7 +214,7 @@

    - + Example
    using boost::mpl::_;
    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 76077a9e..d89bf513 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -27,7 +27,7 @@
     iterator_range
     
     
    - + Description

    @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
    #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    - + Synopsis
    template <typename First, typename Last>
     struct iterator_range;
     
    - + Template parameters
    @@ -107,7 +107,7 @@
    - + Model of
      @@ -149,7 +149,7 @@
    - + Expression Semantics
    @@ -223,7 +223,7 @@
    - + Example
    char const* s = "Ruby";
    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 1529a87a..4babe5f5 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -27,7 +27,7 @@
     joint_view
     
     
    - + Description

    @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

    - + Header
    #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     
    - + Synopsis
    template <typename Sequence1, typename Sequence2>
     struct joint_view;
     
    - + Template parameters
    @@ -109,7 +109,7 @@
    - + Model of
      @@ -146,7 +146,7 @@
    - + Expression Semantics

    @@ -218,7 +218,7 @@

    - + Example
    vector<int, char> v1(3, 'x');
    diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
    index be423805..d5f5d15d 100644
    --- a/doc/html/fusion/view/nview.html
    +++ b/doc/html/fusion/view/nview.html
    @@ -27,7 +27,7 @@
     nview
     
     
    - + Description

    @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

    - + Header
    #include <boost/fusion/view/nview.hpp>
     #include <boost/fusion/include/nview.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Indicies>
    @@ -56,7 +56,7 @@
     as_nview(Sequence& s);
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -235,7 +235,7 @@ of references to the elements of the original Fusion Sequence

    - + Example
    typedef vector<int, char, double> vec;
    diff --git a/doc/html/fusion/view/repetitive_view.html b/doc/html/fusion/view/repetitive_view.html
    index b2c23e75..457cb6eb 100644
    --- a/doc/html/fusion/view/repetitive_view.html
    +++ b/doc/html/fusion/view/repetitive_view.html
    @@ -27,7 +27,7 @@
     repetitive_view
     
     
    - + Description

    @@ -40,21 +40,21 @@ is not.

    - + Header
    #include <boost/fusion/view/repetitive_view.hpp>
     #include <boost/fusion/include/repetitive_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct repetitive_view;
     
    - + Template parameters
    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -228,7 +228,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Example
    typedef vector<int, char, double> vec1;
    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index 359f86e7..01f2f0e2 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -32,21 +32,21 @@
             element will be its first.
           

    - + Header
    #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct reverse_view;
     
    - + Template parameters
    @@ -89,7 +89,7 @@
    - + Model of
      @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -199,7 +199,7 @@
    - + Example
    typedef vector<int, short, double> vector_type;
    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index 61bcbeb2..b3cbea68 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -31,21 +31,21 @@
             a value as a single element sequence.
           

    - + Header
    #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     
    - + Synopsis
    template <typename T>
     struct single_view;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
    - + Model of
    • @@ -111,7 +111,7 @@
    - + Expression Semantics

    @@ -182,7 +182,7 @@

    - + Example
    single_view<int> view(3);
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 6537f02d..8d3b1e29 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -36,14 +36,14 @@
             Traversal Concept) of its underlying sequence or sequences.
           

    - + Header
    #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     
    - + Synopsis

    @@ -59,7 +59,7 @@ struct transform_view;

    - + Template parameters
    @@ -169,7 +169,7 @@
    - + Model of
    • @@ -224,7 +224,7 @@
    - + Expression Semantics
    @@ -319,7 +319,7 @@
    - + Example
    struct square
    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index 2bba292c..6a8da832 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -27,7 +27,7 @@
     zip_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ to the component _sequence_s.

    - + Header
    #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     
    - + Synopsis
    template <typename Sequences>
     struct zip_view;
     
    - + Template parameters
    @@ -95,7 +95,7 @@
    - + Model of
    • @@ -124,7 +124,7 @@
    - + Expression Semantics

    @@ -195,7 +195,7 @@

    - + Example
    typedef vector<int,int> vec1;
    diff --git a/doc/html/index.html b/doc/html/index.html
    index 9d5b0631..4cd9210d 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -34,7 +34,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)

    @@ -261,7 +261,7 @@
    - +

    Last revised: October 07, 2010 at 20:04:30 GMT

    Last revised: October 10, 2010 at 20:13:53 GMT


    From cd811f56bcceb97bdc01cb992d2d7f40b7958ac6 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Wed, 29 Dec 2010 19:54:59 +0000 Subject: [PATCH 44/82] Fusion: merge from trunk [SVN r67492] --- doc/fusion.qbk | 2 +- doc/html/fusion/adapted.html | 2 +- doc/html/fusion/adapted/adapt_adt.html | 10 +++--- doc/html/fusion/adapted/adapt_assoc.html | 10 +++--- doc/html/fusion/adapted/adapt_assoc_adt.html | 10 +++--- .../adapted/adapt_assoc_struct_named.html | 10 +++--- .../fusion/adapted/adapt_assoc_tpl_adt.html | 10 +++--- .../adapted/adapt_assoc_tpl_struct.html | 10 +++--- doc/html/fusion/adapted/adapt_struct.html | 10 +++--- .../fusion/adapted/adapt_struct_named.html | 10 +++--- doc/html/fusion/adapted/adapt_tpl_adt.html | 10 +++--- doc/html/fusion/adapted/adapt_tpl_struct.html | 10 +++--- doc/html/fusion/adapted/array.html | 6 ++-- doc/html/fusion/adapted/boost__array.html | 8 ++--- doc/html/fusion/adapted/boost__tuple.html | 8 ++--- .../fusion/adapted/define_assoc_struct.html | 10 +++--- .../adapted/define_assoc_tpl_struct.html | 10 +++--- doc/html/fusion/adapted/define_struct.html | 8 ++--- .../fusion/adapted/define_tpl_struct.html | 10 +++--- doc/html/fusion/adapted/mpl_sequence.html | 8 ++--- doc/html/fusion/adapted/std__pair.html | 8 ++--- doc/html/fusion/algorithm.html | 6 ++-- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 ++++---- .../algorithm/iteration/functions/fold.html | 14 ++++---- .../iteration/functions/for_each.html | 14 ++++---- .../iteration/functions/iter_fold.html | 14 ++++---- .../iteration/functions/reverse_fold.html | 14 ++++---- .../functions/reverse_iter_fold.html | 14 ++++---- .../iteration/metafunctions/accumulate.html | 12 +++---- .../iteration/metafunctions/fold.html | 12 +++---- .../iteration/metafunctions/for_each.html | 12 +++---- .../iteration/metafunctions/iter_fold.html | 12 +++---- .../iteration/metafunctions/reverse_fold.html | 12 +++---- .../metafunctions/reverse_iter_fold.html | 12 +++---- doc/html/fusion/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 ++++---- .../fusion/algorithm/query/functions/any.html | 14 ++++---- .../algorithm/query/functions/count.html | 14 ++++---- .../algorithm/query/functions/count_if.html | 14 ++++---- .../algorithm/query/functions/find.html | 14 ++++---- .../algorithm/query/functions/find_if.html | 12 +++---- .../algorithm/query/functions/none.html | 14 ++++---- .../algorithm/query/metafunctions/all.html | 12 +++---- .../algorithm/query/metafunctions/any.html | 12 +++---- .../algorithm/query/metafunctions/count.html | 12 +++---- .../query/metafunctions/count_if.html | 12 +++---- .../algorithm/query/metafunctions/find.html | 12 +++---- .../query/metafunctions/find_if.html | 12 +++---- .../algorithm/query/metafunctions/none.html | 12 +++---- doc/html/fusion/algorithm/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 | 18 +++++----- .../transformation/metafunctions/zip.html | 10 +++--- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 ++++---- doc/html/fusion/container/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/container/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 | 14 ++++---- .../generation/functions/make_set.html | 14 ++++---- .../generation/functions/make_vector.html | 14 ++++---- .../generation/functions/map_tie.html | 12 +++---- .../container/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 | 14 ++++---- .../generation/metafunctions/make_set.html | 12 +++---- .../generation/metafunctions/make_vector.html | 12 +++---- .../generation/metafunctions/map_tie.html | 12 +++---- .../generation/metafunctions/vector_tie.html | 12 +++---- doc/html/fusion/container/list.html | 14 ++++---- doc/html/fusion/container/map.html | 14 ++++---- doc/html/fusion/container/set.html | 14 ++++---- doc/html/fusion/container/vector.html | 14 ++++---- doc/html/fusion/extension/ext_full.html | 16 ++++----- .../fusion/extension/iterator_facade.html | 14 ++++---- .../fusion/extension/sequence_facade.html | 14 ++++---- doc/html/fusion/functional.html | 8 ++--- .../fusion/functional/adapters/fused.html | 16 ++++----- .../adapters/fused_function_object.html | 16 ++++----- .../functional/adapters/fused_procedure.html | 16 ++++----- .../fusion/functional/adapters/limits.html | 4 +-- .../fusion/functional/adapters/unfused.html | 16 ++++----- .../functional/adapters/unfused_typed.html | 16 ++++----- .../fusion/functional/concepts/callable.html | 6 ++-- .../functional/concepts/def_callable.html | 10 +++--- doc/html/fusion/functional/concepts/poly.html | 10 +++--- .../functional/concepts/reg_callable.html | 10 +++--- .../generation/functions/mk_fused.html | 14 ++++---- .../generation/functions/mk_fused_fobj.html | 14 ++++---- .../generation/functions/mk_fused_proc.html | 14 ++++---- .../generation/functions/mk_unfused.html | 14 ++++---- .../generation/metafunctions/mk_fused.html | 8 ++--- .../metafunctions/mk_fused_fobj.html | 8 ++--- .../metafunctions/mk_fused_proc.html | 8 ++--- .../generation/metafunctions/mk_unfused.html | 8 ++--- .../invocation/functions/invoke.html | 14 ++++---- .../invocation/functions/invoke_fobj.html | 14 ++++---- .../invocation/functions/invoke_proc.html | 14 ++++---- .../fusion/functional/invocation/limits.html | 4 +-- .../invocation/metafunctions/invoke.html | 6 ++-- .../invocation/metafunctions/invoke_fobj.html | 6 ++-- .../invocation/metafunctions/invoke_proc.html | 6 ++-- doc/html/fusion/introduction.html | 4 +-- doc/html/fusion/iterator.html | 2 +- .../concepts/associative_iterator.html | 10 +++--- .../concepts/bidirectional_iterator.html | 14 ++++---- .../iterator/concepts/forward_iterator.html | 12 +++---- .../concepts/random_access_iterator.html | 10 +++--- .../fusion/iterator/functions/advance.html | 12 +++---- .../fusion/iterator/functions/advance_c.html | 12 +++---- doc/html/fusion/iterator/functions/deref.html | 12 +++---- .../fusion/iterator/functions/deref_data.html | 12 +++---- .../fusion/iterator/functions/distance.html | 12 +++---- doc/html/fusion/iterator/functions/next.html | 12 +++---- doc/html/fusion/iterator/functions/prior.html | 12 +++---- .../iterator/metafunctions/advance.html | 12 +++---- .../iterator/metafunctions/advance_c.html | 12 +++---- .../fusion/iterator/metafunctions/deref.html | 12 +++---- .../iterator/metafunctions/deref_data.html | 12 +++---- .../iterator/metafunctions/distance.html | 12 +++---- .../iterator/metafunctions/equal_to.html | 12 +++---- .../fusion/iterator/metafunctions/key_of.html | 12 +++---- .../fusion/iterator/metafunctions/next.html | 12 +++---- .../fusion/iterator/metafunctions/prior.html | 12 +++---- .../iterator/metafunctions/value_of.html | 12 +++---- .../iterator/metafunctions/value_of_data.html | 12 +++---- .../iterator/operator/operator_equality.html | 10 +++--- .../operator/operator_inequality.html | 10 +++--- .../operator/operator_unary_star.html | 12 +++---- doc/html/fusion/notes.html | 18 +++++----- doc/html/fusion/organization.html | 10 +++--- doc/html/fusion/preface.html | 10 +++--- doc/html/fusion/quick_start.html | 18 +++++----- doc/html/fusion/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 +-- .../concepts/associative_sequence.html | 10 +++--- .../concepts/bidirectional_sequence.html | 12 +++---- .../sequence/concepts/forward_sequence.html | 12 +++---- .../concepts/random_access_sequence.html | 12 +++---- doc/html/fusion/sequence/intrinsic.html | 6 ++-- .../sequence/intrinsic/functions/at.html | 12 +++---- .../sequence/intrinsic/functions/at_c.html | 12 +++---- .../sequence/intrinsic/functions/at_key.html | 12 +++---- .../sequence/intrinsic/functions/back.html | 12 +++---- .../sequence/intrinsic/functions/begin.html | 12 +++---- .../sequence/intrinsic/functions/empty.html | 12 +++---- .../sequence/intrinsic/functions/end.html | 12 +++---- .../sequence/intrinsic/functions/front.html | 12 +++---- .../sequence/intrinsic/functions/has_key.html | 12 +++---- .../sequence/intrinsic/functions/size.html | 12 +++---- .../sequence/intrinsic/functions/swap.html | 10 +++--- .../sequence/intrinsic/metafunctions/at.html | 16 ++++----- .../intrinsic/metafunctions/at_c.html | 16 ++++----- .../intrinsic/metafunctions/at_key.html | 16 ++++----- .../intrinsic/metafunctions/back.html | 12 +++---- .../intrinsic/metafunctions/begin.html | 12 +++---- .../intrinsic/metafunctions/empty.html | 12 +++---- .../sequence/intrinsic/metafunctions/end.html | 12 +++---- .../intrinsic/metafunctions/front.html | 12 +++---- .../intrinsic/metafunctions/has_key.html | 12 +++---- .../intrinsic/metafunctions/size.html | 12 +++---- .../intrinsic/metafunctions/swap.html | 10 +++--- .../intrinsic/metafunctions/value_at.html | 12 +++---- .../intrinsic/metafunctions/value_at_c.html | 12 +++---- .../intrinsic/metafunctions/value_at_key.html | 12 +++---- .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 12 +++---- .../operator/comparison/greater_than.html | 10 +++--- .../comparison/greater_than_equal.html | 10 +++--- .../operator/comparison/less_than.html | 10 +++--- .../operator/comparison/less_than_equal.html | 10 +++--- .../operator/comparison/not_equal.html | 10 +++--- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 +++---- .../fusion/sequence/operator/i_o/out.html | 12 +++---- doc/html/fusion/support/category_of.html | 12 +++---- doc/html/fusion/support/deduce.html | 10 +++--- doc/html/fusion/support/deduce_sequence.html | 10 +++--- 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/tuple/class_template_tuple.html | 2 +- .../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/tuple/pairs.html | 4 +-- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 ++++---- doc/html/fusion/view/iterator_range.html | 14 ++++---- doc/html/fusion/view/joint_view.html | 14 ++++---- doc/html/fusion/view/nview.html | 14 ++++---- doc/html/fusion/view/repetitive_view.html | 14 ++++---- doc/html/fusion/view/reverse_view.html | 12 +++---- doc/html/fusion/view/single_view.html | 12 +++---- doc/html/fusion/view/transform_view.html | 12 +++---- doc/html/fusion/view/zip_view.html | 14 ++++---- doc/html/index.html | 4 +-- .../boost/fusion/container/deque/deque.hpp | 1 + .../deque/detail/is_sequence_impl.hpp | 33 +++++++++++++++++++ .../container/vector/detail/vector_n.hpp | 11 +++---- ...fused_lvalue_args.hpp => make_unfused.hpp} | 11 ++++--- .../fusion/include/make_unfused_generic.hpp | 12 ------- .../include/make_unfused_lvalue_args.hpp | 12 ------- .../include/make_unfused_rvalue_args.hpp | 12 ------- .../{unfused_generic.hpp => unfused.hpp} | 9 ++--- .../fusion/include/unfused_rvalue_args.hpp | 12 ------- .../comparison/detail/enable_comparison.hpp | 11 ++++--- .../boost/fusion/sequence/intrinsic/begin.hpp | 14 ++++++-- .../boost/fusion/sequence/intrinsic/end.hpp | 14 ++++++-- .../fusion/support/detail/is_mpl_sequence.hpp | 4 +-- include/boost/fusion/support/is_sequence.hpp | 7 ++-- .../boost/fusion/support/sequence_base.hpp | 13 ++++++-- 264 files changed, 1488 insertions(+), 1466 deletions(-) create mode 100644 include/boost/fusion/container/deque/detail/is_sequence_impl.hpp rename include/boost/fusion/include/{unfused_lvalue_args.hpp => make_unfused.hpp} (58%) delete mode 100644 include/boost/fusion/include/make_unfused_generic.hpp delete mode 100644 include/boost/fusion/include/make_unfused_lvalue_args.hpp delete mode 100644 include/boost/fusion/include/make_unfused_rvalue_args.hpp rename include/boost/fusion/include/{unfused_generic.hpp => unfused.hpp} (63%) delete mode 100644 include/boost/fusion/include/unfused_rvalue_args.hpp diff --git a/doc/fusion.qbk b/doc/fusion.qbk index e7138610..4b9bea03 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -316,7 +316,7 @@ [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 __organization__ [link fusion.organization Organization]] [def __extension__ [link fusion.extension Extension]] [def __sequence_facade__ [link fusion.extension.sequence_facade `sequence_facade`]] [def __iterator_facade__ [link fusion.extension.iterator_facade `iterator_facade`]] diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 4eb45c5c..44ff466e 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -60,7 +60,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

    #include <boost/fusion/adapted.hpp>
    diff --git a/doc/html/fusion/adapted/adapt_adt.html b/doc/html/fusion/adapted/adapt_adt.html
    index 8fcd7484..dd658ee0 100644
    --- a/doc/html/fusion/adapted/adapt_adt.html
    +++ b/doc/html/fusion/adapted/adapt_adt.html
    @@ -32,7 +32,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ADT(
    @@ -43,7 +43,7 @@
         )
     
    - + Expression Semantics
    @@ -88,14 +88,14 @@ should be the fully namespace qualified name of the class type to be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
     #include <boost/fusion/include/adapt_adt.hpp>
     
    - + Example
    namespace demo
    @@ -141,7 +141,7 @@
     std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index df42c761..86eca0da 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT

    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    @@ -48,7 +48,7 @@
         )
     
    - + Semantics

    @@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_assoc_adt.html b/doc/html/fusion/adapted/adapt_assoc_adt.html
    index 4f56eddc..1053f18b 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_adt.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_adt.html
    @@ -34,7 +34,7 @@
             Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_ADT(
    @@ -45,7 +45,7 @@
         )
     
    - + Expression Semantics
    @@ -92,14 +92,14 @@ should be the fully namespace qualified name of the class type to be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
     #include <boost/fusion/include/adapt_assoc_adt.hpp>
     
    - + Example
    namespace demo
    @@ -151,7 +151,7 @@
     std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html index 48270fc3..205acc19 100644 --- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html +++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED

    - + Description

    @@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    @@ -58,7 +58,7 @@
         )
     
    - + Semantics

    @@ -83,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
     #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    index d383b1f5..ff420185 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    @@ -34,7 +34,7 @@
             Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_ADT(
    @@ -46,7 +46,7 @@
         )
     
    - + Expression Semantics
    @@ -98,14 +98,14 @@ be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
     #include <boost/fusion/include/adapt_assoc_adt.hpp>
     
    - + Example
    namespace demo
    @@ -159,7 +159,7 @@
     std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html index 7684c30a..4391918f 100644 --- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
    @@ -50,7 +50,7 @@
         )
     
    - + Semantics

    @@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 5d9d2d40..57974449 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT
     
     
    - + Description

    @@ -36,7 +36,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT(
    @@ -47,7 +47,7 @@
         )
     
    - + Semantics

    @@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html
    index 53dac8f2..013db743 100644
    --- a/doc/html/fusion/adapted/adapt_struct_named.html
    +++ b/doc/html/fusion/adapted/adapt_struct_named.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT_NAMED
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT_NAMED(
    @@ -57,7 +57,7 @@
         )
     
    - + Semantics

    @@ -81,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
     #include <boost/fusion/include/adapt_struct_named.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/adapt_tpl_adt.html b/doc/html/fusion/adapted/adapt_tpl_adt.html
    index bbeb9895..05b829af 100644
    --- a/doc/html/fusion/adapted/adapt_tpl_adt.html
    +++ b/doc/html/fusion/adapted/adapt_tpl_adt.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ADT(
    @@ -45,7 +45,7 @@
         )
     
    - + Expression Semantics
    @@ -95,14 +95,14 @@ be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
     #include <boost/fusion/include/adapt_adt.hpp>
     
    - + Example
      namespace demo
    @@ -150,7 +150,7 @@
       std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html index 2b9cffac..17e32d4e 100644 --- a/doc/html/fusion/adapted/adapt_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_TPL_STRUCT

    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_TPL_STRUCT(
    @@ -49,7 +49,7 @@
         )
     
    - + Semantics

    @@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html
    index 6f2da6f3..8cffb415 100644
    --- a/doc/html/fusion/adapted/array.html
    +++ b/doc/html/fusion/adapted/array.html
    @@ -32,14 +32,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     
    - + Model of
    • @@ -47,7 +47,7 @@ Access Sequence
    - + Example
    int arr[3] = {1,2,3};
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index 1c19dba3..61726eb3 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -33,14 +33,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/boost_array.hpp>
     #include <boost/fusion/include/boost_array.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    boost::array<int,3> arr = {{1,2,3}};
    @@ -60,7 +60,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index 1c7b67c5..4f6a2d89 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -33,21 +33,21 @@ Sequence.

    - + Header
    #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     
    - + Model of
    - + Example
    boost::tuple<int,std::string> example_tuple(101, "hello");
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index ef391820..c2668af2 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_DEFINE_ASSOC_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_STRUCT(
    @@ -68,7 +68,7 @@
     
     
     
    - + Expression Semantics
    @@ -182,14 +182,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    index 45da1e1b..35f40611 100644
    --- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT
     
     
    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
    @@ -73,7 +73,7 @@
     
     
     
    - + Expression Semantics
    @@ -187,14 +187,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html
    index 24e4163f..72641a19 100644
    --- a/doc/html/fusion/adapted/define_struct.html
    +++ b/doc/html/fusion/adapted/define_struct.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_DEFINE_STRUCT(
    @@ -63,7 +63,7 @@
     
     
     
    - + Expression Semantics
    @@ -174,14 +174,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // demo::employee is a Fusion sequence
    diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html
    index beee5413..961767ae 100644
    --- a/doc/html/fusion/adapted/define_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_tpl_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_DEFINE_TPL_STRUCT
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_TPL_STRUCT(
    @@ -72,7 +72,7 @@
     
     
     
    - + Expression Semantics
    @@ -183,14 +183,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    // Any instantiated demo::employee is a Fusion sequence
    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html
    index c0d4f676..0a1a0a07 100644
    --- a/doc/html/fusion/adapted/mpl_sequence.html
    +++ b/doc/html/fusion/adapted/mpl_sequence.html
    @@ -32,14 +32,14 @@
             sequences fully conforming fusion sequences.
           

    - + Header
    #include <boost/fusion/adapted/mpl.hpp>
     #include <boost/fusion/include/mpl.hpp>
     
    - + Model of
      @@ -60,7 +60,7 @@
    - + Example
    mpl::vector_c<int, 123, 456> vec_c;
    @@ -73,7 +73,7 @@
     std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 57a7156f..d1e7daa9 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,14 +33,14 @@ Access Sequence.

    - + Header
    #include <boost/fusion/adapted/std_pair.hpp>
     #include <boost/fusion/include/std_pair.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    std::pair<int, std::string> p(123, "Hola!!!");
    @@ -57,7 +57,7 @@
     std::cout << p << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 8f340b45..cf2bd9c5 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -44,7 +44,7 @@

    - + Lazy Evaluation

    @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

    - + Sequence Extension

    @@ -87,7 +87,7 @@ functions to convert back to the original sequence type.

    - + Header

    #include <boost/fusion/algorithm.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index d69beea1..fa060887 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -35,7 +35,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header
    #include <boost/fusion/algorithm/iteration.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    index 40e86964..6c356758 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    @@ -27,7 +27,7 @@
     accumulate
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index de1904c9..aea7dc00 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -27,7 +27,7 @@
     fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index 5cda6620..62a259eb 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    @@ -27,14 +27,14 @@
     for_each
     
     
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence& seq, F f);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -126,21 +126,21 @@ in seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    struct increment
    diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    index 9d945a65..f57905b5 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    @@ -27,7 +27,7 @@
     iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
     #include <boost/fusion/include/iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    index c2e401a4..7c3cd0f6 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    @@ -27,7 +27,7 @@
     reverse_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
     #include <boost/fusion/include/reverse_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    index 01aec32a..59a63666 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    @@ -27,7 +27,7 @@
     reverse_iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ if it is the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
     #include <boost/fusion/include/reverse_iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    index e08e2337..1091af0b 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    @@ -27,14 +27,14 @@
     accumulate
     
     
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index af5af651..3ad9dee0 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -27,14 +27,14 @@
     fold
     
     
    - + Description

    Returns the result type of fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index 980d4928..0768c556 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -31,11 +31,11 @@
                 return type of for_each is always void.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    index 37ad8cc6..5c677baf 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    @@ -27,14 +27,14 @@
     iter_fold
     
     
    - + Description

    Returns the result type of iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    index b5b86571..55263c08 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    @@ -27,14 +27,14 @@
     reverse_fold
     
     
    - + Description

    Returns the result type of reverse_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    index f742f54b..78af3283 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    @@ -27,14 +27,14 @@
     reverse_iter_fold
     
     
    - + Description

    Returns the result type of reverse_iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index b1f1df29..5bd7035d 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -34,7 +34,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header
    #include <boost/fusion/algorithm/query.hpp>
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
    index 9d08e0cf..25aa9ed7 100644
    --- a/doc/html/fusion/algorithm/query/functions/all.html
    +++ b/doc/html/fusion/algorithm/query/functions/all.html
    @@ -27,7 +27,7 @@
     all
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index be11dbc2..dc41c38a 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/query/functions/any.html
    @@ -27,7 +27,7 @@
     any
     
     
    - + Description

    @@ -38,7 +38,7 @@ least one element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -116,7 +116,7 @@

    - + Expression semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index 2664a844..ae6faaad 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/query/functions/count.html
    @@ -27,14 +27,14 @@
     count
     
     
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -128,21 +128,21 @@ t in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    const vector<double,int,int> vec(1.0,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index 26b49a37..ed672eee 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -127,21 +127,21 @@ in seq where f evaluates to true.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    const vector<int,int,int> vec(1,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index ae02ff6e..6e64cf61 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/query/functions/find.html
    @@ -27,14 +27,14 @@
     find
     
     
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    const vector<char,int> vec('a','0');
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index 3d729190..db2d476e 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
    @@ -32,11 +32,11 @@
                 Lambda Expression evaluates to boost::mpl::true_.
               

    - + Description
    - + Synopsis
    template<
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -117,7 +117,7 @@

    - + Expression Semantics
    @@ -135,7 +135,7 @@ if there is no such element.

    - + Complexity

    @@ -150,7 +150,7 @@

    - + Example
    const vector<double,int> vec(1.0,2);
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index 54eab623..62fdae08 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/query/functions/none.html
    @@ -27,7 +27,7 @@
     none
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
    index 2a503ac0..e03920f1 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
    @@ -27,14 +27,14 @@
     all
     
     
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index 5a5b87df..29c0ac44 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -27,14 +27,14 @@
     any
     
     
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index 88f4eb89..bd9d6664 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -27,7 +27,7 @@
     count
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index 45c46890..a8611466 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index c00519b0..cfb81518 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -27,7 +27,7 @@
     find
     
     
    - + Description

    @@ -35,7 +35,7 @@ search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index 3f90d59f..435d3f4d 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -27,7 +27,7 @@
     find_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index 89832593..ca99c2e5 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -27,14 +27,14 @@
     none
     
     
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index b645f45c..491f4041 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -47,7 +47,7 @@
             

    - + Header
    #include <boost/fusion/algorithm/transformation.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index 324ac0aa..2b4d93bb 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html
    @@ -27,14 +27,14 @@
     clear
     
     
    - + Description

    clear returns an empty sequence.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,21 +103,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    assert(clear(make_vector(1,2,3)) == make_vector());
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index f858446a..f8a1dcd7 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
    @@ -27,7 +27,7 @@
     erase
     
     
    - + Description

    @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    template<
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.73. Parameters

    +

    Table 1.73. Parameters

    @@ -138,7 +138,7 @@

    - + Expression Semantics
    @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    const vector<int, double, char> vec(1, 2.0, 'c');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index 32ce3ba8..e1a544d4 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -39,7 +39,7 @@ key.

    - + Synposis
    template<
    @@ -49,7 +49,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index 38084461..f560c033 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ the elements of a specified type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    const vector<int,int,long,long> vec(1,2,3,4);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index dfb86f83..cbd9be77 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -140,21 +140,21 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    const vector<int,int,double,double> vec(1,2,3.0,4.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index bdeb8e22..dc807048 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -129,7 +129,7 @@

    - + Expression Semantics
    @@ -150,21 +150,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index fb863ac1..d164f890 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -130,7 +130,7 @@

    - + Expression Semantics
    @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 1746f17a..400ac309 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
    @@ -27,7 +27,7 @@
     join
     
     
    - + Description

    @@ -35,7 +35,7 @@ first followed by the elements of the second.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ The order of the elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index 014e013c..34f1968b 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    @@ -27,14 +27,14 @@
     pop_back
     
     
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 84ee9bc4..70e668a2 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    @@ -27,14 +27,14 @@
     pop_front
     
     
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index bc0deafe..c13a7d7a 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    @@ -27,14 +27,14 @@
     push_back
     
     
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -129,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>
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index cc49e6a7..fa15b654 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    @@ -27,14 +27,14 @@
     push_front
     
     
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -130,21 +130,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index 14d128f9..a567cd6e 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ except those of a given type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index 39f930ad..1ff5fb50 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -139,21 +139,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index dfb11294..1cfb9f92 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ a new value.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index 9376c1cd..0adf2832 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ replaced with a new value.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index e8603fe8..e17d4804 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -27,14 +27,14 @@
     reverse
     
     
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -120,21 +120,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index baffee7a..7804e2bb 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -134,7 +134,7 @@ within seq.

    - + Binary version synopsis
    @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index 3deb8ac5..b4b3281d 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -114,21 +114,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index 156d6c56..e6d828c7 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -27,7 +27,7 @@
     clear
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.92. Parameters

    +

    Table 1.92. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index 6c2fb350..9ec3b4e3 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -31,11 +31,11 @@
                 and range delimiting iterator types.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -168,14 +168,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index 8479612b..db12afa0 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -35,7 +35,7 @@ and key types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.94. Parameters

    +

    Table 1.94. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index e712f7cf..f6d65edb 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ and type to retain.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.83. Parameter

    +

    Table 1.83. Parameter

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 1335c1de..5df33319 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate type.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameter

    +

    Table 1.84. Parameter

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index c77848bd..a79fe589 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ position iterator and insertion types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.95. Parameters

    +

    Table 1.95. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -151,14 +151,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index 6b9b1246..d84977f5 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.96. Parameters

    +

    Table 1.96. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -160,14 +160,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 10039676..0556673f 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -27,14 +27,14 @@
     join
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 8adbc3aa..14695723 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -27,7 +27,7 @@
     pop_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.97. Parameters

    +

    Table 1.97. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index 0aac263a..ed609fd7 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -27,7 +27,7 @@
     pop_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.98. Parameters

    +

    Table 1.98. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    index 80deaeb1..ea1789e6 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    @@ -27,7 +27,7 @@
     push_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.99. Parameters

    +

    Table 1.99. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    index d56b0a9d..d5956a5c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    @@ -27,7 +27,7 @@
     push_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.100. Parameters

    +

    Table 1.100. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    index c431b7b9..0ff1ab0b 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ removal types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index e40caf8c..6acc998d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index 3af76a8b..f20b0662 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to replace.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index 6de3608c..c8eac0c8 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -146,14 +146,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index bd1cff24..cda4da02 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -27,7 +27,7 @@
     reverse
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index ea79a55c..b549428d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -145,7 +145,7 @@ within seq.

    - + Binary version synopsis
    @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 8eebaa94..764c7cb1 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -72,14 +72,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
    diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html
    index 8fb8ce77..456e8d6b 100644
    --- a/doc/html/fusion/container.html
    +++ b/doc/html/fusion/container.html
    @@ -49,7 +49,7 @@
           These containers are more or less counterparts of those in STL.
         

    - + Header

    #include <boost/fusion/container.hpp>
    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index 853268e5..80af5567 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -27,7 +27,7 @@
     cons
     
     
    - + Description

    @@ -42,21 +42,21 @@ Inlined Functions).

    - + Header
    #include <boost/fusion/container/list/cons.hpp>
     #include <boost/fusion/include/cons.hpp>
     
    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct cons;
     
    - + Template parameters
    @@ -117,7 +117,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -292,7 +292,7 @@

    - + Example
    cons<int, cons<float> > l(12, cons<float>(5.5f));
    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index 4fa03fd3..b60fd0cc 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -35,7 +35,7 @@
             types using one of these conversion functions.
           

    - + Header
    #include <boost/fusion/include/convert.hpp>
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
    index caf00535..c3f33bbc 100644
    --- a/doc/html/fusion/container/conversion/functions/as_list.html
    +++ b/doc/html/fusion/container/conversion/functions/as_list.html
    @@ -27,14 +27,14 @@
     as_list
     
     
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    as_list(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index b1236172..c115fe43 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/conversion/functions/as_map.html
    @@ -27,14 +27,14 @@
     as_map
     
     
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    as_map(make_vector(
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index 6fcf10aa..789ebdea 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/conversion/functions/as_set.html
    @@ -27,14 +27,14 @@
     as_set
     
     
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    as_set(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index a07e5c2b..f9f1ab9d 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/functions/as_vector.html
    @@ -27,14 +27,14 @@
     as_vector
     
     
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    as_vector(make_list('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    index dd989ee1..c68d40df 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    @@ -27,21 +27,21 @@
     as_list
     
     
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    template <typename Sequence>
     struct as_list;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    result_of::as_list<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index d8fc643f..af5c29a0 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    @@ -27,21 +27,21 @@
     as_map
     
     
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    template <typename Sequence>
     struct as_map;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    result_of::as_map<vector<
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index 8158fa2f..c2f1d5ac 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    @@ -27,21 +27,21 @@
     as_set
     
     
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    template <typename Sequence>
     struct as_set;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    result_of::as_set<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index fc18284c..e735e215 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    @@ -27,21 +27,21 @@
     as_vector
     
     
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    template <typename Sequence>
     struct as_vector;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    result_of::as_vector<list<char, int> >::type
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index 1e0c6e3b..e6a2893b 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -34,7 +34,7 @@
             These are the functions that you can use to generate various forms of Container from elemental values.
           

    - + Header
    #include <boost/fusion/container/generation.hpp>
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
    index a2acc87f..ae8e573b 100644
    --- a/doc/html/fusion/container/generation/functions/list_tie.html
    +++ b/doc/html/fusion/container/generation/functions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index f88fc4c0..9142fa0c 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -27,7 +27,7 @@
     make_cons
     
     
    - + Description

    @@ -36,7 +36,7 @@ and optional cdr (tail).

    - + Synopsis
    template <typename Car>
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -127,20 +127,20 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 261cc59d..6d0de250 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -27,7 +27,7 @@ make_list
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 05e02f18..5d313b40 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -27,7 +27,7 @@ make_map
    - + Description

    @@ -35,7 +35,7 @@ from one or more key/data pairs.

    - + Synopsis
    template <
    @@ -55,7 +55,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,20 +143,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    make_map<int, double>('X', "Men")
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 54de41c9..74905a30 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -27,7 +27,7 @@ make_set
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -117,20 +117,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    make_set(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index 60e8abb9..e654f05d 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -27,7 +27,7 @@ make_vector
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
    make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index ee473b56..3438f140 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -27,14 +27,14 @@ map_tie
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index a6991616..58db9d7e 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -54,7 +54,7 @@
                 The vector_tie function creates
                 a vector
                 of type vector<int&, char&, double&>. The same result could be achieved
    -            with the call make_vector(ref(i), ref(c), ref(a)) [9].
    +            with the call make_vector(ref(i), ref(c), ref(a)) [9].
               

    A tie can be used to 'unpack' another tuple into @@ -70,7 +70,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -84,7 +84,7 @@



    -

    [9] +

    [9] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index a07b8115..27acc91f 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -27,14 +27,14 @@ vector_tie
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    index f31f0f6a..e99b25b9 100644
    --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    result_of::list_tie<int, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index e958b352..ec8635f5 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    @@ -27,21 +27,21 @@
     make_cons
     
     
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct make_cons;
     
    - + Parameters
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    result_of::make_cons<char, result_of::make_cons<int>::type>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index c2af09ce..b680eebb 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
    @@ -27,14 +27,14 @@
     make_list
     
     
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_list<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index bae76a1e..a056a9ab 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
    @@ -27,14 +27,14 @@
     make_map
     
     
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    template <
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -140,20 +140,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    result_of::make_map<int, double, char, double>::type
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index b398b16b..be5d1752 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -27,14 +27,14 @@ make_set
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    result_of::make_set<int, char, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    index 413a7f61..447aa4b7 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    @@ -27,14 +27,14 @@
     make_vector
     
     
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_vector<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index 3e46889a..d5114a43 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -27,14 +27,14 @@
     map_tie
     
     
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -119,7 +119,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index 8d545419..97593bbe 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -27,14 +27,14 @@
     vector_tie
     
     
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    result_of::vector_tie<int, double>::type
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index 15eb0ddf..dd4c5368 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/list.html
    @@ -27,7 +27,7 @@
     list
     
     
    - + Description

    @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    #include <boost/fusion/container/list.hpp>
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -75,7 +75,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    • @@ -154,7 +154,7 @@
    - + Expression Semantics

    @@ -261,7 +261,7 @@

    - + Example
    list<int, float> l(12, 5.5f);
    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index f8bd46f4..376623c8 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -27,7 +27,7 @@
     map
     
     
    - + Description

    @@ -40,7 +40,7 @@ (see Overloaded Functions).

    - + Header
    #include <boost/fusion/container/map.hpp>
    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -77,7 +77,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -122,7 +122,7 @@
    - + Model of
      @@ -157,7 +157,7 @@
    - + Expression Semantics

    @@ -241,7 +241,7 @@

    - + Example
    typedef map<
    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index 9252403f..b6833c2e 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -27,7 +27,7 @@
     set
     
     
    - + Description

    @@ -39,7 +39,7 @@ Functions).

    - + Header
    #include <boost/fusion/container/set.hpp>
    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -76,7 +76,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -121,7 +121,7 @@
    - + Model of
      @@ -156,7 +156,7 @@
    - + Expression Semantics

    @@ -240,7 +240,7 @@

    - + Example
    typedef set<int, float> S;
    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index 52346a63..b7adbfa2 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -27,7 +27,7 @@
     vector
     
     
    - + Description

    @@ -39,7 +39,7 @@ efficient.

    - + Header
    #include <boost/fusion/container/vector.hpp>
    @@ -60,7 +60,7 @@
     #include <boost/fusion/include/vector50.hpp>
     
    - + Synopsis

    @@ -115,7 +115,7 @@

    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -160,7 +160,7 @@
    - + Model of
    • @@ -190,7 +190,7 @@
    - + Expression Semantics

    @@ -273,7 +273,7 @@

    - + Example
    vector<int, float> v(12, 5.5f);
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index 3ff36d2c..b1285f09 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -50,7 +50,7 @@
               
     
     
    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching
    @@ -121,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
    - + Designing a suitable iterator
    @@ -183,7 +183,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features
    @@ -323,7 +323,7 @@

    - + Implementing the remaining iterator functionality
    @@ -374,7 +374,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence
    @@ -430,7 +430,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative sequence
    @@ -495,7 +495,7 @@ are provided in the example code.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 2c61d4c9..58b73e5b 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -27,7 +27,7 @@ Iterator Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     
    - + Usage

    @@ -57,7 +57,7 @@ type.

    -

    Table 1.103. Parameters

    +

    Table 1.103. Parameters

    @@ -106,7 +106,7 @@

    -

    Table 1.104. Key Expressions

    +

    Table 1.104. Key Expressions

    @@ -439,14 +439,14 @@

    - + Header
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 6c0c590c..19e9a1c5 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -27,7 +27,7 @@ Sequence Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     
    - + Usage

    @@ -59,7 +59,7 @@ type.

    -

    Table 1.101. Parameters

    +

    Table 1.101. Parameters

    @@ -107,7 +107,7 @@

    -

    Table 1.102. Key Expressions

    +

    Table 1.102. Key Expressions

    @@ -244,14 +244,14 @@

    - + Include
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 2e5648fb..4cc11d9a 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -63,13 +63,13 @@ through a function object interface.

    - + Header

    #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -103,7 +103,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 62f9c979..917bb642 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -27,7 +27,7 @@ fused
    - + Description

    @@ -54,20 +54,20 @@ and boost::shared_ptr).

    - + Header
    #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -148,7 +148,7 @@
    - + Expression Semantics
    @@ -213,14 +213,14 @@
    - + Example
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 1f32a6c0..1e64065e 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -27,7 +27,7 @@ fused_function_object
    - + Description

    @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

    - + Header
    #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    template <class Function>
     class fused_function_object;
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
    @@ -139,7 +139,7 @@
    - + Expression Semantics
    @@ -204,7 +204,7 @@
    - + Example
    template<class SeqOfSeqs, class Func>
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index f68b25e9..a575b0fd 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -27,7 +27,7 @@ fused_procedure
    - + Description

    @@ -62,20 +62,20 @@ case is not implemented).

    - + Header
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -119,7 +119,7 @@
    - + Model of
    @@ -157,7 +157,7 @@
    - + Expression Semantics
    @@ -222,7 +222,7 @@
    - + Example
    template<class SequenceOfSequences, class Func>
    @@ -242,7 +242,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index d69821bc..b6f2f62e 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/adapter/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index 0c0408ae..c7169426 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -27,7 +27,7 @@ unfused

    - + Description

    @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

    - + Header
    #include <boost/fusion/functional/adapter/unfused.hpp>
     
    - + Synopsis
    template <class Function, bool AllowNullary = true>
     class unfused;
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
      @@ -174,7 +174,7 @@
    - + Expression Semantics
    @@ -239,7 +239,7 @@
    - + Example
    struct fused_incrementer
    @@ -266,7 +266,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index dd6d65d6..66836c24 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -27,7 +27,7 @@ unfused_typed
    - + Description

    @@ -66,20 +66,20 @@

    - + Header
    #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    template <class Function, class Sequence>
     class unfused_typed;
     
    - + Template parameters
    @@ -139,7 +139,7 @@
    - + Model of
    @@ -186,7 +186,7 @@
    - + Expression Semantics
    @@ -253,7 +253,7 @@
    - + Example
    struct add_assign // applies operator+=
    @@ -321,7 +321,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 92a85779..3e6b576d 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@ Callable Object
    - + Description

    @@ -36,7 +36,7 @@ of a function call operator.

    - + Models
      @@ -51,7 +51,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
    index 36ef24dd..1865c8c3 100644
    --- a/doc/html/fusion/functional/concepts/def_callable.html
    +++ b/doc/html/fusion/functional/concepts/def_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -117,7 +117,7 @@
    - + Models
      @@ -130,7 +130,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
    index 1c761781..68072114 100644
    --- a/doc/html/fusion/functional/concepts/poly.html
    +++ b/doc/html/fusion/functional/concepts/poly.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -36,7 +36,7 @@ Callable Object type.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -128,7 +128,7 @@
    - + Models
      @@ -143,7 +143,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
    index 4a96d751..c781fdcc 100644
    --- a/doc/html/fusion/functional/concepts/reg_callable.html
    +++ b/doc/html/fusion/functional/concepts/reg_callable.html
    @@ -28,7 +28,7 @@
             Object
     
     
    - + Description

    @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -67,7 +67,7 @@
    - + Expression requirements
    @@ -114,7 +114,7 @@
    - + Models
      @@ -126,7 +126,7 @@
    - + Examples
    & a_free_function
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
    index def6a9a5..0cb19dab 100644
    --- a/doc/html/fusion/functional/generation/functions/mk_fused.html
    +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html
    @@ -27,7 +27,7 @@
     make_fused
     
     
    - + Description

    @@ -36,7 +36,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -44,7 +44,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    float sub(float a, float b) { return a - b; }
    @@ -125,7 +125,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 ee23a767..f12f42cf 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -27,7 +27,7 @@ make_fused_function_object
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    struct sub
    @@ -140,7 +140,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 fb17bd84..1e194458 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -27,7 +27,7 @@ make_fused_procedure
    - + Description

    @@ -37,7 +37,7 @@ conversion applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    vector<int,int,int> v(1,2,3);
    @@ -121,7 +121,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index d269ae7a..3f143c92 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -27,7 +27,7 @@ make_unfused
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_unfused(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ Semantics: Returns a unfused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Example
    struct fused_incrementer
    @@ -137,7 +137,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 0e1fb91b..baa8421b 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -27,21 +27,21 @@ make_fused
    - + Description

    Returns the result type of make_fused.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 00c1cdd0..5cb845b0 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -27,21 +27,21 @@ make_fused_function_object
    - + Description

    Returns the result type of make_fused_function_object.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 d425e383..2b1d31b9 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -27,21 +27,21 @@ make_fused_procedure
    - + Description

    Returns the result type of make_fused_procedure.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 1f3b5675..5de11c9b 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -27,21 +27,21 @@ make_unfused
    - + Description

    Returns the result type of make_unfused.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 908b368c..16043212 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@ invoke
    - + Description

    @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -67,7 +67,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke.hpp>
     
    - + Example
    std::plus<int> add;
     assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index db60b1bc..48126b37 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -27,7 +27,7 @@ invoke_function_object
    - + Description

    @@ -42,7 +42,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -60,7 +60,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -126,7 +126,7 @@
    - + Expression Semantics
    @@ -142,13 +142,13 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
    struct sub
    @@ -174,7 +174,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 02575625..93df7d11 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -27,7 +27,7 @@ invoke_procedure
    - + Description

    @@ -51,7 +51,7 @@ isn't implemented).

    - + Synopsis
    template<
    @@ -69,7 +69,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -150,13 +150,13 @@ as arguments.

    - + Header
    #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    vector<int,int> v(1,2);
    @@ -165,7 +165,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 5ef5a7c9..8f1c12a0 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/invocation/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 69aa4e58..0dded429 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@ invoke

    - + Description

    Returns the result type of invoke.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 d5cb7c04..ffac9602 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -27,14 +27,14 @@ invoke_function_object
    - + Description

    Returns the result type of invoke_function_object.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 9b8e32aa..87d17c12 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -27,14 +27,14 @@ invoke_procedure
    - + Description

    Returns the result type of invoke_procedure.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 3a83d1e4..84404fde 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -116,7 +116,7 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types [1]. In MPL, + wish to work solely on types [1]. In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from @@ -130,7 +130,7 @@



    -

    [1] +

    [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 82f52649..9e34d958 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -81,7 +81,7 @@ Sequence.

    - + Header

    #include <boost/fusion/iterator.hpp>
    diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html
    index d701220f..e3baacc4 100644
    --- a/doc/html/fusion/iterator/concepts/associative_iterator.html
    +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html
    @@ -28,7 +28,7 @@
             Iterator
     
    - + Description

    @@ -50,7 +50,7 @@

    - + Refinement of
    @@ -61,7 +61,7 @@ Access Iterator

    - + Expression requirements
    @@ -113,7 +113,7 @@
    - + Meta Expressions
    @@ -174,7 +174,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 6c88b93b..24cc1fb7 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -58,7 +58,7 @@

    - + Refinement of
    @@ -66,7 +66,7 @@ Forward Iterator

    - + Expression requirements
    @@ -173,7 +173,7 @@
    - + Meta Expressions
    @@ -208,7 +208,7 @@
    - + Expression Semantics
    @@ -248,7 +248,7 @@
    - + Invariants

    @@ -269,7 +269,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 438a641a..17151961 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Expression requirements
    @@ -237,7 +237,7 @@
    - + Meta Expressions
    @@ -348,7 +348,7 @@
    - + Expression Semantics
    @@ -474,7 +474,7 @@
    - + Invariants

    @@ -505,7 +505,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 5431aa94..e478a45f 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -28,7 +28,7 @@ Access Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Refinement of
    @@ -68,7 +68,7 @@ Iterator

    - + Expression requirements
    @@ -175,7 +175,7 @@
    - + Meta Expressions
    @@ -238,7 +238,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index a1b8aeaf..4076eb58 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -27,14 +27,14 @@ advance
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i);
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -128,14 +128,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
    index c5d17e95..6a1866ac 100644
    --- a/doc/html/fusion/iterator/functions/advance_c.html
    +++ b/doc/html/fusion/iterator/functions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance_c<I, N>::type advance_c(I const& i);
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -108,7 +108,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
    index 27eeea41..8e373a1f 100644
    --- a/doc/html/fusion/iterator/functions/deref.html
    +++ b/doc/html/fusion/iterator/functions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -102,14 +102,14 @@ i.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
    index 1d6db2f5..c52acef4 100644
    --- a/doc/html/fusion/iterator/functions/deref_data.html
    +++ b/doc/html/fusion/iterator/functions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ an associative iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref_data<I>::type deref(I const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

    - + Header
    #include <boost/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int&> > map;
    diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
    index 5a54b64a..f51a8a3e 100644
    --- a/doc/html/fusion/iterator/functions/distance.html
    +++ b/doc/html/fusion/iterator/functions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ iterators i and j.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
    index a85ee728..18414f15 100644
    --- a/doc/html/fusion/iterator/functions/next.html
    +++ b/doc/html/fusion/iterator/functions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ next element after i.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
    index 696563cd..30d5ba4d 100644
    --- a/doc/html/fusion/iterator/functions/prior.html
    +++ b/doc/html/fusion/iterator/functions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ element prior to i.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,int> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
    index 0fd0b0f3..0c56cbb5 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance.html
    @@ -27,14 +27,14 @@
     advance
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
    index a5b07fde..98e5e753 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
    index b22ce67b..c485a0bb 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ an iterator of type I.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
    index f4ededf0..ba7aaa2c 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ referenced by an associative iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

    - + Header
    #include <boosta/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > map;
    diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
    index 28bc6830..a057e497 100644
    --- a/doc/html/fusion/iterator/metafunctions/distance.html
    +++ b/doc/html/fusion/iterator/metafunctions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -108,14 +108,14 @@ J.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
    index b9dd1274..7d0de7b4 100644
    --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
    @@ -27,7 +27,7 @@
     equal_to
     
     
    - + Description

    @@ -36,7 +36,7 @@ and J are equal.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
    index 03b23290..f540ab0b 100644
    --- a/doc/html/fusion/iterator/metafunctions/key_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/key_of.html
    @@ -27,7 +27,7 @@
     key_of
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

    - + Header
    #include <boost/fusion/iterator/key_of.hpp>
     #include <boost/fusion/include/key_of.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
    index 2df36ff2..f6b60220 100644
    --- a/doc/html/fusion/iterator/metafunctions/next.html
    +++ b/doc/html/fusion/iterator/metafunctions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ next element in the sequence after I.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
    index 71b88995..e6485d97 100644
    --- a/doc/html/fusion/iterator/metafunctions/prior.html
    +++ b/doc/html/fusion/iterator/metafunctions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ previous element in the sequence before I.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
    index 7ae116d9..a46f7887 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
    @@ -27,14 +27,14 @@
     value_of
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ a sequence at iterator position I.

    - + Header
    #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    - + Example
    typedef vector<int,int&,const int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    index 5875a6fd..1b340544 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    @@ -27,7 +27,7 @@
     value_of_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ by an associative iterator references.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -107,14 +107,14 @@ I.

    - + Header
    #include <boost/fusion/iterator/value_of_data.hpp>
     #include <boost/fusion/include/value_of_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
    index 710114ae..91809272 100644
    --- a/doc/html/fusion/iterator/operator/operator_equality.html
    +++ b/doc/html/fusion/iterator/operator/operator_equality.html
    @@ -28,14 +28,14 @@
             ==
     
     
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,7 +104,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index 61960ca8..13615788 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -28,14 +28,14 @@
             !=
     
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index 4ab2d9f3..ee682481 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -28,14 +28,14 @@
             *
     
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index 419f0044..ba6de759 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     Notes
     
     

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -101,7 +101,7 @@

    - + Extensibility

    @@ -136,7 +136,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -157,7 +157,7 @@ Arrays:

    - Array arguments are deduced to reference to const types. For example [10]: + Array arguments are deduced to reference to const types. For example [10]:

    make_list("Donald", "Daisy")
     
    @@ -185,7 +185,7 @@
    list<void (*)(int)>
     

    - + boost::ref

    @@ -224,7 +224,7 @@ details.

    - + adt_attribute_proxy

    @@ -456,7 +456,7 @@



    -

    [10] +

    [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 369830cf..32f8973a 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -35,7 +35,7 @@ The library is organized in three layers:

    - + Layers

    @@ -60,7 +60,7 @@ against.

    - + Directory

      @@ -191,7 +191,7 @@

    - + Example

    @@ -206,11 +206,11 @@

    The first includes all containers The second includes only list - [4]. + [4].



    -

    [4] +

    [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index cd81759c..47a8d4e5 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -33,7 +33,7 @@ --Niklaus Wirth

    - + Description

    @@ -51,7 +51,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -77,7 +77,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -85,7 +85,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -188,7 +188,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 79d4cd64..1cc6eeaf 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -34,13 +34,13 @@

    For starters, we shall include all of Fusion's Sequence(s) - [2]: + [2]:

    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     

    - Let's begin with a vector [3]: + Let's begin with a vector [3]:

    vector<int, char, std::string> stuff(1, 'x', "howdy");
     int i = at_c<0>(stuff);
    @@ -56,7 +56,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

    @@ -111,7 +111,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -143,7 +143,7 @@ Easy, right?

    - + Associative tuples

    @@ -215,7 +215,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -226,12 +226,12 @@



    -

    [2] +

    [2] There are finer grained header files available if you wish to have more control - over which components to include (see section Orgainization + over which components to include (see section Organization for details).

    -

    [3] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 636a9f9d..2818028f 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    #include <boost/fusion/sequence.hpp>
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 85eb3ae8..15681d95 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -40,7 +40,7 @@
             Fusion Sequences are organized into a hierarchy of concepts.
           

    - + Traversal

    @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index c18d9fcf..80fb0821 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -28,7 +28,7 @@ Sequence

    - + Description

    @@ -64,7 +64,7 @@

    - + Valid Expressions
    @@ -169,7 +169,7 @@
    - + Result Type Expressions
    @@ -243,7 +243,7 @@

    - + Expression Semantics
    @@ -298,7 +298,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 5d3461c7..1c580444 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -37,7 +37,7 @@ Iterator.

    - + Refinement of
    @@ -66,7 +66,7 @@
    - + Valid Expressions
    @@ -192,7 +192,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Expression Semantics
    @@ -293,7 +293,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 245922a7..9deed2df 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -60,7 +60,7 @@

    - + Valid Expressions
    @@ -225,7 +225,7 @@
    - + Result Type Expressions
    @@ -310,7 +310,7 @@
    - + Expression Semantics
    @@ -398,7 +398,7 @@
    - + Invariants

    @@ -425,7 +425,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 7803b8a8..404bc286 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -28,7 +28,7 @@ Access Sequence
    - + Description

    @@ -38,7 +38,7 @@ sequence elements.

    - + Refinement of
    @@ -73,7 +73,7 @@
    - + Valid Expressions
    @@ -199,7 +199,7 @@
    - + Result Type Expressions
    @@ -285,7 +285,7 @@

    - + Expression Semantics
    @@ -325,7 +325,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index f4ee713d..ecb8d0bb 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -36,10 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence[5]. + repertoire. They need to be implemented for each Fusion Sequence[5].

      - + Header
      #include <boost/fusion/sequence/intrinsic.hpp>
      @@ -47,7 +47,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/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 1c2236f7..6fafb7db 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -27,14 +27,14 @@ at
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <typename N, typename Sequence>
    @@ -46,7 +46,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index d3bb40bd..2dcebb7d 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    @@ -27,14 +27,14 @@
     at_c
     
     
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <int N, typename Sequence>
    @@ -46,7 +46,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index 6a7d19bb..59313b89 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    @@ -27,14 +27,14 @@
     at_key
     
     
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -46,7 +46,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ with Key.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index 8bb2a449..4f42aace 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
    @@ -27,14 +27,14 @@
     back
     
     
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index 2c30c62f..6b53bf1d 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to the first element in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index 95d34ae4..3d1ca092 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    @@ -27,7 +27,7 @@
     empty
     
     
    - + Description

    @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    template <typename Sequence>
    @@ -44,7 +44,7 @@
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index 9222a1c1..f721c9c6 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to one element past the end of the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index 5fb45995..55c75471 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index 1f364324..f65c6951 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    @@ -27,7 +27,7 @@
     has_key
     
     
    - + Description

    @@ -37,7 +37,7 @@ to false.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index e9ff7342..db49cfd8 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
    @@ -27,7 +27,7 @@
     size
     
     
    - + Description

    @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -43,7 +43,7 @@
     size(Sequence const& seq);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index 4075d9c7..1b9fce35 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -27,21 +27,21 @@
     swap
     
     
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -87,7 +87,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    vector<int, std::string> v1(1, "hello"), v2(2, "world");
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    index 4746f161..c7890b14 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    @@ -27,14 +27,14 @@
     at
     
     
    - + Description

    - Returns the result type of at[6]. + Returns the result type of at[6].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ using at to access the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -140,7 +140,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 to diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index d5d70d1c..92664c4e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -27,14 +27,14 @@ at_c

    - + Description

    - Returns the result type of at_c[7]. + Returns the result type of at_c[7].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ using at_c to access the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -139,7 +139,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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index b10531ed..8b848728 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -27,14 +27,14 @@ at_key

    - + Description

    - Returns the result type of at_key[8]. + Returns the result type of at_key[8].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -126,14 +126,14 @@ Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    @@ -141,7 +141,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 want diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index e7fa3915..48546c2e 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -27,14 +27,14 @@ back

    - + Description

    Returns the result type of back.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index 8244a41e..acce2002 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns the result type of begin.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ to the first element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index ceafcc53..e6995b0f 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    @@ -27,14 +27,14 @@
     empty
     
     
    - + Description

    Returns the result type of empty.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    typedef vector<> empty_vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index d34d8655..974ab099 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns the result type of end.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ one past the end of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index 6b155584..1a448b47 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the result type of front.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index 1ac841eb..e070bc4b 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    @@ -27,14 +27,14 @@
     has_key
     
     
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index 338e086d..99503ec8 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    @@ -27,14 +27,14 @@
     size
     
     
    - + Description

    Returns the result type of size.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index a861ba54..68f41904 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -27,14 +27,14 @@
     swap
     
     
    - + Description

    Returns the return type of swap.

    - + Synopsis
    template<typename Seq1, typename Seq2>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ Semantics: Always returns void.

    - + Header
    #include <boost/fusion/sequence/intrinsic/swap.hpp>
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    index bcb4d9d6..d1f06279 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    @@ -27,14 +27,14 @@
     value_at
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index 68b76aa5..88aa681e 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    @@ -27,14 +27,14 @@
     value_at_c
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index 9e2526af..0b64f010 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    @@ -27,14 +27,14 @@
     value_at_key
     
     
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     #include <boost/fusion/include/value_at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
    index 09548b38..ad681b65 100644
    --- a/doc/html/fusion/sequence/operator/comparison.html
    +++ b/doc/html/fusion/sequence/operator/comparison.html
    @@ -49,7 +49,7 @@
               only until the result is clear.
             

    - + Header
    #include <boost/fusion/sequence/comparison.hpp>
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index ab01186c..78ef0ec3 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -27,14 +27,14 @@
     equal
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -42,7 +42,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -123,14 +123,14 @@ true.

    - + Header
    #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    vector<int, char> v1(5, 'a');
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index db69daac..505a2f84 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns b < a.

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index 6f3b5813..b2a0b3eb 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

    - + Header
    #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index 4a92f1fb..e73cd82e 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ and b.

    - + Header
    #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index 7764b47c..1ac11c57 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index 64bfd402..9bd024f5 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    @@ -31,7 +31,7 @@
                 Compare two sequences for inequality.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ Returns !(a == b).

    - + Header
    #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    vector<int, char> v3(5, 'b');
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 5b4f4472..7bf14613 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -113,7 +113,7 @@
               representation may not be unambiguously parseable.
             

    - + Header
    #include <boost/fusion/sequence/io.hpp>
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index db3bdbe1..011ca161 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -27,7 +27,7 @@
     in
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename IStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    vector<int, std::string, char> v;
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index 77a1df99..5b734cf7 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/i_o/out.html
    @@ -27,7 +27,7 @@
     out
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename OStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    std::cout << make_vector(123, "Hello", 'x') << std::endl;
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index 2db452b8..fb5aaade 100644
    --- a/doc/html/fusion/support/category_of.html
    +++ b/doc/html/fusion/support/category_of.html
    @@ -27,7 +27,7 @@
     category_of
     
     
    - + Description

    @@ -37,7 +37,7 @@ Sequence Concepts).

    - + Synopsis
    namespace traits
    @@ -50,7 +50,7 @@
     }
     
    - + Parameters
    @@ -95,7 +95,7 @@
    - + Expression Semantics
    @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

    - + Header
    #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    - + Example
    using boost::is_base_of;
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index 65d50f23..1b40ee91 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -27,7 +27,7 @@
     deduce
     
     
    - + Description

    @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

    - + Header
    #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    - + Synopsis
    namespace traits
    @@ -60,7 +60,7 @@
     }
     
    - + Example
    template <typename T>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 2ffd7ed3..7c9b1245 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -27,7 +27,7 @@ deduce_sequence
    - + Description

    @@ -38,14 +38,14 @@ original type as its argument.

    - + Header
    #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    - + Synopsis
    namespace traits
    @@ -58,7 +58,7 @@
     }
     
    - + Example
    template <class Seq>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 7e97674f..5a5784dd 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -27,7 +27,7 @@ is_sequence
    - + Description

    @@ -38,7 +38,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -51,7 +51,7 @@
     }
     
    - + Parameters
    @@ -96,7 +96,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ otherwise.

    - + Header
    #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index 28fc5700..8ae394d8 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -27,7 +27,7 @@
     is_view
     
     
    - + Description

    @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::is_view<T>::type c;
    @@ -115,14 +115,14 @@
             otherwise.
           

    - + Header
    #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index e00d3779..8284ba6c 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -27,7 +27,7 @@
     pair
     
     
    - + Description

    @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

    - + Synopsis
    template <typename First, typename Second>
    @@ -60,7 +60,7 @@
     make_pair(Second const &);
     
    - + Template parameters
    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -317,14 +317,14 @@
    - + Header
    #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    - + Example
    pair<int, char> p('X');
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index b0f62789..a4d56b19 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -27,7 +27,7 @@
     tag_of
     
     
    - + Description

    @@ -41,7 +41,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::tag_of<T>::type tag;
    @@ -112,14 +112,14 @@
             with T.
           

    - + Header
    #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     
    - + Example
    typedef traits::tag_of<list<> >::type tag1;
    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
    index 1d885b5a..b37d6de4 100644
    --- a/doc/html/fusion/tuple/class_template_tuple.html
    +++ b/doc/html/fusion/tuple/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis
    template<
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index d43eac1d..0c85405b 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     Construction
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 8e4308d7..148b123c 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -28,7 +28,7 @@ access
    - + Description

    @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    template<int I, T>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index 38d2c2d3..374d745e 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    @@ -28,7 +28,7 @@
             operators
     
     
    - + Description

    @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 7c6b39d1..fd1b0b42 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -28,7 +28,7 @@ creation functions
    - + Description

    @@ -38,7 +38,7 @@ functions are described in this section.

    - + Specification
    template<typename T1, typename T2, ..., typename TN>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index 41278128..f5770ef2 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -28,7 +28,7 @@
             helper classes
     
     
    - + Description

    @@ -37,7 +37,7 @@ tuple size, and the element types.

    - + Specification
    tuple_size<T>::value
    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index 40c289a4..18b69d92 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/pairs.html
    @@ -27,7 +27,7 @@
     Pairs
     
     
    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification
    tuple_size<std::pair<T1, T2> >::value
    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
    index b68a2bcd..82578440 100644
    --- a/doc/html/fusion/view.html
    +++ b/doc/html/fusion/view.html
    @@ -47,7 +47,7 @@
           to copy and be passed around by value.
         

    - + Header

    #include <boost/fusion/view.hpp>
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index fcb94d92..b3093246 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -27,7 +27,7 @@
     filter_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header
    #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Pred>
     struct filter_view;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -144,7 +144,7 @@
    - + Expression Semantics

    @@ -214,7 +214,7 @@

    - + Example
    using boost::mpl::_;
    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index d89bf513..6994b99f 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -27,7 +27,7 @@
     iterator_range
     
     
    - + Description

    @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
    #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    - + Synopsis
    template <typename First, typename Last>
     struct iterator_range;
     
    - + Template parameters
    @@ -107,7 +107,7 @@
    - + Model of
      @@ -149,7 +149,7 @@
    - + Expression Semantics
    @@ -223,7 +223,7 @@
    - + Example
    char const* s = "Ruby";
    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 4babe5f5..183abba9 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -27,7 +27,7 @@
     joint_view
     
     
    - + Description

    @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

    - + Header
    #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     
    - + Synopsis
    template <typename Sequence1, typename Sequence2>
     struct joint_view;
     
    - + Template parameters
    @@ -109,7 +109,7 @@
    - + Model of
      @@ -146,7 +146,7 @@
    - + Expression Semantics

    @@ -218,7 +218,7 @@

    - + Example
    vector<int, char> v1(3, 'x');
    diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
    index d5f5d15d..ebb65806 100644
    --- a/doc/html/fusion/view/nview.html
    +++ b/doc/html/fusion/view/nview.html
    @@ -27,7 +27,7 @@
     nview
     
     
    - + Description

    @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

    - + Header
    #include <boost/fusion/view/nview.hpp>
     #include <boost/fusion/include/nview.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Indicies>
    @@ -56,7 +56,7 @@
     as_nview(Sequence& s);
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -235,7 +235,7 @@ of references to the elements of the original Fusion Sequence

    - + Example
    typedef vector<int, char, double> vec;
    diff --git a/doc/html/fusion/view/repetitive_view.html b/doc/html/fusion/view/repetitive_view.html
    index 457cb6eb..a540927e 100644
    --- a/doc/html/fusion/view/repetitive_view.html
    +++ b/doc/html/fusion/view/repetitive_view.html
    @@ -27,7 +27,7 @@
     repetitive_view
     
     
    - + Description

    @@ -40,21 +40,21 @@ is not.

    - + Header
    #include <boost/fusion/view/repetitive_view.hpp>
     #include <boost/fusion/include/repetitive_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct repetitive_view;
     
    - + Template parameters
    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -228,7 +228,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Example
    typedef vector<int, char, double> vec1;
    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
    index 01f2f0e2..cfe6c5d3 100644
    --- a/doc/html/fusion/view/reverse_view.html
    +++ b/doc/html/fusion/view/reverse_view.html
    @@ -32,21 +32,21 @@
             element will be its first.
           

    - + Header
    #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct reverse_view;
     
    - + Template parameters
    @@ -89,7 +89,7 @@
    - + Model of
      @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -199,7 +199,7 @@
    - + Example
    typedef vector<int, short, double> vector_type;
    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index b3cbea68..dc712de5 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -31,21 +31,21 @@
             a value as a single element sequence.
           

    - + Header
    #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     
    - + Synopsis
    template <typename T>
     struct single_view;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
    - + Model of
    • @@ -111,7 +111,7 @@
    - + Expression Semantics

    @@ -182,7 +182,7 @@

    - + Example
    single_view<int> view(3);
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index 8d3b1e29..bb28a28a 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -36,14 +36,14 @@
             Traversal Concept) of its underlying sequence or sequences.
           

    - + Header
    #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     
    - + Synopsis

    @@ -59,7 +59,7 @@ struct transform_view;

    - + Template parameters
    @@ -169,7 +169,7 @@
    - + Model of
    • @@ -224,7 +224,7 @@
    - + Expression Semantics
    @@ -319,7 +319,7 @@
    - + Example
    struct square
    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index 6a8da832..17241ea0 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -27,7 +27,7 @@
     zip_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ to the component _sequence_s.

    - + Header
    #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     
    - + Synopsis
    template <typename Sequences>
     struct zip_view;
     
    - + Template parameters
    @@ -95,7 +95,7 @@
    - + Model of
    • @@ -124,7 +124,7 @@
    - + Expression Semantics

    @@ -195,7 +195,7 @@

    - + Example
    typedef vector<int,int> vec1;
    diff --git a/doc/html/index.html b/doc/html/index.html
    index 4cd9210d..77b1184e 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -34,7 +34,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)

    @@ -261,7 +261,7 @@
    - +

    Last revised: October 10, 2010 at 20:13:53 GMT

    Last revised: December 19, 2010 at 15:00:31 GMT


    diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index b5c9edd8..c26a226c 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include diff --git a/include/boost/fusion/container/deque/detail/is_sequence_impl.hpp b/include/boost/fusion/container/deque/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..ff88ed6f --- /dev/null +++ b/include/boost/fusion/container/deque/detail/is_sequence_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_CONTAINER_DEQUE_DETAIL_IS_SEQUENCE_IMPL_HPP +#define BOOST_FUSION_CONTAINER_DEQUE_DETAIL_IS_SEQUENCE_IMPL_HPP + +#include + +namespace boost { namespace fusion +{ + struct deque_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/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp index ea314ac2..33484c5d 100644 --- a/include/boost/fusion/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n.hpp @@ -36,8 +36,8 @@ #define N BOOST_PP_ITERATION() - template - struct BOOST_PP_CAT(vector_data, N) : sequence_base + template + struct BOOST_PP_CAT(vector_data, N) { BOOST_PP_CAT(vector_data, N)() : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {} @@ -73,12 +73,11 @@ template 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_CAT(vector_data, N) + , sequence_base > { typedef BOOST_PP_CAT(vector, N) this_type; - typedef BOOST_PP_CAT(vector_data, N) base_type; + typedef BOOST_PP_CAT(vector_data, N) base_type; typedef mpl::BOOST_PP_CAT(vector, N) types; typedef vector_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL diff --git a/include/boost/fusion/include/unfused_lvalue_args.hpp b/include/boost/fusion/include/make_unfused.hpp similarity index 58% rename from include/boost/fusion/include/unfused_lvalue_args.hpp rename to include/boost/fusion/include/make_unfused.hpp index 17acc261..ae3b6679 100644 --- a/include/boost/fusion/include/unfused_lvalue_args.hpp +++ b/include/boost/fusion/include/make_unfused.hpp @@ -1,12 +1,13 @@ -/*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman +/*============================================================================== + Copyright (c) 2010 Christopher Schmidt Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_INCLUDE_UNFUSED_LVALUE_ARGS) -#define FUSION_INCLUDE_UNFUSED_LVALUE_ARGS -#include +#ifndef BOOST_FUSION_INCLUDE_MAKE_UNFUSED_HPP +#define BOOST_FUSION_INCLUDE_MAKE_UNFUSED_HPP + +#include #endif diff --git a/include/boost/fusion/include/make_unfused_generic.hpp b/include/boost/fusion/include/make_unfused_generic.hpp deleted file mode 100644 index dcebceb1..00000000 --- a/include/boost/fusion/include/make_unfused_generic.hpp +++ /dev/null @@ -1,12 +0,0 @@ -/*============================================================================= - 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_UNFUSED_GENERIC) -#define FUSION_INCLUDE_MAKE_UNFUSED_GENERIC - -#include - -#endif diff --git a/include/boost/fusion/include/make_unfused_lvalue_args.hpp b/include/boost/fusion/include/make_unfused_lvalue_args.hpp deleted file mode 100644 index 1805bb18..00000000 --- a/include/boost/fusion/include/make_unfused_lvalue_args.hpp +++ /dev/null @@ -1,12 +0,0 @@ -/*============================================================================= - 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_UNFUSED_LVALUE_ARGS) -#define FUSION_INCLUDE_MAKE_UNFUSED_LVALUE_ARGS - -#include - -#endif diff --git a/include/boost/fusion/include/make_unfused_rvalue_args.hpp b/include/boost/fusion/include/make_unfused_rvalue_args.hpp deleted file mode 100644 index 0d546be7..00000000 --- a/include/boost/fusion/include/make_unfused_rvalue_args.hpp +++ /dev/null @@ -1,12 +0,0 @@ -/*============================================================================= - 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_UNFUSED_RVALUE_ARGS) -#define FUSION_INCLUDE_MAKE_UNFUSED_RVALUE_ARGS - -#include - -#endif diff --git a/include/boost/fusion/include/unfused_generic.hpp b/include/boost/fusion/include/unfused.hpp similarity index 63% rename from include/boost/fusion/include/unfused_generic.hpp rename to include/boost/fusion/include/unfused.hpp index d377900f..e386ce5a 100644 --- a/include/boost/fusion/include/unfused_generic.hpp +++ b/include/boost/fusion/include/unfused.hpp @@ -1,12 +1,13 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2010 Christopher Schmidt Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_INCLUDE_UNFUSED_GENERIC) -#define FUSION_INCLUDE_UNFUSED_GENERIC -#include +#ifndef BOOST_FUSION_INCLUDE_UNFUSED_HPP +#define BOOST_FUSION_INCLUDE_UNFUSED_HPP + +#include #endif diff --git a/include/boost/fusion/include/unfused_rvalue_args.hpp b/include/boost/fusion/include/unfused_rvalue_args.hpp deleted file mode 100644 index 556b2dee..00000000 --- a/include/boost/fusion/include/unfused_rvalue_args.hpp +++ /dev/null @@ -1,12 +0,0 @@ -/*============================================================================= - 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_UNFUSED_RVALUE_ARGS) -#define FUSION_INCLUDE_UNFUSED_RVALUE_ARGS - -#include - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp index 3e79277e..c1925e87 100644 --- a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp +++ b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp @@ -11,24 +11,27 @@ #include #include #include +#include #include #include -#include +#include namespace boost { namespace fusion { namespace detail { template - struct is_native_fusion_sequence : is_base_of {}; + struct is_native_fusion_sequence + : is_convertible + {}; template struct enable_equality - : mpl::or_, is_native_fusion_sequence > + : mpl::or_, traits::is_sequence > {}; template struct enable_comparison : mpl::and_< - mpl::or_, is_native_fusion_sequence > + mpl::or_, traits::is_sequence > , mpl::equal_to, result_of::size > > {}; diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index 5dbe0c40..c9ece3ab 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -8,6 +8,8 @@ #define FUSION_BEGIN_04052005_1132 #include +#include +#include namespace boost { namespace fusion { @@ -57,14 +59,22 @@ namespace boost { namespace fusion } template - inline typename result_of::begin::type const + inline typename + lazy_enable_if< + traits::is_sequence + , result_of::begin + >::type const begin(Sequence& seq) { return result_of::begin::call(seq); } template - inline typename result_of::begin::type const + inline typename + lazy_enable_if< + traits::is_sequence + , 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 98a554e3..02476710 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -8,6 +8,8 @@ #define FUSION_END_04052005_1141 #include +#include +#include namespace boost { namespace fusion { @@ -57,14 +59,22 @@ namespace boost { namespace fusion } template - inline typename result_of::end::type const + inline typename + lazy_enable_if< + traits::is_sequence + , result_of::end + >::type const end(Sequence& seq) { return result_of::end::call(seq); } template - inline typename result_of::end::type const + inline typename + lazy_enable_if< + traits::is_sequence + , result_of::end + >::type const end(Sequence const& seq) { return result_of::end::call(seq); diff --git a/include/boost/fusion/support/detail/is_mpl_sequence.hpp b/include/boost/fusion/support/detail/is_mpl_sequence.hpp index eeb8f916..b7e792b3 100644 --- a/include/boost/fusion/support/detail/is_mpl_sequence.hpp +++ b/include/boost/fusion/support/detail/is_mpl_sequence.hpp @@ -9,17 +9,17 @@ #define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105 #include -#include #include #include #include +#include namespace boost { namespace fusion { namespace detail { template struct is_mpl_sequence : mpl::and_< - mpl::not_ > + mpl::not_ > , mpl::is_sequence > {}; }}} diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index d57cecb4..4dc9bdd8 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_sequence.hpp @@ -7,12 +7,13 @@ #if !defined(FUSION_IS_SEQUENCE_05052005_1002) #define FUSION_IS_SEQUENCE_05052005_1002 -#include #include #include #include #include #include +#include +#include namespace boost { namespace fusion { @@ -29,7 +30,9 @@ namespace boost { namespace fusion struct is_sequence_impl { template - struct apply : is_base_of {}; + struct apply + : is_convertible + {}; }; template <> diff --git a/include/boost/fusion/support/sequence_base.hpp b/include/boost/fusion/support/sequence_base.hpp index 1d436ef1..9a5186df 100644 --- a/include/boost/fusion/support/sequence_base.hpp +++ b/include/boost/fusion/support/sequence_base.hpp @@ -12,10 +12,14 @@ namespace boost { namespace fusion { - struct sequence_root {}; + namespace detail + { + struct from_sequence_convertible_type + {}; + } template - struct sequence_base : sequence_root + struct sequence_base { Sequence const& derived() const @@ -28,6 +32,11 @@ namespace boost { namespace fusion { return static_cast(*this); } + + operator detail::from_sequence_convertible_type()const + { + return detail::from_sequence_convertible_type(); + } }; struct fusion_sequence_tag; From 94f5406936ab6ddebe42608fc30f995f6e9ad078 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Sat, 8 Jan 2011 18:38:08 +0000 Subject: [PATCH 45/82] Merging fixes to release; fixes #2294 fixes #4918 fixes #3645 refs #2823 refs #1427 refs #2893 [SVN r67792] --- include/boost/fusion/container/list/detail/build_cons.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/container/list/detail/build_cons.hpp b/include/boost/fusion/container/list/detail/build_cons.hpp index befbd4e9..8e6276e6 100644 --- a/include/boost/fusion/container/list/detail/build_cons.hpp +++ b/include/boost/fusion/container/list/detail/build_cons.hpp @@ -48,7 +48,8 @@ namespace boost { namespace fusion { namespace detail static type call(First const& f, Last const& l) { - return type(*f, next_build_cons::call(fusion::next(f), l)); + typename result_of::deref::type v = *f; + return type(v, next_build_cons::call(fusion::next(f), l)); } }; From aa30bad7e4e2faf633764534a235ecf8428c03bb Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Wed, 19 Jan 2011 04:28:17 +0000 Subject: [PATCH 46/82] fix 1.46 showstopper, fix #5084 [SVN r68264] --- .../{detail => }/enable_comparison.hpp | 17 +++++------------ .../fusion/sequence/comparison/equal_to.hpp | 6 +++--- .../fusion/sequence/comparison/greater.hpp | 6 +++--- .../sequence/comparison/greater_equal.hpp | 6 +++--- .../boost/fusion/sequence/comparison/less.hpp | 6 +++--- .../fusion/sequence/comparison/less_equal.hpp | 10 +++++----- .../fusion/sequence/comparison/not_equal_to.hpp | 6 +++--- include/boost/fusion/support/is_sequence.hpp | 7 ++++++- 8 files changed, 31 insertions(+), 33 deletions(-) rename include/boost/fusion/sequence/comparison/{detail => }/enable_comparison.hpp (73%) diff --git a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp b/include/boost/fusion/sequence/comparison/enable_comparison.hpp similarity index 73% rename from include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp rename to include/boost/fusion/sequence/comparison/enable_comparison.hpp index c1925e87..d7d95383 100644 --- a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp +++ b/include/boost/fusion/sequence/comparison/enable_comparison.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_ENABLE_COMPARISON_09232005_1958) @@ -14,28 +14,21 @@ #include #include #include -#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { namespace traits { - template - struct is_native_fusion_sequence - : is_convertible - {}; - - template + template struct enable_equality : mpl::or_, traits::is_sequence > {}; - template + template struct enable_comparison : mpl::and_< mpl::or_, traits::is_sequence > - , mpl::equal_to, result_of::size > + , mpl::equal_to, result_of::size > > {}; - }}} #endif diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp index 0c8a37e4..67040cbe 100644 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -2,7 +2,7 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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_EQUAL_TO_05052005_0431) @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #if defined (BOOST_MSVC) @@ -38,7 +38,7 @@ namespace boost { namespace fusion template inline typename enable_if< - detail::enable_equality + traits::enable_equality , bool >::type operator==(Seq1 const& a, Seq2 const& b) diff --git a/include/boost/fusion/sequence/comparison/greater.hpp b/include/boost/fusion/sequence/comparison/greater.hpp index 8df806e4..7579c887 100644 --- a/include/boost/fusion/sequence/comparison/greater.hpp +++ b/include/boost/fusion/sequence/comparison/greater.hpp @@ -2,7 +2,7 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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_GREATER_05052005_0432) @@ -11,7 +11,7 @@ #include #include #include -#include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -38,7 +38,7 @@ namespace boost { namespace fusion template inline typename enable_if< - detail::enable_comparison + traits::enable_comparison , bool >::type operator>(Seq1 const& a, Seq2 const& b) diff --git a/include/boost/fusion/sequence/comparison/greater_equal.hpp b/include/boost/fusion/sequence/comparison/greater_equal.hpp index 3a20e0e8..dc7df230 100644 --- a/include/boost/fusion/sequence/comparison/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/greater_equal.hpp @@ -2,7 +2,7 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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_GREATER_EQUAL_05052005_0432) @@ -11,7 +11,7 @@ #include #include #include -#include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -38,7 +38,7 @@ namespace boost { namespace fusion template inline typename enable_if< - detail::enable_comparison + traits::enable_comparison , bool >::type operator>=(Seq1 const& a, Seq2 const& b) diff --git a/include/boost/fusion/sequence/comparison/less.hpp b/include/boost/fusion/sequence/comparison/less.hpp index a86c3517..4022625a 100644 --- a/include/boost/fusion/sequence/comparison/less.hpp +++ b/include/boost/fusion/sequence/comparison/less.hpp @@ -2,7 +2,7 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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_LESS_05052005_0432) @@ -12,7 +12,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { @@ -29,7 +29,7 @@ namespace boost { namespace fusion template inline typename enable_if< - detail::enable_comparison + traits::enable_comparison , bool >::type operator<(Seq1 const& a, Seq2 const& b) diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index 518e1c0f..2e9cecb9 100644 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -2,7 +2,7 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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_LESS_EQUAL_05052005_0432) @@ -11,7 +11,7 @@ #include #include #include -#include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -35,7 +35,7 @@ namespace boost { namespace fusion namespace operators { -#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400) +#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400) // Workaround for VC8.0 and VC7.1 template inline bool @@ -60,12 +60,12 @@ namespace boost { namespace fusion #else // Somehow VC8.0 and VC7.1 does not like this code -// but barfs somewhere else. +// but barfs somewhere else. template inline typename enable_if< - detail::enable_comparison + traits::enable_comparison , bool >::type operator<=(Seq1 const& a, Seq2 const& b) diff --git a/include/boost/fusion/sequence/comparison/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/not_equal_to.hpp index 54648e16..1b516a15 100644 --- a/include/boost/fusion/sequence/comparison/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/not_equal_to.hpp @@ -2,7 +2,7 @@ Copyright (c) 1999-2003 Jaakko Jarvi 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_NOT_EQUAL_TO_05052005_0431) @@ -11,7 +11,7 @@ #include #include #include -#include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -41,7 +41,7 @@ namespace boost { namespace fusion template inline typename enable_if< - detail::enable_equality + traits::enable_equality , bool >::type operator!=(Seq1 const& a, Seq2 const& b) diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index 4dc9bdd8..f57ca23b 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_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_IS_SEQUENCE_05052005_1002) @@ -63,6 +63,11 @@ namespace boost { namespace fusion typename fusion::detail::tag_of::type >::template apply {}; + + template + struct is_native_fusion_sequence + : is_convertible + {}; } }} From 577a607a141440d62ccc0a7ef85a338493cf741c Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 20 Jan 2011 20:47:25 +0000 Subject: [PATCH 47/82] fix for VC8 (connected to ticket 5084 -showstopper) [SVN r68325] --- include/boost/fusion/sequence/comparison/less_equal.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index 2e9cecb9..6e940a21 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 From dcbebe60f1a920ddbf83b0ab5f9c152077ac12b4 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 2 Mar 2011 00:08:13 +0000 Subject: [PATCH 48/82] Merge from trunk [SVN r69453] --- include/boost/fusion/sequence/comparison/less_equal.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index 6e940a21..bef72271 100644 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -46,14 +46,14 @@ namespace boost { namespace fusion } template - inline typename disable_if, bool>::type + 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 + inline typename disable_if, bool>::type operator<=(Seq1 const& a, sequence_base const& b) { return less_equal(a, b.derived()); From c411c4b4796f1bd7540d6f257ebb180c673d33ed Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Sat, 26 Mar 2011 17:18:36 +0000 Subject: [PATCH 49/82] Spirit: merging from trunk (68457,68496,68522,68865,69218-69219,69294,69476,69546,70042-70043,70049-70050 68320,68374,68377,68386,68449,68461,68485,68487,68489,68491,68494-68495 68519-68520,68523,68536,68538-68539,68548-68549,68576,68645-68646,68657,68676 68687,68690,68707,68725,68744-68746,68852-68853,68861,68870,68904,68906-68908 68938,68989,69020,69022-69024,69091-69092,69103-69104,69114,69136,69138,69193 69202,69204,69233,69292-69293,69295,69297-69298,69323,69337,69378-69380,69405,69429,69431-69433,69444,69450 69495-69498,69501,69503,69505,69527,69599,69618,69623,69670-69671,69673,69675,69772-69774,69780 69811,69813-69814,69833,69851,70045,70211-70216,70224-70225,70483,70549-70550 Fusion: 69113,69118,69137,69583,69589,70008-70009) [SVN r70577] --- test/Jamfile | 3 ++- test/algorithm/copy.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 test/algorithm/copy.cpp diff --git a/test/Jamfile b/test/Jamfile index 4827bbaa..fe8829e6 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -14,6 +14,7 @@ import testing ; [ run algorithm/all.cpp : : : : ] [ run algorithm/any.cpp : : : : ] [ run algorithm/clear.cpp : : : : ] + [ run algorithm/copy.cpp : : : : ] [ run algorithm/count.cpp : : : : ] [ run algorithm/count_if.cpp : : : : ] [ run algorithm/erase.cpp : : : : ] @@ -111,7 +112,7 @@ import testing ; [ run sequence/zip_view2.cpp : : : : ] [ run sequence/zip_view_ignore.cpp : : : : ] [ run sequence/repetitive_view.cpp : : : : ] - [ run sequence/deduce_sequence.cpp : : : : ] + [ run sequence/deduce_sequence.cpp : : : : ] [ run sequence/adapt_adt_named.cpp : : : : ] [ run sequence/adapt_adt.cpp : : : : ] [ run sequence/adapt_assoc_adt_named.cpp : : : : ] diff --git a/test/algorithm/copy.cpp b/test/algorithm/copy.cpp new file mode 100644 index 00000000..330caca6 --- /dev/null +++ b/test/algorithm/copy.cpp @@ -0,0 +1,26 @@ +/*============================================================================= + Copyright (c) 2001-2011 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 + +int +main() +{ + { + boost::fusion::vector v(1, 2, 3); + boost::fusion::list l; + + boost::fusion::copy(v, l); + BOOST_TEST(v == l); + } + + return boost::report_errors(); +} + From efea9aec4bd8dd8fdc1668af80cb62cc434cc526 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sat, 16 Jul 2011 21:16:10 +0000 Subject: [PATCH 50/82] merge [72977] from trunk, regenerate docs [SVN r73156] --- doc/html/fusion/adapted.html | 2 +- doc/html/fusion/adapted/adapt_adt.html | 14 +- doc/html/fusion/adapted/adapt_assoc.html | 18 +-- doc/html/fusion/adapted/adapt_assoc_adt.html | 14 +- .../adapted/adapt_assoc_struct_named.html | 16 +- .../fusion/adapted/adapt_assoc_tpl_adt.html | 14 +- .../adapted/adapt_assoc_tpl_struct.html | 18 +-- doc/html/fusion/adapted/adapt_struct.html | 14 +- .../fusion/adapted/adapt_struct_named.html | 16 +- doc/html/fusion/adapted/adapt_tpl_adt.html | 14 +- doc/html/fusion/adapted/adapt_tpl_struct.html | 14 +- doc/html/fusion/adapted/array.html | 6 +- doc/html/fusion/adapted/boost__array.html | 8 +- doc/html/fusion/adapted/boost__tuple.html | 8 +- .../fusion/adapted/define_assoc_struct.html | 14 +- .../adapted/define_assoc_tpl_struct.html | 14 +- doc/html/fusion/adapted/define_struct.html | 12 +- .../fusion/adapted/define_tpl_struct.html | 14 +- doc/html/fusion/adapted/mpl_sequence.html | 8 +- doc/html/fusion/adapted/std__pair.html | 8 +- doc/html/fusion/algorithm.html | 6 +- doc/html/fusion/algorithm/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 +- .../algorithm/iteration/functions/fold.html | 14 +- .../iteration/functions/for_each.html | 14 +- .../iteration/functions/iter_fold.html | 14 +- .../iteration/functions/reverse_fold.html | 14 +- .../functions/reverse_iter_fold.html | 14 +- .../iteration/metafunctions/accumulate.html | 12 +- .../iteration/metafunctions/fold.html | 12 +- .../iteration/metafunctions/for_each.html | 12 +- .../iteration/metafunctions/iter_fold.html | 12 +- .../iteration/metafunctions/reverse_fold.html | 12 +- .../metafunctions/reverse_iter_fold.html | 12 +- doc/html/fusion/algorithm/query.html | 2 +- .../fusion/algorithm/query/functions/all.html | 14 +- .../fusion/algorithm/query/functions/any.html | 14 +- .../algorithm/query/functions/count.html | 14 +- .../algorithm/query/functions/count_if.html | 14 +- .../algorithm/query/functions/find.html | 14 +- .../algorithm/query/functions/find_if.html | 12 +- .../algorithm/query/functions/none.html | 14 +- .../algorithm/query/metafunctions/all.html | 12 +- .../algorithm/query/metafunctions/any.html | 12 +- .../algorithm/query/metafunctions/count.html | 12 +- .../query/metafunctions/count_if.html | 12 +- .../algorithm/query/metafunctions/find.html | 12 +- .../query/metafunctions/find_if.html | 12 +- .../algorithm/query/metafunctions/none.html | 12 +- doc/html/fusion/algorithm/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 | 18 +-- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/container.html | 2 +- doc/html/fusion/container/cons.html | 14 +- doc/html/fusion/container/conversion.html | 2 +- .../conversion/functions/as_list.html | 12 +- .../conversion/functions/as_map.html | 15 +- .../conversion/functions/as_set.html | 12 +- .../conversion/functions/as_vector.html | 12 +- .../conversion/metafunctions/as_list.html | 12 +- .../conversion/metafunctions/as_map.html | 15 +- .../conversion/metafunctions/as_set.html | 12 +- .../conversion/metafunctions/as_vector.html | 12 +- doc/html/fusion/container/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 | 14 +- .../generation/functions/make_set.html | 14 +- .../generation/functions/make_vector.html | 14 +- .../generation/functions/map_tie.html | 12 +- .../container/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 | 14 +- .../generation/metafunctions/make_set.html | 12 +- .../generation/metafunctions/make_vector.html | 12 +- .../generation/metafunctions/map_tie.html | 12 +- .../generation/metafunctions/vector_tie.html | 12 +- doc/html/fusion/container/list.html | 14 +- doc/html/fusion/container/map.html | 14 +- doc/html/fusion/container/set.html | 14 +- doc/html/fusion/container/vector.html | 18 +-- doc/html/fusion/extension/ext_full.html | 25 ++- .../fusion/extension/iterator_facade.html | 14 +- .../fusion/extension/sequence_facade.html | 14 +- doc/html/fusion/functional.html | 8 +- .../fusion/functional/adapters/fused.html | 16 +- .../adapters/fused_function_object.html | 16 +- .../functional/adapters/fused_procedure.html | 16 +- .../fusion/functional/adapters/limits.html | 4 +- .../fusion/functional/adapters/unfused.html | 16 +- .../functional/adapters/unfused_typed.html | 34 ++-- .../fusion/functional/concepts/callable.html | 10 +- .../functional/concepts/def_callable.html | 18 +-- doc/html/fusion/functional/concepts/poly.html | 18 +-- .../functional/concepts/reg_callable.html | 14 +- .../generation/functions/mk_fused.html | 14 +- .../generation/functions/mk_fused_fobj.html | 14 +- .../generation/functions/mk_fused_proc.html | 14 +- .../generation/functions/mk_unfused.html | 14 +- .../generation/metafunctions/mk_fused.html | 8 +- .../metafunctions/mk_fused_fobj.html | 8 +- .../metafunctions/mk_fused_proc.html | 8 +- .../generation/metafunctions/mk_unfused.html | 8 +- .../invocation/functions/invoke.html | 14 +- .../invocation/functions/invoke_fobj.html | 14 +- .../invocation/functions/invoke_proc.html | 14 +- .../fusion/functional/invocation/limits.html | 4 +- .../invocation/metafunctions/invoke.html | 6 +- .../invocation/metafunctions/invoke_fobj.html | 6 +- .../invocation/metafunctions/invoke_proc.html | 6 +- doc/html/fusion/introduction.html | 4 +- doc/html/fusion/iterator.html | 2 +- .../concepts/associative_iterator.html | 10 +- .../concepts/bidirectional_iterator.html | 18 ++- .../iterator/concepts/forward_iterator.html | 150 +++--------------- .../concepts/random_access_iterator.html | 14 +- .../fusion/iterator/functions/advance.html | 12 +- .../fusion/iterator/functions/advance_c.html | 12 +- doc/html/fusion/iterator/functions/deref.html | 12 +- .../fusion/iterator/functions/deref_data.html | 12 +- .../fusion/iterator/functions/distance.html | 12 +- doc/html/fusion/iterator/functions/next.html | 12 +- doc/html/fusion/iterator/functions/prior.html | 12 +- .../iterator/metafunctions/advance.html | 12 +- .../iterator/metafunctions/advance_c.html | 12 +- .../fusion/iterator/metafunctions/deref.html | 12 +- .../iterator/metafunctions/deref_data.html | 12 +- .../iterator/metafunctions/distance.html | 12 +- .../iterator/metafunctions/equal_to.html | 12 +- .../fusion/iterator/metafunctions/key_of.html | 12 +- .../fusion/iterator/metafunctions/next.html | 12 +- .../fusion/iterator/metafunctions/prior.html | 12 +- .../iterator/metafunctions/value_of.html | 12 +- .../iterator/metafunctions/value_of_data.html | 12 +- .../iterator/operator/operator_equality.html | 10 +- .../operator/operator_inequality.html | 10 +- .../operator/operator_unary_star.html | 12 +- doc/html/fusion/notes.html | 30 ++-- doc/html/fusion/organization.html | 140 ++++++++-------- doc/html/fusion/preface.html | 10 +- doc/html/fusion/quick_start.html | 16 +- doc/html/fusion/sequence.html | 2 +- doc/html/fusion/sequence/concepts.html | 4 +- .../concepts/associative_sequence.html | 10 +- .../concepts/bidirectional_sequence.html | 15 +- .../sequence/concepts/forward_sequence.html | 12 +- .../concepts/random_access_sequence.html | 15 +- doc/html/fusion/sequence/intrinsic.html | 6 +- .../sequence/intrinsic/functions/at.html | 12 +- .../sequence/intrinsic/functions/at_c.html | 12 +- .../sequence/intrinsic/functions/at_key.html | 12 +- .../sequence/intrinsic/functions/back.html | 12 +- .../sequence/intrinsic/functions/begin.html | 12 +- .../sequence/intrinsic/functions/empty.html | 12 +- .../sequence/intrinsic/functions/end.html | 12 +- .../sequence/intrinsic/functions/front.html | 12 +- .../sequence/intrinsic/functions/has_key.html | 12 +- .../sequence/intrinsic/functions/size.html | 12 +- .../sequence/intrinsic/functions/swap.html | 10 +- .../sequence/intrinsic/metafunctions/at.html | 16 +- .../intrinsic/metafunctions/at_c.html | 16 +- .../intrinsic/metafunctions/at_key.html | 20 +-- .../intrinsic/metafunctions/back.html | 12 +- .../intrinsic/metafunctions/begin.html | 12 +- .../intrinsic/metafunctions/empty.html | 12 +- .../sequence/intrinsic/metafunctions/end.html | 12 +- .../intrinsic/metafunctions/front.html | 12 +- .../intrinsic/metafunctions/has_key.html | 12 +- .../intrinsic/metafunctions/size.html | 12 +- .../intrinsic/metafunctions/swap.html | 10 +- .../intrinsic/metafunctions/value_at.html | 12 +- .../intrinsic/metafunctions/value_at_c.html | 12 +- .../intrinsic/metafunctions/value_at_key.html | 12 +- .../fusion/sequence/operator/comparison.html | 2 +- .../sequence/operator/comparison/equal.html | 15 +- .../operator/comparison/greater_than.html | 10 +- .../comparison/greater_than_equal.html | 10 +- .../operator/comparison/less_than.html | 10 +- .../operator/comparison/less_than_equal.html | 10 +- .../operator/comparison/not_equal.html | 10 +- doc/html/fusion/sequence/operator/i_o.html | 2 +- doc/html/fusion/sequence/operator/i_o/in.html | 12 +- .../fusion/sequence/operator/i_o/out.html | 12 +- doc/html/fusion/support/category_of.html | 12 +- doc/html/fusion/support/deduce.html | 10 +- doc/html/fusion/support/deduce_sequence.html | 10 +- 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/tuple/class_template_tuple.html | 2 +- .../class_template_tuple/construction.html | 4 +- .../class_template_tuple/element_access.html | 4 +- .../relational_operators.html | 4 +- .../tuple_creation_functions.html | 8 +- .../tuple_helper_classes.html | 4 +- doc/html/fusion/tuple/pairs.html | 9 +- doc/html/fusion/view.html | 2 +- doc/html/fusion/view/filter_view.html | 14 +- doc/html/fusion/view/iterator_range.html | 14 +- doc/html/fusion/view/joint_view.html | 14 +- doc/html/fusion/view/nview.html | 20 +-- doc/html/fusion/view/repetitive_view.html | 18 +-- doc/html/fusion/view/reverse_view.html | 12 +- doc/html/fusion/view/single_view.html | 19 +-- doc/html/fusion/view/transform_view.html | 12 +- doc/html/fusion/view/zip_view.html | 24 +-- doc/html/index.html | 4 +- doc/iterator.qbk | 2 + doc/sequence.qbk | 2 + doc/view.qbk | 4 +- .../view/single_view/detail/advance_impl.hpp | 47 ++++++ .../view/single_view/detail/at_impl.hpp | 44 +++++ .../view/single_view/detail/begin_impl.hpp | 15 +- .../view/single_view/detail/deref_impl.hpp | 14 +- .../view/single_view/detail/distance_impl.hpp | 43 +++++ .../view/single_view/detail/end_impl.hpp | 17 +- .../view/single_view/detail/equal_to_impl.hpp | 39 +++++ .../view/single_view/detail/next_impl.hpp | 21 +-- .../view/single_view/detail/prior_impl.hpp | 46 ++++++ .../view/single_view/detail/size_impl.hpp | 33 ++++ .../view/single_view/detail/value_at_impl.hpp | 39 +++++ .../view/single_view/detail/value_of_impl.hpp | 13 +- .../fusion/view/single_view/single_view.hpp | 12 +- .../view/single_view/single_view_iterator.hpp | 35 ++-- test/sequence/single_view.cpp | 36 +++++ 266 files changed, 1973 insertions(+), 1729 deletions(-) create mode 100644 include/boost/fusion/view/single_view/detail/advance_impl.hpp create mode 100644 include/boost/fusion/view/single_view/detail/at_impl.hpp create mode 100644 include/boost/fusion/view/single_view/detail/distance_impl.hpp create mode 100644 include/boost/fusion/view/single_view/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/view/single_view/detail/prior_impl.hpp create mode 100644 include/boost/fusion/view/single_view/detail/size_impl.hpp create mode 100644 include/boost/fusion/view/single_view/detail/value_at_impl.hpp diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 44ff466e..4a8dc424 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -60,7 +60,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

    - + Header

    #include <boost/fusion/adapted.hpp>
    diff --git a/doc/html/fusion/adapted/adapt_adt.html b/doc/html/fusion/adapted/adapt_adt.html
    index dd658ee0..cd164c91 100644
    --- a/doc/html/fusion/adapted/adapt_adt.html
    +++ b/doc/html/fusion/adapted/adapt_adt.html
    @@ -32,7 +32,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ADT(
    @@ -43,7 +43,7 @@
         )
     
    - + Expression Semantics
    @@ -88,14 +88,14 @@ should be the fully namespace qualified name of the class type to be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
     #include <boost/fusion/include/adapt_adt.hpp>
     
    - + Example
    namespace demo
    @@ -137,11 +137,11 @@
     demo::employee e;
     front(e)="Edward Norton";
     back(e)=41;
    -//Prints 'Edward Norton is 41 years old'
    -std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +//Prints 'Edward Norton is 41 years old'
    +std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html index 86eca0da..20a2865a 100644 --- a/doc/html/fusion/adapted/adapt_assoc.html +++ b/doc/html/fusion/adapted/adapt_assoc.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT

    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    @@ -48,7 +48,7 @@
         )
     
    - + Semantics

    @@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    @@ -91,10 +91,10 @@
         struct age;
     }
     
    -// demo::employee is now a Fusion sequence.
    -// It is also an associative sequence with
    -// keys keys::name and keys::age present.
    -BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    +// demo::employee is now a Fusion sequence.
    +// It is also an associative sequence with
    +// keys keys::name and keys::age present.
    +BOOST_FUSION_ADAPT_ASSOC_STRUCT(
         demo::employee,
         (std::string, name, keys::name)
         (int, age, keys::age))
    diff --git a/doc/html/fusion/adapted/adapt_assoc_adt.html b/doc/html/fusion/adapted/adapt_assoc_adt.html
    index 1053f18b..199b3f65 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_adt.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_adt.html
    @@ -34,7 +34,7 @@
             Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_ADT(
    @@ -45,7 +45,7 @@
         )
     
    - + Expression Semantics
    @@ -92,14 +92,14 @@ should be the fully namespace qualified name of the class type to be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
     #include <boost/fusion/include/adapt_assoc_adt.hpp>
     
    - + Example
    namespace demo
    @@ -147,11 +147,11 @@
     demo::employee e;
     at_key<keys::name>(e)="Edward Norton";
     at_key<keys::age>(e)=41;
    -//Prints 'Edward Norton is 41 years old'
    -std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +//Prints 'Edward Norton is 41 years old'
    +std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html index 205acc19..a549ebb4 100644 --- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html +++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED

    - + Description

    @@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    @@ -58,7 +58,7 @@
         )
     
    - + Semantics

    @@ -83,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
     #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
     
    - + Example
    namespace demo
    @@ -108,9 +108,9 @@
         struct age;
     }
     
    -// boost::fusion::adapted::adapted_employee is now a Fusion sequence
    -// referring to demo::employee
    -BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    +// boost::fusion::adapted::adapted_employee is now a Fusion sequence
    +// referring to demo::employee
    +BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
         demo::employee, adapted_employee,
         (std::string, name, keys::name)
         (int, age, keys::age))
    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    index ff420185..f569fa19 100644
    --- a/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_adt.html
    @@ -34,7 +34,7 @@
             Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_ADT(
    @@ -46,7 +46,7 @@
         )
     
    - + Expression Semantics
    @@ -98,14 +98,14 @@ be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
     #include <boost/fusion/include/adapt_assoc_adt.hpp>
     
    - + Example
    namespace demo
    @@ -155,11 +155,11 @@
     demo::employee<std::string, int> e;
     at_key<keys::name>(e)="Edward Norton";
     at_key<keys::age>(e)=41;
    -//Prints 'Edward Norton is 41 years old'
    -std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +//Prints 'Edward Norton is 41 years old'
    +std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html index 4391918f..09cfa6a8 100644 --- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
    @@ -50,7 +50,7 @@
         )
     
    - + Semantics

    @@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
     #include <boost/fusion/include/adapt_assoc_struct.hpp>
     
    - + Example
    namespace demo
    @@ -98,10 +98,10 @@
         struct age;
     }
     
    -// Any instantiated demo::employee is now a Fusion sequence.
    -// It is also an associative sequence with
    -// keys keys::name and keys::age present.
    -BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
    +// Any instantiated demo::employee is now a Fusion sequence.
    +// It is also an associative sequence with
    +// keys keys::name and keys::age present.
    +BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
         (Name)(Age),
         (demo::employee) (Name)(Age),
         (Name, name, keys::name)
    diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
    index 57974449..cd1a5b54 100644
    --- a/doc/html/fusion/adapted/adapt_struct.html
    +++ b/doc/html/fusion/adapted/adapt_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT
     
     
    - + Description

    @@ -36,7 +36,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT(
    @@ -47,7 +47,7 @@
         )
     
    - + Semantics

    @@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    @@ -82,8 +82,8 @@
         };
     }
     
    -// demo::employee is now a Fusion sequence
    -BOOST_FUSION_ADAPT_STRUCT(
    +// demo::employee is now a Fusion sequence
    +BOOST_FUSION_ADAPT_STRUCT(
         demo::employee,
         (std::string, name)
         (int, age))
    diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html
    index 013db743..65af72eb 100644
    --- a/doc/html/fusion/adapted/adapt_struct_named.html
    +++ b/doc/html/fusion/adapted/adapt_struct_named.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_ADAPT_STRUCT_NAMED
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

    - + Synopsis
    BOOST_FUSION_ADAPT_STRUCT_NAMED(
    @@ -57,7 +57,7 @@
         )
     
    - + Semantics

    @@ -81,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
     #include <boost/fusion/include/adapt_struct_named.hpp>
     
    - + Example
    namespace demo
    @@ -100,9 +100,9 @@
         };
     }
     
    -// boost::fusion::adapted::adapted_employee is now a Fusion sequence
    -// referring to demo::employee
    -BOOST_FUSION_ADAPT_STRUCT_NAMED(
    +// boost::fusion::adapted::adapted_employee is now a Fusion sequence
    +// referring to demo::employee
    +BOOST_FUSION_ADAPT_STRUCT_NAMED(
         demo::employee, adapted_employee,
         (std::string, name)
         (int, age))
    diff --git a/doc/html/fusion/adapted/adapt_tpl_adt.html b/doc/html/fusion/adapted/adapt_tpl_adt.html
    index 05b829af..46a22756 100644
    --- a/doc/html/fusion/adapted/adapt_tpl_adt.html
    +++ b/doc/html/fusion/adapted/adapt_tpl_adt.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_ADAPT_ADT(
    @@ -45,7 +45,7 @@
         )
     
    - + Expression Semantics
    @@ -95,14 +95,14 @@ be adapted.

    - + Header
    #include <boost/fusion/adapted/adt/adapt_adt.hpp>
     #include <boost/fusion/include/adapt_adt.hpp>
     
    - + Example
      namespace demo
    @@ -146,11 +146,11 @@
       demo::employee<std::string, int> e;
       boost::fusion::front(e)="Edward Norton";
       boost::fusion::back(e)=41;
    -  //Prints 'Edward Norton is 41 years old'
    -  std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
    +  //Prints 'Edward Norton is 41 years old'
    +  std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html index 17e32d4e..da0dddf8 100644 --- a/doc/html/fusion/adapted/adapt_tpl_struct.html +++ b/doc/html/fusion/adapted/adapt_tpl_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_ADAPT_TPL_STRUCT

    - + Description

    @@ -37,7 +37,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_ADAPT_TPL_STRUCT(
    @@ -49,7 +49,7 @@
         )
     
    - + Semantics

    @@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

    - + Header
    #include <boost/fusion/adapted/struct/adapt_struct.hpp>
     #include <boost/fusion/include/adapt_struct.hpp>
     
    - + Example
    namespace demo
    @@ -89,8 +89,8 @@
         };
     }
     
    -// Any instantiated demo::employee is now a Fusion sequence
    -BOOST_FUSION_ADAPT_TPL_STRUCT(
    +// Any instantiated demo::employee is now a Fusion sequence
    +BOOST_FUSION_ADAPT_TPL_STRUCT(
         (Name)(Age),
         (demo::employee) (Name)(Age),
         (Name, name)
    diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html
    index 8cffb415..01390beb 100644
    --- a/doc/html/fusion/adapted/array.html
    +++ b/doc/html/fusion/adapted/array.html
    @@ -32,14 +32,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/array.hpp>
     #include <boost/fusion/include/array.hpp>
     
    - + Model of
    • @@ -47,7 +47,7 @@ Access Sequence
    - + Example
    int arr[3] = {1,2,3};
    diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
    index 61726eb3..0c46a131 100644
    --- a/doc/html/fusion/adapted/boost__array.html
    +++ b/doc/html/fusion/adapted/boost__array.html
    @@ -33,14 +33,14 @@
             Access Sequence.
           

    - + Header
    #include <boost/fusion/adapted/boost_array.hpp>
     #include <boost/fusion/include/boost_array.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    boost::array<int,3> arr = {{1,2,3}};
    @@ -60,7 +60,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index 4f6a2d89..9294ba1e 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -33,21 +33,21 @@ Sequence.

    - + Header
    #include <boost/fusion/adapted/boost_tuple.hpp>
     #include <boost/fusion/include/boost_tuple.hpp>
     
    - + Model of
    - + Example
    boost::tuple<int,std::string> example_tuple(101, "hello");
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index c2668af2..0b5f1a38 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -27,7 +27,7 @@ BOOST_FUSION_DEFINE_ASSOC_STRUCT

    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_STRUCT(
    @@ -68,7 +68,7 @@
     
     
     
    - + Expression Semantics
    @@ -182,14 +182,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    @@ -198,8 +198,8 @@
         struct age;
     }
     
    -// demo::employee is a Fusion sequence
    -BOOST_FUSION_DEFINE_ASSOC_STRUCT(
    +// demo::employee is a Fusion sequence
    +BOOST_FUSION_DEFINE_ASSOC_STRUCT(
         (demo), employee,
         (std::string, name, keys::name)
         (int, age, keys::age))
    diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    index 35f40611..7e065b27 100644
    --- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT
     
     
    - + Description

    @@ -38,7 +38,7 @@ Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
    @@ -73,7 +73,7 @@
     
     
     
    - + Expression Semantics
    @@ -187,14 +187,14 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
     #include <boost/fusion/include/define_assoc_struct.hpp>
     
    - + Example
    namespace keys
    @@ -203,8 +203,8 @@
         struct age;
     }
     
    -// Any instantiated demo::employee is a Fusion sequence
    -BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
    +// Any instantiated demo::employee is a Fusion sequence
    +BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
         (Name)(Age), (demo), employee,
         (Name, name, keys::name)
         (Age, age, keys::age))
    diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html
    index 72641a19..33c3f222 100644
    --- a/doc/html/fusion/adapted/define_struct.html
    +++ b/doc/html/fusion/adapted/define_struct.html
    @@ -33,7 +33,7 @@
             Access Sequence.
           

    - + Synopsis
    BOOST_FUSION_DEFINE_STRUCT(
    @@ -63,7 +63,7 @@
     
     
     
    - + Expression Semantics
    @@ -174,18 +174,18 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    -
    // demo::employee is a Fusion sequence
    -BOOST_FUSION_DEFINE_STRUCT(
    +
    // demo::employee is a Fusion sequence
    +BOOST_FUSION_DEFINE_STRUCT(
         (demo), employee,
         (std::string, name)
         (int, age))
    diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html
    index 961767ae..894eff87 100644
    --- a/doc/html/fusion/adapted/define_tpl_struct.html
    +++ b/doc/html/fusion/adapted/define_tpl_struct.html
    @@ -27,7 +27,7 @@
     BOOST_FUSION_DEFINE_TPL_STRUCT
     
     
    - + Description

    @@ -37,7 +37,7 @@ Access Sequence.

    - + Synopsis
    BOOST_FUSION_DEFINE_TPL_STRUCT(
    @@ -72,7 +72,7 @@
     
     
     
    - + Expression Semantics
    @@ -183,18 +183,18 @@
    - + Header
    #include <boost/fusion/adapted/struct/define_struct.hpp>
     #include <boost/fusion/include/define_struct.hpp>
     
    - + Example
    -
    // Any instantiated demo::employee is a Fusion sequence
    -BOOST_FUSION_DEFINE_TPL_STRUCT(
    +
    // Any instantiated demo::employee is a Fusion sequence
    +BOOST_FUSION_DEFINE_TPL_STRUCT(
         (Name)(Age), (demo), employee,
         (Name, name)
         (Age, age))
    diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html
    index 0a1a0a07..3d676161 100644
    --- a/doc/html/fusion/adapted/mpl_sequence.html
    +++ b/doc/html/fusion/adapted/mpl_sequence.html
    @@ -32,14 +32,14 @@
             sequences fully conforming fusion sequences.
           

    - + Header
    #include <boost/fusion/adapted/mpl.hpp>
     #include <boost/fusion/include/mpl.hpp>
     
    - + Model of
      @@ -60,7 +60,7 @@
    - + Example
    mpl::vector_c<int, 123, 456> vec_c;
    @@ -73,7 +73,7 @@
     std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index d1e7daa9..1b14b9a1 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -33,14 +33,14 @@ Access Sequence.

    - + Header
    #include <boost/fusion/adapted/std_pair.hpp>
     #include <boost/fusion/include/std_pair.hpp>
     
    - + Model of
    • @@ -48,7 +48,7 @@ Access Sequence
    - + Example
    std::pair<int, std::string> p(123, "Hola!!!");
    @@ -57,7 +57,7 @@
     std::cout << p << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index cf2bd9c5..15c069ef 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -44,7 +44,7 @@

    - + Lazy Evaluation

    @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

    - + Sequence Extension

    @@ -87,7 +87,7 @@ functions to convert back to the original sequence type.

    - + Header

    #include <boost/fusion/algorithm.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
    index fa060887..fbec2754 100644
    --- a/doc/html/fusion/algorithm/iteration.html
    +++ b/doc/html/fusion/algorithm/iteration.html
    @@ -35,7 +35,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header
    #include <boost/fusion/algorithm/iteration.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    index 6c356758..e9ce2933 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
    @@ -27,7 +27,7 @@
     accumulate
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     #include <boost/fusion/include/accumulate.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
    index aea7dc00..8e4a7e61 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
    @@ -27,7 +27,7 @@
     fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
     #include <boost/fusion/include/fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    index 62a259eb..e72a7c66 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
    @@ -27,14 +27,14 @@
     for_each
     
     
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence& seq, F f);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -126,21 +126,21 @@ in seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
     #include <boost/fusion/include/for_each.hpp>
     
    - + Example
    struct increment
    diff --git a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    index f57905b5..bd37dd03 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/iter_fold.html
    @@ -27,7 +27,7 @@
     iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
     #include <boost/fusion/include/iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    index 7c3cd0f6..ad4058a4 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_fold.html
    @@ -27,7 +27,7 @@
     reverse_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ the first call) and each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are the consecutive elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
     #include <boost/fusion/include/reverse_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    index 59a63666..0ea4f9af 100644
    --- a/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/functions/reverse_iter_fold.html
    @@ -27,7 +27,7 @@
     reverse_iter_fold
     
     
    - + Description

    @@ -41,7 +41,7 @@ if it is the first call) and iterators on each element of seq.

    - + Synopsis
    template<
    @@ -61,7 +61,7 @@
         Sequence const& seq, State const& initial_state, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -145,7 +145,7 @@

    - + Expression Semantics
    @@ -160,21 +160,21 @@ are consecutive iterators on the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
     #include <boost/fusion/include/reverse_iter_fold.hpp>
     
    - + Example
    struct make_string
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    index 1091af0b..fde6758a 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
    @@ -27,14 +27,14 @@
     accumulate
     
     
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/accumulate.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    index 3ad9dee0..f4730ec2 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
    @@ -27,14 +27,14 @@
     fold
     
     
    - + Description

    Returns the result type of fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    index 0768c556..ba879a7b 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
    @@ -31,11 +31,11 @@
                 return type of for_each is always void.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/iteration/for_each.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    index 5c677baf..28cbab4b 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/iter_fold.html
    @@ -27,14 +27,14 @@
     iter_fold
     
     
    - + Description

    Returns the result type of iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    index 55263c08..3a6ffaf2 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_fold.html
    @@ -27,14 +27,14 @@
     reverse_fold
     
     
    - + Description

    Returns the result type of reverse_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    index 78af3283..1a5435af 100644
    --- a/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    +++ b/doc/html/fusion/algorithm/iteration/metafunctions/reverse_iter_fold.html
    @@ -27,14 +27,14 @@
     reverse_iter_fold
     
     
    - + Description

    Returns the result type of reverse_iter_fold.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    #include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp>
    diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
    index 5bd7035d..b9ebb3c3 100644
    --- a/doc/html/fusion/algorithm/query.html
    +++ b/doc/html/fusion/algorithm/query.html
    @@ -34,7 +34,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header
    #include <boost/fusion/algorithm/query.hpp>
    diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
    index 25aa9ed7..3d881211 100644
    --- a/doc/html/fusion/algorithm/query/functions/all.html
    +++ b/doc/html/fusion/algorithm/query/functions/all.html
    @@ -27,7 +27,7 @@
     all
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
     #include <boost/fusion/include/all.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
    index dc41c38a..ff63f8c9 100644
    --- a/doc/html/fusion/algorithm/query/functions/any.html
    +++ b/doc/html/fusion/algorithm/query/functions/any.html
    @@ -27,7 +27,7 @@
     any
     
     
    - + Description

    @@ -38,7 +38,7 @@ least one element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -116,7 +116,7 @@

    - + Expression semantics
    @@ -132,21 +132,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
     #include <boost/fusion/include/any.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
    index ae6faaad..27d6fbea 100644
    --- a/doc/html/fusion/algorithm/query/functions/count.html
    +++ b/doc/html/fusion/algorithm/query/functions/count.html
    @@ -27,14 +27,14 @@
     count
     
     
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -128,21 +128,21 @@ t in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
     #include <boost/fusion/include/count.hpp>
     
    - + Example
    const vector<double,int,int> vec(1.0,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
    index ed672eee..914b7e72 100644
    --- a/doc/html/fusion/algorithm/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -127,21 +127,21 @@ in seq where f evaluates to true.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
     #include <boost/fusion/include/count_if.hpp>
     
    - + Example
    const vector<int,int,int> vec(1,2,3);
    diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
    index 6e64cf61..55905f7b 100644
    --- a/doc/html/fusion/algorithm/query/functions/find.html
    +++ b/doc/html/fusion/algorithm/query/functions/find.html
    @@ -27,14 +27,14 @@
     find
     
     
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
     #include <boost/fusion/include/find.hpp>
     
    - + Example
    const vector<char,int> vec('a','0');
    diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
    index db2d476e..59c9b9bc 100644
    --- a/doc/html/fusion/algorithm/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/functions/find_if.html
    @@ -32,11 +32,11 @@
                 Lambda Expression evaluates to boost::mpl::true_.
               

    - + Description
    - + Synopsis
    template<
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -117,7 +117,7 @@

    - + Expression Semantics
    @@ -135,7 +135,7 @@ if there is no such element.

    - + Complexity

    @@ -150,7 +150,7 @@

    - + Example
    const vector<double,int> vec(1.0,2);
    diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
    index 62fdae08..253b8f72 100644
    --- a/doc/html/fusion/algorithm/query/functions/none.html
    +++ b/doc/html/fusion/algorithm/query/functions/none.html
    @@ -27,7 +27,7 @@
     none
     
     
    - + Description

    @@ -38,7 +38,7 @@ element of seq.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -116,7 +116,7 @@

    - + Expression Semantics
    @@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
     #include <boost/fusion/include/none.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
    index e03920f1..a1de9271 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
    @@ -27,14 +27,14 @@
     all
     
     
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/all.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
    index 29c0ac44..ec934461 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
    @@ -27,14 +27,14 @@
     any
     
     
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/any.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
    index bd9d6664..bb273f00 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
    @@ -27,7 +27,7 @@
     count
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    index a8611466..d3aa6a91 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
    @@ -27,7 +27,7 @@
     count_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ given the sequence and predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/count_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
    index cfb81518..f1991780 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
    @@ -27,7 +27,7 @@
     find
     
     
    - + Description

    @@ -35,7 +35,7 @@ search types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    index 435d3f4d..d621d01d 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
    @@ -27,7 +27,7 @@
     find_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ predicate types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    #include <boost/fusion/algorithm/query/find_if.hpp>
    diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
    index ca99c2e5..ff200dcf 100644
    --- a/doc/html/fusion/algorithm/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
    @@ -27,14 +27,14 @@
     none
     
     
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/query/none.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
    index 491f4041..db733e02 100644
    --- a/doc/html/fusion/algorithm/transformation.html
    +++ b/doc/html/fusion/algorithm/transformation.html
    @@ -47,7 +47,7 @@
             

    - + Header
    #include <boost/fusion/algorithm/transformation.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
    index 2b4d93bb..13d98c32 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html
    @@ -27,14 +27,14 @@
     clear
     
     
    - + Description

    clear returns an empty sequence.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,21 +103,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
     #include <boost/fusion/include/clear.hpp>
     
    - + Example
    assert(clear(make_vector(1,2,3)) == make_vector());
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
    index f8a1dcd7..5356a5b1 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
    @@ -27,7 +27,7 @@
     erase
     
     
    - + Description

    @@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    template<
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.73. Parameters

    +

    Table 1.73. Parameters

    @@ -138,7 +138,7 @@

    - + Expression Semantics
    @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
     #include <boost/fusion/include/erase.hpp>
     
    - + Example
    const vector<int, double, char> vec(1, 2.0, 'c');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    index e1a544d4..6baf6ee0 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -39,7 +39,7 @@ key.

    - + Synposis
    template<
    @@ -49,7 +49,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -131,21 +131,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     #include <boost/fusion/include/erase_key.hpp>
     
    - + Example
    assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
    index f560c033..ced53806 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ the elements of a specified type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
     #include <boost/fusion/include/filter.hpp>
     
    - + Example
    const vector<int,int,long,long> vec(1,2,3,4);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    index cbd9be77..3647957c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -140,21 +140,21 @@ is the same as in the original sequence.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
     #include <boost/fusion/include/filter_if.hpp>
     
    - + Example
    const vector<int,int,double,double> vec(1,2,3.0,4.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
    index dc807048..f6ab7e02 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -129,7 +129,7 @@

    - + Expression Semantics
    @@ -150,21 +150,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
     #include <boost/fusion/include/insert.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    index d164f890..d66ace23 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -130,7 +130,7 @@

    - + Expression Semantics
    @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
     #include <boost/fusion/include/insert_range.hpp>
     
    - + Example
    const vector<int,int> vec(1,2);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
    index 400ac309..759ebb37 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/join.html
    @@ -27,7 +27,7 @@
     join
     
     
    - + Description

    @@ -35,7 +35,7 @@ first followed by the elements of the second.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -138,21 +138,21 @@ The order of the elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
     #include <boost/fusion/include/join.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    index 34f1968b..830a08d8 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
    @@ -27,14 +27,14 @@
     pop_back
     
     
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
     #include <boost/fusion/include/pop_back.hpp>
     
    - + Example
    assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    index 70e668a2..09db5260 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
    @@ -27,14 +27,14 @@
     pop_front
     
     
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -116,21 +116,21 @@ same order as they were in seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
     #include <boost/fusion/include/pop_front.hpp>
     
    - + Example
    assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    index c13a7d7a..f6de6327 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
    @@ -27,14 +27,14 @@
     push_back
     
     
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -129,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>
     #include <boost/fusion/include/push_back.hpp>
     
    - + Example
    assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    index fa15b654..45579f3e 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
    @@ -27,14 +27,14 @@
     push_front
     
     
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -130,21 +130,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
     #include <boost/fusion/include/push_front.hpp>
     
    - + Example
    assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
    index a567cd6e..4ed0bc9c 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ except those of a given type.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
     #include <boost/fusion/include/remove.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    index 1ff5fb50..e1e850ae 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -139,21 +139,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     #include <boost/fusion/include/remove_if.hpp>
     
    - + Example
    const vector<int,double> vec(1,2.0);
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
    index 1cfb9f92..089f9268 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ a new value.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
     #include <boost/fusion/include/replace.hpp>
     
    - + Example
    assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    index 0adf2832..134db565 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ replaced with a new value.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -149,21 +149,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     #include <boost/fusion/include/replace_if.hpp>
     
    - + Example
    struct odd
    diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    index e17d4804..5ce63812 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
    @@ -27,14 +27,14 @@
     reverse
     
     
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -120,21 +120,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
     #include <boost/fusion/include/reverse.hpp>
     
    - + Example
    assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
    index 7804e2bb..e9ccd583 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -134,7 +134,7 @@ within seq.

    - + Binary version synopsis
    @@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
    index b4b3281d..a93b81e8 100644
    --- a/doc/html/fusion/algorithm/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -114,21 +114,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
     #include <boost/fusion/include/zip.hpp>
     
    - + Example
    vector<int,char> v1(1, 'a');
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    index e6d828c7..a34554c2 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
    @@ -27,7 +27,7 @@
     clear
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.92. Parameters

    +

    Table 1.92. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/clear.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    index 9ec3b4e3..d2531010 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
    @@ -31,11 +31,11 @@
                 and range delimiting iterator types.
               

    - + Description
    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.93. Parameters

    +

    Table 1.93. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -168,14 +168,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    index db12afa0..07c351af 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
    @@ -27,7 +27,7 @@
     erase_key
     
     
    - + Description

    @@ -35,7 +35,7 @@ and key types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.94. Parameters

    +

    Table 1.94. Parameters

    @@ -113,7 +113,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/erase_key.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    index f6d65edb..196926db 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
    @@ -27,7 +27,7 @@
     filter
     
     
    - + Description

    @@ -35,7 +35,7 @@ and type to retain.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.83. Parameter

    +

    Table 1.83. Parameter

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    index 5df33319..daa229e0 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
    @@ -27,7 +27,7 @@
     filter_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate type.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameter

    +

    Table 1.84. Parameter

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/filter_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    index a79fe589..00151f7a 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
    @@ -27,7 +27,7 @@
     insert
     
     
    - + Description

    @@ -35,7 +35,7 @@ position iterator and insertion types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.95. Parameters

    +

    Table 1.95. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -151,14 +151,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    index d84977f5..adbc179e 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
    @@ -27,7 +27,7 @@
     insert_range
     
     
    - + Description

    @@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.96. Parameters

    +

    Table 1.96. Parameters

    @@ -132,7 +132,7 @@

    - + Expression Semantics
    @@ -160,14 +160,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/insert_range.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    index 0556673f..b1d2f82c 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
    @@ -27,14 +27,14 @@
     join
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/join.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    index 14695723..b03c1e27 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
    @@ -27,7 +27,7 @@
     pop_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.97. Parameters

    +

    Table 1.97. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    index ed609fd7..5a935b2b 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
    @@ -27,7 +27,7 @@
     pop_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.98. Parameters

    +

    Table 1.98. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -119,14 +119,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/pop_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    index ea1789e6..1a580ec6 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
    @@ -27,7 +27,7 @@
     push_back
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.99. Parameters

    +

    Table 1.99. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_back.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    index d5956a5c..43f0914d 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
    @@ -27,7 +27,7 @@
     push_front
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the input sequence and element to push.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.100. Parameters

    +

    Table 1.100. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -132,14 +132,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/push_front.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    index 0ff1ab0b..5f234fa5 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
    @@ -27,7 +27,7 @@
     remove
     
     
    - + Description

    @@ -35,7 +35,7 @@ removal types.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.89. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    index 6acc998d..e464c6ad 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
    @@ -27,7 +27,7 @@
     remove_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Lambda Expression predicate types.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.90. Parameters

    +

    Table 1.90. Parameters

    @@ -114,7 +114,7 @@

    - + Expression Semantics
    @@ -142,14 +142,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/remove_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    index f20b0662..3137babb 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
    @@ -27,7 +27,7 @@
     replace
     
     
    - + Description

    @@ -35,7 +35,7 @@ the input sequence and element to replace.

    - + Synopsis
    template<
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    index c8eac0c8..a25c4682 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
    @@ -27,7 +27,7 @@
     replace_if
     
     
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -131,7 +131,7 @@

    - + Expression Semantics
    @@ -146,14 +146,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/replace_if.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    index cda4da02..d92214c4 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
    @@ -27,7 +27,7 @@
     reverse
     
     
    - + Description

    @@ -35,7 +35,7 @@ type.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.91. Parameters

    +

    Table 1.91. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/reverse.hpp>
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    index b549428d..d3ee6800 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
    @@ -27,7 +27,7 @@
     transform
     
     
    - + Description

    @@ -38,7 +38,7 @@ of seq.

    - + Unary version synopsis
    @@ -50,7 +50,7 @@ Sequence const& seq, F f);
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -118,7 +118,7 @@

    - + Expression Semantics
    @@ -145,7 +145,7 @@ within seq.

    - + Binary version synopsis
    @@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
    #include <boost/fusion/algorithm/transformation/transform.hpp>
     #include <boost/fusion/include/transform.hpp>
     
    - + Example
    struct triple
    diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    index 764c7cb1..92d8e1ee 100644
    --- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
    @@ -27,7 +27,7 @@
     zip
     
     
    - + Description

    @@ -35,7 +35,7 @@ of the members of the component sequences.

    - + Synopsis
    template<
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -72,14 +72,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    #include <boost/fusion/algorithm/transformation/zip.hpp>
    diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html
    index 456e8d6b..835efdf2 100644
    --- a/doc/html/fusion/container.html
    +++ b/doc/html/fusion/container.html
    @@ -49,7 +49,7 @@
           These containers are more or less counterparts of those in STL.
         

    - + Header

    #include <boost/fusion/container.hpp>
    diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
    index 80af5567..892bf0c0 100644
    --- a/doc/html/fusion/container/cons.html
    +++ b/doc/html/fusion/container/cons.html
    @@ -27,7 +27,7 @@
     cons
     
     
    - + Description

    @@ -42,21 +42,21 @@ Inlined Functions).

    - + Header
    #include <boost/fusion/container/list/cons.hpp>
     #include <boost/fusion/include/cons.hpp>
     
    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct cons;
     
    - + Template parameters
    @@ -117,7 +117,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -292,7 +292,7 @@

    - + Example
    cons<int, cons<float> > l(12, cons<float>(5.5f));
    diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
    index b60fd0cc..e1cccef8 100644
    --- a/doc/html/fusion/container/conversion.html
    +++ b/doc/html/fusion/container/conversion.html
    @@ -35,7 +35,7 @@
             types using one of these conversion functions.
           

    - + Header
    #include <boost/fusion/include/convert.hpp>
    diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
    index c3f33bbc..e1172ada 100644
    --- a/doc/html/fusion/container/conversion/functions/as_list.html
    +++ b/doc/html/fusion/container/conversion/functions/as_list.html
    @@ -27,14 +27,14 @@
     as_list
     
     
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    as_list(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
    index c115fe43..77cd3e26 100644
    --- a/doc/html/fusion/container/conversion/functions/as_map.html
    +++ b/doc/html/fusion/container/conversion/functions/as_map.html
    @@ -27,14 +27,14 @@
     as_map
     
     
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,18 +106,17 @@

    Precondition: The elements of the sequence - are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + are assumed to be __fusion_pair__s. There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    as_map(make_vector(
    diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
    index 789ebdea..5d6ae4cb 100644
    --- a/doc/html/fusion/container/conversion/functions/as_set.html
    +++ b/doc/html/fusion/container/conversion/functions/as_set.html
    @@ -27,14 +27,14 @@
     as_set
     
     
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    as_set(make_vector('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
    index f9f1ab9d..efca0b8a 100644
    --- a/doc/html/fusion/container/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/functions/as_vector.html
    @@ -27,14 +27,14 @@
     as_vector
     
     
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ seq, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    as_vector(make_list('x', 123, "hello"))
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    index c68d40df..019605c6 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html
    @@ -27,21 +27,21 @@
     as_list
     
     
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    template <typename Sequence>
     struct as_list;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a list.

    - + Header
    #include <boost/fusion/container/list/convert.hpp>
     #include <boost/fusion/include/as_list.hpp>
     
    - + Example
    result_of::as_list<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    index af5c29a0..7658114b 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
    @@ -27,21 +27,21 @@
     as_map
     
     
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    template <typename Sequence>
     struct as_map;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -102,18 +102,17 @@

    Precondition: The elements of the sequence - are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + are assumed to be __fusion_pair__s. There may be no duplicate fusion::pair key types.

    - + Header
    #include <boost/fusion/container/map/convert.hpp>
     #include <boost/fusion/include/as_map.hpp>
     
    - + Example
    result_of::as_map<vector<
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    index c2f1d5ac..0e94baf3 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
    @@ -27,21 +27,21 @@
     as_set
     
     
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    template <typename Sequence>
     struct as_set;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ key types.

    - + Header
    #include <boost/fusion/container/set/convert.hpp>
     #include <boost/fusion/include/as_set.hpp>
     
    - + Example
    result_of::as_set<vector<char, int> >::type
    diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    index e735e215..fe16c4c3 100644
    --- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
    @@ -27,21 +27,21 @@
     as_vector
     
     
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    template <typename Sequence>
     struct as_vector;
     
    - + Parameters
    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ Sequence, to a vector.

    - + Header
    #include <boost/fusion/container/vector/convert.hpp>
     #include <boost/fusion/include/as_vector.hpp>
     
    - + Example
    result_of::as_vector<list<char, int> >::type
    diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
    index e6a2893b..0b54ff8a 100644
    --- a/doc/html/fusion/container/generation.html
    +++ b/doc/html/fusion/container/generation.html
    @@ -34,7 +34,7 @@
             These are the functions that you can use to generate various forms of Container from elemental values.
           

    - + Header
    #include <boost/fusion/container/generation.hpp>
    diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
    index ae8e573b..6e45762f 100644
    --- a/doc/html/fusion/container/generation/functions/list_tie.html
    +++ b/doc/html/fusion/container/generation/functions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
    index 9142fa0c..bf206bdf 100644
    --- a/doc/html/fusion/container/generation/functions/make_cons.html
    +++ b/doc/html/fusion/container/generation/functions/make_cons.html
    @@ -27,7 +27,7 @@
     make_cons
     
     
    - + Description

    @@ -36,7 +36,7 @@ and optional cdr (tail).

    - + Synopsis
    template <typename Car>
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -127,20 +127,20 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 6d0de250..946d6f51 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -27,7 +27,7 @@ make_list
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index 5d313b40..2eef475c 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -27,7 +27,7 @@ make_map
    - + Description

    @@ -35,7 +35,7 @@ from one or more key/data pairs.

    - + Synopsis
    template <
    @@ -55,7 +55,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -123,7 +123,7 @@
    - + Expression Semantics
    @@ -143,20 +143,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    make_map<int, double>('X', "Men")
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 74905a30..6ac89e89 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -27,7 +27,7 @@ make_set
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -117,20 +117,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    make_set(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index e654f05d..5c9b05b6 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -27,7 +27,7 @@ make_vector
    - + Description

    @@ -35,7 +35,7 @@ from one or more values.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -100,7 +100,7 @@
    - + Expression Semantics
    @@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/make_vector.hpp>
     #include <boost/fusion/include/make_vector.hpp>
     
    - + Example
    make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 3438f140..34d1d229 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -27,14 +27,14 @@ map_tie
    - + Description

    Constructs a tie using a map sequence.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
    index 58db9d7e..bf5d8595 100644
    --- a/doc/html/fusion/container/generation/functions/tiers.html
    +++ b/doc/html/fusion/container/generation/functions/tiers.html
    @@ -54,7 +54,7 @@
                 The vector_tie function creates
                 a vector
                 of type vector<int&, char&, double&>. The same result could be achieved
    -            with the call make_vector(ref(i), ref(c), ref(a)) [9].
    +            with the call make_vector(ref(i), ref(c), ref(a)) [9].
               

    A tie can be used to 'unpack' another tuple into @@ -70,7 +70,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -84,7 +84,7 @@



    -

    [9] +

    [9] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 27acc91f..074dde96 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -27,14 +27,14 @@ vector_tie
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -52,7 +52,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    int i = 123;
    diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    index e99b25b9..230a78a2 100644
    --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html
    @@ -27,14 +27,14 @@
     list_tie
     
     
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/list_tie.hpp>
     #include <boost/fusion/include/list_tie.hpp>
     
    - + Example
    result_of::list_tie<int, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    index ec8635f5..0a3e2872 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
    @@ -27,21 +27,21 @@
     make_cons
     
     
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    template <typename Car, typename Cdr = nil>
     struct make_cons;
     
    - + Parameters
    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ (tail).

    - + Header
    #include <boost/fusion/container/generation/make_cons.hpp>
     #include <boost/fusion/include/make_cons.hpp>
     
    - + Example
    result_of::make_cons<char, result_of::make_cons<int>::type>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
    index b680eebb..a9190387 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
    @@ -27,14 +27,14 @@
     make_list
     
     
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_list<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
    index a056a9ab..65a9a2fe 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
    @@ -27,14 +27,14 @@
     make_map
     
     
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    template <
    @@ -53,7 +53,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -121,7 +121,7 @@
    - + Expression Semantics
    @@ -140,20 +140,20 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_map.hpp>
     #include <boost/fusion/include/make_map.hpp>
     
    - + Example
    result_of::make_map<int, double, char, double>::type
     
    - + See also
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index be5d1752..26a7272b 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -27,14 +27,14 @@ make_set
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -117,14 +117,14 @@ key types.

    - + Header
    #include <boost/fusion/container/generation/make_set.hpp>
     #include <boost/fusion/include/make_set.hpp>
     
    - + Example
    result_of::make_set<int, char, double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    index 447aa4b7..1b669d31 100644
    --- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
    +++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
    @@ -27,14 +27,14 @@
     make_vector
     
     
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/make_list.hpp>
     #include <boost/fusion/include/make_list.hpp>
     
    - + Example
    result_of::make_vector<int, const char(&)[7], double>::type
    diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    index d5114a43..f2ea1fef 100644
    --- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
    @@ -27,14 +27,14 @@
     map_tie
     
     
    - + Description

    Returns the result type of map_tie.

    - + Synopsis
    template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Parameters
    @@ -119,7 +119,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

    - + Header
    #include <boost/fusion/container/generation/map_tie.hpp>
     #include <boost/fusion/include/map_tie.hpp>
     
    - + Example
    struct int_key;
    diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    index 97593bbe..0a902f3d 100644
    --- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
    @@ -27,14 +27,14 @@
     vector_tie
     
     
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    template <typename T0, typename T1,... typename TN>
    @@ -51,7 +51,7 @@
     
    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
    #include <boost/fusion/container/generation/vector_tie.hpp>
     #include <boost/fusion/include/vector_tie.hpp>
     
    - + Example
    result_of::vector_tie<int, double>::type
    diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
    index dd4c5368..44c7344f 100644
    --- a/doc/html/fusion/container/list.html
    +++ b/doc/html/fusion/container/list.html
    @@ -27,7 +27,7 @@
     list
     
     
    - + Description

    @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    #include <boost/fusion/container/list.hpp>
    @@ -47,7 +47,7 @@
     #include <boost/fusion/include/list_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -75,7 +75,7 @@
     
    #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -120,7 +120,7 @@
    - + Model of
    • @@ -154,7 +154,7 @@
    - + Expression Semantics

    @@ -261,7 +261,7 @@

    - + Example
    list<int, float> l(12, 5.5f);
    diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
    index 376623c8..3dd55981 100644
    --- a/doc/html/fusion/container/map.html
    +++ b/doc/html/fusion/container/map.html
    @@ -27,7 +27,7 @@
     map
     
     
    - + Description

    @@ -40,7 +40,7 @@ (see Overloaded Functions).

    - + Header
    #include <boost/fusion/container/map.hpp>
    @@ -49,7 +49,7 @@
     #include <boost/fusion/include/map_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -77,7 +77,7 @@
     
    #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -122,7 +122,7 @@
    - + Model of
      @@ -157,7 +157,7 @@
    - + Expression Semantics

    @@ -241,7 +241,7 @@

    - + Example
    typedef map<
    diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
    index b6833c2e..a44b9248 100644
    --- a/doc/html/fusion/container/set.html
    +++ b/doc/html/fusion/container/set.html
    @@ -27,7 +27,7 @@
     set
     
     
    - + Description

    @@ -39,7 +39,7 @@ Functions).

    - + Header
    #include <boost/fusion/container/set.hpp>
    @@ -48,7 +48,7 @@
     #include <boost/fusion/include/set_fwd.hpp>
     
    - + Synopsis
    template <
    @@ -76,7 +76,7 @@
     
    #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -121,7 +121,7 @@
    - + Model of
      @@ -156,7 +156,7 @@
    - + Expression Semantics

    @@ -240,7 +240,7 @@

    - + Example
    typedef set<int, float> S;
    diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
    index b7adbfa2..5630b681 100644
    --- a/doc/html/fusion/container/vector.html
    +++ b/doc/html/fusion/container/vector.html
    @@ -27,7 +27,7 @@
     vector
     
     
    - + Description

    @@ -39,7 +39,7 @@ efficient.

    - + Header
    #include <boost/fusion/container/vector.hpp>
    @@ -47,8 +47,8 @@
     #include <boost/fusion/container/vector/vector_fwd.hpp>
     #include <boost/fusion/include/vector_fwd.hpp>
     
    -// numbered forms
    -#include <boost/fusion/container/vector/vector10.hpp>
    +// numbered forms
    +#include <boost/fusion/container/vector/vector10.hpp>
     #include <boost/fusion/include/vector10.hpp>
     #include <boost/fusion/container/vector/vector20.hpp>
     #include <boost/fusion/include/vector20.hpp>
    @@ -60,7 +60,7 @@
     #include <boost/fusion/include/vector50.hpp>
     
    - + Synopsis

    @@ -115,7 +115,7 @@

    #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -160,7 +160,7 @@
    - + Model of
    • @@ -190,7 +190,7 @@
    - + Expression Semantics

    @@ -273,7 +273,7 @@

    - + Example
    vector<int, float> v(12, 5.5f);
    diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
    index b1285f09..3bd04ac0 100644
    --- a/doc/html/fusion/extension/ext_full.html
    +++ b/doc/html/fusion/extension/ext_full.html
    @@ -50,7 +50,7 @@
               
     
     
    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching
    @@ -91,8 +91,8 @@ a new tag type for the mechanism to use. For example:

    namespace example {
    -    struct example_sequence_tag; // Only definition needed
    -}
    +    struct example_sequence_tag; // Only definition needed
    +}
     

    Next we need to enable the traits::tag_of @@ -121,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>

    - + Designing a suitable iterator
    @@ -183,7 +183,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features
    @@ -323,7 +323,7 @@

    - + Implementing the remaining iterator functionality
    @@ -374,7 +374,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence
    @@ -430,7 +430,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative sequence
    @@ -438,9 +438,8 @@ In order for example_struct to serve as an associative forward sequence, we need to adapt the traversal category of our sequence and our iterator accordingly and enable 3 intrinsic - sequence lookup features, at_key, __value_atkey_ - and has_key. We also need to enable - 3 iterator lookup features, result_of::key_of, result_of::value_of_data and deref_data. + sequence lookup features, at_key, __value_at_key__ and has_key. + We also need to enable 3 iterator lookup features, result_of::key_of, result_of::value_of_data and deref_data.

    To implement at_key_impl @@ -495,7 +494,7 @@ are provided in the example code.

    - + Summary

    diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 58b73e5b..40c8a1ae 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -27,7 +27,7 @@ Iterator Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag>
     struct iterator_facade;
     
    - + Usage

    @@ -57,7 +57,7 @@ type.

    -

    Table 1.103. Parameters

    +

    Table 1.103. Parameters

    @@ -106,7 +106,7 @@

    -

    Table 1.104. Key Expressions

    +

    Table 1.104. Key Expressions

    @@ -439,14 +439,14 @@

    - + Header
    #include <boost/fusion/iterator/iterator_facade.hpp>
     #include <boost/fusion/include/iterator_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 19e9a1c5..df6594a7 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -27,7 +27,7 @@ Sequence Facade

    - + Description

    @@ -36,14 +36,14 @@ iterator.

    - + Synopsis
    template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
     struct sequence_facade;
     
    - + Usage

    @@ -59,7 +59,7 @@ type.

    -

    Table 1.101. Parameters

    +

    Table 1.101. Parameters

    @@ -107,7 +107,7 @@

    -

    Table 1.102. Key Expressions

    +

    Table 1.102. Key Expressions

    @@ -244,14 +244,14 @@

    - + Include
    #include <boost/fusion/sequence/sequence_facade.hpp>
     #include <boost/fusion/include/sequence_facade.hpp>
     
    - + Example

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 4cc11d9a..1ec0d730 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -63,13 +63,13 @@ through a function object interface.

    - + Header

    #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -103,7 +103,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 917bb642..2f20f4af 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -27,7 +27,7 @@ fused
    - + Description

    @@ -54,20 +54,20 @@ and boost::shared_ptr).

    - + Header
    #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -148,7 +148,7 @@
    - + Expression Semantics
    @@ -213,14 +213,14 @@
    - + Example
    fused< std::plus<long> > f;
     assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 1e64065e..38ee1863 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -27,7 +27,7 @@ fused_function_object
    - + Description

    @@ -44,20 +44,20 @@ object is held by value, the adapter is const).

    - + Header
    #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    template <class Function>
     class fused_function_object;
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
    @@ -139,7 +139,7 @@
    - + Expression Semantics
    @@ -204,7 +204,7 @@
    - + Example
    template<class SeqOfSeqs, class Func>
    @@ -241,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index a575b0fd..671f3da5 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -27,7 +27,7 @@ fused_procedure
    - + Description

    @@ -62,20 +62,20 @@ case is not implemented).

    - + Header
    #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    template <typename Function>
     class fused_procedure;
     
    - + Template parameters
    @@ -119,7 +119,7 @@
    - + Model of
    @@ -157,7 +157,7 @@
    - + Expression Semantics
    @@ -222,7 +222,7 @@
    - + Example
    template<class SequenceOfSequences, class Func>
    @@ -242,7 +242,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index b6f2f62e..377f2ba6 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/adapter/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index c7169426..2e631692 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -27,7 +27,7 @@ unfused

    - + Description

    @@ -57,20 +57,20 @@ object is held by value, the adapter is const.

    - + Header
    #include <boost/fusion/functional/adapter/unfused.hpp>
     
    - + Synopsis
    template <class Function, bool AllowNullary = true>
     class unfused;
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
      @@ -174,7 +174,7 @@
    - + Expression Semantics
    @@ -239,7 +239,7 @@
    - + Example
    struct fused_incrementer
    @@ -266,7 +266,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 66836c24..6b5d14da 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -27,7 +27,7 @@ unfused_typed
    - + Description

    @@ -66,20 +66,20 @@

    - + Header
    #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    template <class Function, class Sequence>
     class unfused_typed;
     
    - + Template parameters
    @@ -139,7 +139,7 @@
    - + Model of
    @@ -186,7 +186,7 @@
    - + Expression Semantics
    @@ -253,13 +253,13 @@
    - + Example
    -
    struct add_assign // applies operator+=
    -{
    -    typedef void result_type; // for simplicity
    -
    +
    struct add_assign // applies operator+=
    +{
    +    typedef void result_type; // for simplicity
    +
         template <typename T>
         void operator()(T & lhs, T const & rhs) const
         {
    @@ -285,8 +285,8 @@
         }
     };
     
    -// accepts a tie and creates a typed function object from it
    -struct fused_parallel_adder_maker
    +// accepts a tie and creates a typed function object from it
    +struct fused_parallel_adder_maker
     {
         template <typename Sig>
         struct result;
    @@ -312,16 +312,16 @@
     void try_it()
     {
         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);
    +    // 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');
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 3e6b576d..47293f37 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -27,7 +27,7 @@ Callable Object
    - + Description

    @@ -36,7 +36,7 @@ of a function call operator.

    - + Models
      @@ -51,7 +51,7 @@
    - + Examples
    & a_free_function
    @@ -59,8 +59,8 @@
     & a_class::a_nonstatic_data_member
     & a_class::a_nonstatic_member_function
     std::less<int>()
    -// using namespace boost;
    -bind(std::less<int>(), _1, 5)
    +// using namespace boost;
    +bind(std::less<int>(), _1, 5)
     lambda::_1 += lambda::_2;
     fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html index 1865c8c3..815bf0de 100644 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -28,7 +28,7 @@ Object
    - + Description

    @@ -37,7 +37,7 @@ to determine the result of a call.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -117,7 +117,7 @@
    - + Models
      @@ -130,7 +130,7 @@
    - + Examples
    & a_free_function
    @@ -138,10 +138,10 @@
     & a_class::a_nonstatic_data_member
     & a_class::a_nonstatic_member_function
     std::less<int>()
    -// using namespace boost;
    -bind(std::less<int>(), _1, 5)
    -// Note: Boost.Lambda expressions don't work with __boost_result_of__
    -fusion::make_fused_function_object(std::less<int>())
    +// using namespace boost;
    +bind(std::less<int>(), _1, 5)
    +// Note: Boost.Lambda expressions don't work with __boost_result_of__
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index 68072114..b31c240c 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -28,7 +28,7 @@ Object
    - + Description

    @@ -36,7 +36,7 @@ Callable Object type.

    - + Refinement of
    @@ -79,7 +79,7 @@
    - + Expression requirements
    @@ -128,7 +128,7 @@
    - + Models
      @@ -143,16 +143,16 @@
    - + Examples
    & a_free_function
     & a_class::a_static_member_function
     std::less<int>()
    -// using namespace boost;
    -bind(std::less<int>(), _1, 5)
    -// Note: Boost.Lambda expressions don't work with __boost_result_of__
    -fusion::make_fused_function_object(std::less<int>())
    +// using namespace boost;
    +bind(std::less<int>(), _1, 5)
    +// Note: Boost.Lambda expressions don't work with __boost_result_of__
    +fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html index c781fdcc..80eac1f1 100644 --- a/doc/html/fusion/functional/concepts/reg_callable.html +++ b/doc/html/fusion/functional/concepts/reg_callable.html @@ -28,7 +28,7 @@ Object
    - + Description

    @@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

    - + Refinement of
    @@ -67,7 +67,7 @@
    - + Expression requirements
    @@ -114,7 +114,7 @@
    - + Models
      @@ -126,14 +126,14 @@
    - + Examples
    & a_free_function
     & a_class::a_static_member_function
     std::less<int>()
    -// using namespace boost;
    -bind(std::less<int>(), _1, 5)
    +// using namespace boost;
    +bind(std::less<int>(), _1, 5)
     lambda::_1 += lambda::_2;
     fusion::make_fused_function_object(std::less<int>())
     
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index 0cb19dab..0b0dd592 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -27,7 +27,7 @@ make_fused
    - + Description

    @@ -36,7 +36,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -44,7 +44,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Example
    float sub(float a, float b) { return a - b; }
    @@ -125,7 +125,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 f12f42cf..68969bc7 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -27,7 +27,7 @@ make_fused_function_object
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ for f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Example
    struct sub
    @@ -140,7 +140,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 1e194458..425ec0ee 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -27,7 +27,7 @@ make_fused_procedure
    - + Description

    @@ -37,7 +37,7 @@ conversion applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -105,14 +105,14 @@ f.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Example
    vector<int,int,int> v(1,2,3);
    @@ -121,7 +121,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index 3f143c92..99b06363 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -27,7 +27,7 @@ make_unfused
    - + Description

    @@ -37,7 +37,7 @@ conversion is applied to the target function.

    - + Synopsis
    template <typename F>
    @@ -45,7 +45,7 @@
     make_unfused(F const & f);
     
    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ Semantics: Returns a unfused adapter for f.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Example
    struct fused_incrementer
    @@ -137,7 +137,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 baa8421b..1803e10d 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -27,21 +27,21 @@ make_fused
    - + Description

    Returns the result type of make_fused.

    - + Header
    #include <boost/fusion/functional/generation/make_fused.hpp>
     #include <boost/fusion/include/make_fused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 5cb845b0..981fc0ed 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -27,21 +27,21 @@ make_fused_function_object
    - + Description

    Returns the result type of make_fused_function_object.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     #include <boost/fusion/include/make_fused_function_object.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,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 2b1d31b9..6054225b 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -27,21 +27,21 @@ make_fused_procedure
    - + Description

    Returns the result type of make_fused_procedure.

    - + Header
    #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     #include <boost/fusion/include/make_fused_procedure.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 5de11c9b..c26b8169 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -27,21 +27,21 @@ make_unfused
    - + Description

    Returns the result type of make_unfused.

    - + Header
    #include <boost/fusion/functional/generation/make_unfused.hpp>
     #include <boost/fusion/include/make_unfused.hpp>
     
    - + Synopsis
    namespace result_of
    @@ -54,7 +54,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 16043212..2fb42f2c 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@ invoke
    - + Description

    @@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -67,7 +67,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -133,7 +133,7 @@
    - + Expression Semantics
    @@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke.hpp>
     
    - + Example
    std::plus<int> add;
     assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index 48126b37..5b6ebbd3 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -27,7 +27,7 @@ invoke_function_object
    - + Description

    @@ -42,7 +42,7 @@ Constructors can be called applying Boost.Functional/Factory.

    - + Synopsis
    template<
    @@ -60,7 +60,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -126,7 +126,7 @@
    - + Expression Semantics
    @@ -142,13 +142,13 @@ as arguments and returns the result of the call expression.

    - + Header
    #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
    struct sub
    @@ -174,7 +174,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 93df7d11..a701377c 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -27,7 +27,7 @@ invoke_procedure
    - + Description

    @@ -51,7 +51,7 @@ isn't implemented).

    - + Synopsis
    template<
    @@ -69,7 +69,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -150,13 +150,13 @@ as arguments.

    - + Header
    #include <booost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    vector<int,int> v(1,2);
    @@ -165,7 +165,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 8f1c12a0..265fbc81 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -27,13 +27,13 @@ Limits
    - + Header
    #include <boost/fusion/functional/invocation/limits.hpp>
     
    - + Macros

    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 0dded429..838b8635 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,14 +27,14 @@ invoke

    - + Description

    Returns the result type of invoke.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 ffac9602..745c097b 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -27,14 +27,14 @@ invoke_function_object
    - + Description

    Returns the result type of invoke_function_object.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,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 87d17c12..80812e75 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -27,14 +27,14 @@ invoke_procedure
    - + Description

    Returns the result type of invoke_procedure.

    - + Synopsis
    namespace result_of
    @@ -50,7 +50,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 84404fde..1bc5b147 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -116,7 +116,7 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types [1]. In MPL, + wish to work solely on types [1]. In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from @@ -130,7 +130,7 @@



    -

    [1] +

    [1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 9e34d958..6e03bea0 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -81,7 +81,7 @@ Sequence.

    - + Header

    #include <boost/fusion/iterator.hpp>
    diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html
    index e3baacc4..2235d447 100644
    --- a/doc/html/fusion/iterator/concepts/associative_iterator.html
    +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html
    @@ -28,7 +28,7 @@
             Iterator
     
    - + Description

    @@ -50,7 +50,7 @@

    - + Refinement of
    @@ -61,7 +61,7 @@ Access Iterator

    - + Expression requirements
    @@ -113,7 +113,7 @@
    - + Meta Expressions
    @@ -174,7 +174,7 @@
    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 24cc1fb7..6d3821d4 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -28,7 +28,7 @@ Iterator
    - + Description

    @@ -58,7 +58,7 @@

    - + Refinement of
    @@ -66,7 +66,7 @@ Forward Iterator

    - + Expression requirements
    @@ -173,7 +173,7 @@
    - + Meta Expressions
    @@ -208,7 +208,7 @@
    - + Expression Semantics
    @@ -248,7 +248,7 @@
    - + Invariants

    @@ -269,7 +269,7 @@

    - + Models
    - + Description

    @@ -59,7 +59,7 @@

    - + Expression requirements
    @@ -237,7 +237,7 @@
    - + Meta Expressions
    @@ -348,133 +348,29 @@
    - + Expression Semantics
    -
    ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Expression -

    -
    -

    - Semantics -

    -
    -

    - next(i) -

    -
    -

    - An iterator to the element following i -

    -
    -

    - i == - j -

    -
    -

    - Iterator equality comparison -

    -
    -

    - i != - j -

    -
    -

    - Iterator 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 -

    -
    -

    - *i -

    -
    -

    - Equivalent to deref(i) -

    -
    +

    + [ table [[Expression] [Semantics]] [[next(i)] [An + iterator to the element following i]] + [[i == + j] [Iterator equality comparison]] + [[i != + j] [Iterator 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]] + [[*i] + [Equivalent to deref(i)]] + ] +

    - + Invariants

    @@ -505,7 +401,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index e478a45f..bec84fce 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -28,7 +28,7 @@ Access Iterator
    - + Description

    @@ -59,7 +59,7 @@

    - + Refinement of
    @@ -68,7 +68,7 @@ Iterator

    - + Expression requirements
    @@ -175,7 +175,7 @@
    - + Meta Expressions
    @@ -238,7 +238,7 @@
    - + Models
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i);
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -109,7 +109,7 @@

    - + Expression Semantics
    @@ -128,14 +128,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
    index 6a1866ac..11789f34 100644
    --- a/doc/html/fusion/iterator/functions/advance_c.html
    +++ b/doc/html/fusion/iterator/functions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::advance_c<I, N>::type advance_c(I const& i);
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -108,7 +108,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
    index 8e373a1f..dd61cf60 100644
    --- a/doc/html/fusion/iterator/functions/deref.html
    +++ b/doc/html/fusion/iterator/functions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -102,14 +102,14 @@ i.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
    index c52acef4..c00b61fb 100644
    --- a/doc/html/fusion/iterator/functions/deref_data.html
    +++ b/doc/html/fusion/iterator/functions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ an associative iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref_data<I>::type deref(I const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

    - + Header
    #include <boost/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int&> > map;
    diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
    index f51a8a3e..baf7f4ee 100644
    --- a/doc/html/fusion/iterator/functions/distance.html
    +++ b/doc/html/fusion/iterator/functions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ iterators i and j.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
    index 18414f15..3b512955 100644
    --- a/doc/html/fusion/iterator/functions/next.html
    +++ b/doc/html/fusion/iterator/functions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ next element after i.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,int,int> vec;
    diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
    index 30d5ba4d..20be4628 100644
    --- a/doc/html/fusion/iterator/functions/prior.html
    +++ b/doc/html/fusion/iterator/functions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    template<
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -88,7 +88,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ element prior to i.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,int> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
    index 0c56cbb5..db9a7f10 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance.html
    @@ -27,14 +27,14 @@
     advance
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -112,7 +112,7 @@

    - + Expression Semantics
    @@ -130,14 +130,14 @@ may be negative.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
    index 98e5e753..cdf7b3fe 100644
    --- a/doc/html/fusion/iterator/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
    @@ -27,14 +27,14 @@
     advance_c
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
    #include <boost/fusion/iterator/advance.hpp>
     #include <boost/fusion/include/advance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
    index c485a0bb..7f0538e7 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref.html
    @@ -27,14 +27,14 @@
     deref
     
     
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ an iterator of type I.

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
    index ba7aaa2c..45e5d404 100644
    --- a/doc/html/fusion/iterator/metafunctions/deref_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
    @@ -27,7 +27,7 @@
     deref_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ referenced by an associative iterator.

    - + Synposis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

    - + Header
    #include <boosta/fusion/iterator/deref_data.hpp>
     #include <boost/fusion/include/deref_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > map;
    diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
    index a057e497..01987a67 100644
    --- a/doc/html/fusion/iterator/metafunctions/distance.html
    +++ b/doc/html/fusion/iterator/metafunctions/distance.html
    @@ -27,14 +27,14 @@
     distance
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -108,14 +108,14 @@ J.

    - + Header
    #include <boost/fusion/iterator/distance.hpp>
     #include <boost/fusion/include/distance.hpp>
     
    - + Example
    typedef vector<int,double,char> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
    index 7d0de7b4..3203315f 100644
    --- a/doc/html/fusion/iterator/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
    @@ -27,7 +27,7 @@
     equal_to
     
     
    - + Description

    @@ -36,7 +36,7 @@ and J are equal.

    - + Synopsis
    template<
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -93,7 +93,7 @@

    - + Expression Semantics
    @@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
    index f540ab0b..b402df0f 100644
    --- a/doc/html/fusion/iterator/metafunctions/key_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/key_of.html
    @@ -27,7 +27,7 @@
     key_of
     
     
    - + Description

    @@ -35,7 +35,7 @@ iterator.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

    - + Header
    #include <boost/fusion/iterator/key_of.hpp>
     #include <boost/fusion/include/key_of.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
    index f6b60220..40ccb7e0 100644
    --- a/doc/html/fusion/iterator/metafunctions/next.html
    +++ b/doc/html/fusion/iterator/metafunctions/next.html
    @@ -27,14 +27,14 @@
     next
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ next element in the sequence after I.

    - + Header
    #include <boost/fusion/iterator/next.hpp>
     #include <boost/fusion/include/next.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
    index e6485d97..e62a7fe8 100644
    --- a/doc/html/fusion/iterator/metafunctions/prior.html
    +++ b/doc/html/fusion/iterator/metafunctions/prior.html
    @@ -27,14 +27,14 @@
     prior
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -106,14 +106,14 @@ previous element in the sequence before I.

    - + Header
    #include <boost/fusion/iterator/prior.hpp>
     #include <boost/fusion/include/prior.hpp>
     
    - + Example
    typedef vector<int,double> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
    index a46f7887..7f35372a 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of.html
    @@ -27,14 +27,14 @@
     value_of
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -91,7 +91,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ a sequence at iterator position I.

    - + Header
    #include <boost/fusion/iterator/value_of.hpp>
     #include <boost/fusion/include/value_of.hpp>
     
    - + Example
    typedef vector<int,int&,const int&> vec;
    diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    index 1b340544..4634eded 100644
    --- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
    +++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
    @@ -27,7 +27,7 @@
     value_of_data
     
     
    - + Description

    @@ -35,7 +35,7 @@ by an associative iterator references.

    - + Synopsis
    template<
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -92,7 +92,7 @@

    - + Expression Semantics
    @@ -107,14 +107,14 @@ I.

    - + Header
    #include <boost/fusion/iterator/value_of_data.hpp>
     #include <boost/fusion/include/value_of_data.hpp>
     
    - + Example
    typedef map<pair<float,int> > vec;
    diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
    index 91809272..8c06acae 100644
    --- a/doc/html/fusion/iterator/operator/operator_equality.html
    +++ b/doc/html/fusion/iterator/operator/operator_equality.html
    @@ -28,14 +28,14 @@
             ==
     
     
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,7 +104,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
    index 13615788..31a08352 100644
    --- a/doc/html/fusion/iterator/operator/operator_inequality.html
    +++ b/doc/html/fusion/iterator/operator/operator_inequality.html
    @@ -28,14 +28,14 @@
             !=
     
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    template<
    @@ -45,7 +45,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ and j respectively.

    - + Header
    #include <boost/fusion/iterator/equal_to.hpp>
    diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
    index ee682481..35074a02 100644
    --- a/doc/html/fusion/iterator/operator/operator_unary_star.html
    +++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
    @@ -28,14 +28,14 @@
             *
     
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
    template<
    @@ -44,7 +44,7 @@
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

    - + Header
    #include <boost/fusion/iterator/deref.hpp>
     #include <boost/fusion/include/deref.hpp>
     
    - + Example
    typedef vector<int,int&> vec;
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index ba6de759..b0bc6c59 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     Notes
     
     

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -101,7 +101,7 @@

    - + Extensibility

    @@ -136,7 +136,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -157,7 +157,7 @@ Arrays:

    - Array arguments are deduced to reference to const types. For example [10]: + Array arguments are deduced to reference to const types. For example [10]:

    make_list("Donald", "Daisy")
     
    @@ -185,7 +185,7 @@
    list<void (*)(int)>
     

    - + boost::ref

    @@ -213,18 +213,18 @@ 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&>
    -
    +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.

    - + adt_attribute_proxy

    @@ -456,7 +456,7 @@



    -

    [10] +

    [10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 32f8973a..2ddbd2a7 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -35,7 +35,7 @@ The library is organized in three layers:

    - + Layers

    @@ -60,7 +60,7 @@ against.

    - + Directory

      @@ -68,99 +68,91 @@ tuple
    • -

      algorithm -

      -
        +
        • - iteration -
        • + iteration +
        • - query -
        • + query +
        • - transformation -
        • + transformation +
        - +
      • -

        adapted -

        -
          +
          • - array -
          • + array +
          • - mpl -
          • + mpl +
          • - boost::tuple -
          • + boost::tuple +
          • - std_pair -
          • + std_pair +
          • - struct -
          • + struct +
          • - variant -
          • + variant +
          - +
        • -

          view -

          -
            +
            • - filter_view -
            • + filter_view +
            • - iterator_range -
            • + iterator_range +
            • - joint_view -
            • + joint_view +
            • - reverse_view -
            • + reverse_view +
            • - single_view -
            • + single_view +
            • - transform_view -
            • + transform_view +
            • - zip_view -
            • + zip_view +
            - +
          • -

            container -

            -
              +
              • - deque -
              • + deque +
              • - list -
              • + list +
              • - map -
              • + map +
              • - set -
              • + set +
              • - vector -
              • + vector +
              • - generation -
              • + generation +
              - +
            • mpl
            • @@ -168,21 +160,19 @@ functional
            • -

              sequence -

              -
                +
                • - comparison -
                • + comparison +
                • - intrinsic -
                • + intrinsic +
                • - io -
                • + io +
                - +
              • iterator
              • @@ -191,7 +181,7 @@

              - + Example

              @@ -206,11 +196,11 @@

    The first includes all containers The second includes only list - [4]. + [4].



    -

    [4] +

    [4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 47a8d4e5..7854b24f 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -33,7 +33,7 @@ --Niklaus Wirth

    - + Description

    @@ -51,7 +51,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -77,7 +77,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -85,7 +85,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -188,7 +188,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 1cc6eeaf..8c8d5dd8 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -34,13 +34,13 @@

    For starters, we shall include all of Fusion's Sequence(s) - [2]: + [2]:

    #include <boost/fusion/sequence.hpp>
     #include <boost/fusion/include/sequence.hpp>
     

    - Let's begin with a vector [3]: + Let's begin with a vector [3]:

    vector<int, char, std::string> stuff(1, 'x', "howdy");
     int i = at_c<0>(stuff);
    @@ -56,7 +56,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

    @@ -111,7 +111,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -143,7 +143,7 @@ Easy, right?

    - + Associative tuples

    @@ -215,7 +215,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -226,12 +226,12 @@



    -

    [2] +

    [2] There are finer grained header files available if you wish to have more control over which components to include (see section Organization for details).

    -

    [3] +

    [3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index 2818028f..a21db998 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    #include <boost/fusion/sequence.hpp>
    diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
    index 15681d95..f65949a0 100644
    --- a/doc/html/fusion/sequence/concepts.html
    +++ b/doc/html/fusion/sequence/concepts.html
    @@ -40,7 +40,7 @@
             Fusion Sequences are organized into a hierarchy of concepts.
           

    - + Traversal

    @@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 80fb0821..0322ec00 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -28,7 +28,7 @@ Sequence

    - + Description

    @@ -64,7 +64,7 @@

    - + Valid Expressions
    @@ -169,7 +169,7 @@
    - + Result Type Expressions
    @@ -243,7 +243,7 @@

    - + Expression Semantics
    @@ -298,7 +298,7 @@
    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 1c580444..75c37d11 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -37,7 +37,7 @@ Iterator.

    - + Refinement of
    @@ -66,7 +66,7 @@
    - + Valid Expressions
    @@ -192,7 +192,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Expression Semantics
    @@ -293,7 +293,7 @@
    - + Models
      @@ -309,6 +309,9 @@
    • reverse_view
    • +
    • + single_view +
    • iterator_range (where adapted sequence is a Bidirectional Sequence) diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 9deed2df..8cefe386 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -28,7 +28,7 @@ Sequence
    - + Description

    @@ -60,7 +60,7 @@

    - + Valid Expressions
    @@ -225,7 +225,7 @@
    - + Result Type Expressions
    @@ -310,7 +310,7 @@
    - + Expression Semantics
    @@ -398,7 +398,7 @@
    - + Invariants

    @@ -425,7 +425,7 @@

    - + Models
      diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 404bc286..c96a6bc8 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -28,7 +28,7 @@ Access Sequence
    - + Description

    @@ -38,7 +38,7 @@ sequence elements.

    - + Refinement of
    @@ -73,7 +73,7 @@
    - + Valid Expressions
    @@ -199,7 +199,7 @@
    - + Result Type Expressions
    @@ -285,7 +285,7 @@

    - + Expression Semantics
    @@ -325,7 +325,7 @@
    - + Models
      @@ -341,6 +341,9 @@
    • reverse_view
    • +
    • + single_view +
    • iterator_range (where adapted sequence is a Random Access Sequence) diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index ecb8d0bb..8c07fea5 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -36,10 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence[5]. + repertoire. They need to be implemented for each Fusion Sequence[5].

      - + Header
      #include <boost/fusion/sequence/intrinsic.hpp>
      @@ -47,7 +47,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/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 6fafb7db..c5bfcb0d 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -27,14 +27,14 @@ at
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <typename N, typename Sequence>
    @@ -46,7 +46,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    index 2dcebb7d..e5cafd76 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
    @@ -27,14 +27,14 @@
     at_c
     
     
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    template <int N, typename Sequence>
    @@ -46,7 +46,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -138,14 +138,14 @@
    deref(advance<N>(begin(s)))
     
    - + Header
    #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     #include <boost/fusion/include/at_c.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    index 59313b89..0ac391e2 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
    @@ -27,14 +27,14 @@
     at_key
     
     
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -46,7 +46,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -134,14 +134,14 @@ with Key.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
    index 4f42aace..7bc31c29 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/back.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
    @@ -27,14 +27,14 @@
     back
     
     
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    index 6b53bf1d..1f4b1beb 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to the first element in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    index 3d1ca092..a8f3626c 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
    @@ -27,7 +27,7 @@
     empty
     
     
    - + Description

    @@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    template <typename Sequence>
    @@ -44,7 +44,7 @@
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
    index f721c9c6..9985eead 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -126,14 +126,14 @@ to one element past the end of the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
    index 55c75471..1ee317f3 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    index f65c6951..9754c1e7 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
    @@ -27,7 +27,7 @@
     has_key
     
     
    - + Description

    @@ -37,7 +37,7 @@ to false.

    - + Synopsis
    template <typename Key, typename Sequence>
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -110,7 +110,7 @@
    - + Expression Semantics
    @@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    set<int, char, bool> s(1, 'x', true);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
    index db49cfd8..cdb6a09b 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
    @@ -27,7 +27,7 @@
     size
     
     
    - + Description

    @@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    template <typename Sequence>
    @@ -43,7 +43,7 @@
     size(Sequence const& seq);
     
    - + Parameters
    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ in the sequence.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    vector<int, int, int> v(1, 2, 3);
    diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    index 1b9fce35..3834d00c 100644
    --- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
    @@ -27,21 +27,21 @@
     swap
     
     
    - + Description

    Performs an element by element swap of the elements in 2 sequences.

    - + Synopsis
    template<typename Seq1, typename Seq2>
     void swap(Seq1& seq1, Seq2& seq2);
     
    - + Parameters
    @@ -87,7 +87,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

    - + Example
    vector<int, std::string> v1(1, "hello"), v2(2, "world");
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    index c7890b14..c7b7dab3 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
    @@ -27,14 +27,14 @@
     at
     
     
    - + Description

    - Returns the result type of at[6]. + Returns the result type of at[6].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ using at to access the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -140,7 +140,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 to diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 92664c4e..2406bd27 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -27,14 +27,14 @@ at_c

    - + Description

    - Returns the result type of at_c[7]. + Returns the result type of at_c[7].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ using at_c to access the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at.hpp>
     #include <boost/fusion/include/at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    @@ -139,7 +139,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/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 8b848728..a3e63807 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -27,14 +27,14 @@ at_key

    - + Description

    - Returns the result type of at_key[8]. + Returns the result type of at_key[8].

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -126,14 +126,14 @@ Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     #include <boost/fusion/include/at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    @@ -141,10 +141,10 @@
     


    -

    [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 want + return type of the function at_key. __sequence__s typically + return references to its elements via the at_key function. If you want to get the actual element type, use result_of::value_at_key

    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index 48546c2e..ca37bd37 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -27,14 +27,14 @@ back
    - + Description

    Returns the result type of back.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/back.hpp>
     #include <boost/fusion/include/back.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    index acce2002..25e480a2 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
    @@ -27,14 +27,14 @@
     begin
     
     
    - + Description

    Returns the result type of begin.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ to the first element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/begin.hpp>
     #include <boost/fusion/include/begin.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    index e6995b0f..96c7d250 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
    @@ -27,14 +27,14 @@
     empty
     
     
    - + Description

    Returns the result type of empty.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -105,14 +105,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/empty.hpp>
     #include <boost/fusion/include/empty.hpp>
     
    - + Example
    typedef vector<> empty_vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    index 974ab099..e04e2ad5 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
    @@ -27,14 +27,14 @@
     end
     
     
    - + Description

    Returns the result type of end.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -123,14 +123,14 @@ one past the end of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/end.hpp>
     #include <boost/fusion/include/end.hpp>
     
    - + Example
    typedef vector<int> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    index 1a448b47..bd3d6720 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
    @@ -27,14 +27,14 @@
     front
     
     
    - + Description

    Returns the result type of front.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
    #include <boost/fusion/sequence/intrinsic/front.hpp>
     #include <boost/fusion/include/front.hpp>
     
    - + Example
    typedef vector<int,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    index e070bc4b..a80269d6 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
    @@ -27,14 +27,14 @@
     has_key
     
     
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -127,14 +127,14 @@ mpl::false_ otherwise.

    - + Header
    #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     #include <boost/fusion/include/has_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    index 99503ec8..839589ca 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
    @@ -27,14 +27,14 @@
     size
     
     
    - + Description

    Returns the result type of size.

    - + Synopsis
    template<typename Seq>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -104,14 +104,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/size.hpp>
     #include <boost/fusion/include/size.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    index 68f41904..90fbcdc4 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
    @@ -27,14 +27,14 @@
     swap
     
     
    - + Description

    Returns the return type of swap.

    - + Synopsis
    template<typename Seq1, typename Seq2>
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -89,7 +89,7 @@

    - + Expression Semantics
    @@ -102,7 +102,7 @@ Semantics: Always returns void.

    - + Header
    #include <boost/fusion/sequence/intrinsic/swap.hpp>
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    index d1f06279..a5141e78 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
    @@ -27,14 +27,14 @@
     value_at
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -111,7 +111,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ the Nth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    index 88aa681e..658dee8f 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
    @@ -27,14 +27,14 @@
     value_at_c
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -124,14 +124,14 @@ the Mth element of Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     #include <boost/fusion/include/value_at.hpp>
     
    - + Example
    typedef vector<int,float,char> vec;
    diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    index 0b64f010..4016012f 100644
    --- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
    @@ -27,14 +27,14 @@
     value_at_key
     
     
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    template<
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -110,7 +110,7 @@

    - + Expression Semantics
    @@ -125,14 +125,14 @@ in Seq.

    - + Header
    #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     #include <boost/fusion/include/value_at_key.hpp>
     
    - + Example
    typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
    index ad681b65..a8849362 100644
    --- a/doc/html/fusion/sequence/operator/comparison.html
    +++ b/doc/html/fusion/sequence/operator/comparison.html
    @@ -49,7 +49,7 @@
               only until the result is clear.
             

    - + Header
    #include <boost/fusion/sequence/comparison.hpp>
    diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
    index 78ef0ec3..1bf9474b 100644
    --- a/doc/html/fusion/sequence/operator/comparison/equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/equal.html
    @@ -27,14 +27,14 @@
     equal
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -42,7 +42,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -119,18 +119,17 @@ 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. + __sequence__s, e and f, e == f returns true.

    - + Header
    #include <boost/fusion/sequence/comparison/equal_to.hpp>
     #include <boost/fusion/include/equal_to.hpp>
     
    - + Example
    vector<int, char> v1(5, 'a');
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    index 505a2f84..894eac5d 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns b < a.

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    index b2a0b3eb..ed44f441 100644
    --- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

    - + Header
    #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     #include <boost/fusion/include/greater_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
    index e73cd82e..d1d6df44 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ and b.

    - + Header
    #include <boost/fusion/sequence/comparison/less.hpp>
     #include <boost/fusion/include/less.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    index 1ac11c57..6e33dcb7 100644
    --- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
    @@ -31,7 +31,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

    - + Header
    #include <boost/fusion/sequence/comparison/less_equal.hpp>
     #include <boost/fusion/include/less_equal.hpp>
     
    - + Example
    vector<int, float> v1(4, 3.3f);
    diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    index 9bd024f5..6a8f7efd 100644
    --- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
    +++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
    @@ -31,7 +31,7 @@
                 Compare two sequences for inequality.
               

    - + Synopsis
    template <typename Seq1, typename Seq2>
    @@ -39,7 +39,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -115,14 +115,14 @@ Returns !(a == b).

    - + Header
    #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     #include <boost/fusion/include/not_equal_to.hpp>
     
    - + Example
    vector<int, char> v3(5, 'b');
    diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
    index 7bf14613..990b7b68 100644
    --- a/doc/html/fusion/sequence/operator/i_o.html
    +++ b/doc/html/fusion/sequence/operator/i_o.html
    @@ -113,7 +113,7 @@
               representation may not be unambiguously parseable.
             

    - + Header
    #include <boost/fusion/sequence/io.hpp>
    diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
    index 011ca161..b04a0932 100644
    --- a/doc/html/fusion/sequence/operator/i_o/in.html
    +++ b/doc/html/fusion/sequence/operator/i_o/in.html
    @@ -27,7 +27,7 @@
     in
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename IStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/in.hpp>
     #include <boost/fusion/include/in.hpp>
     
    - + Example
    vector<int, std::string, char> v;
    diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
    index 5b734cf7..c3fd7f5d 100644
    --- a/doc/html/fusion/sequence/operator/i_o/out.html
    +++ b/doc/html/fusion/sequence/operator/i_o/out.html
    @@ -27,7 +27,7 @@
     out
     
     
    - + Description

    @@ -35,7 +35,7 @@ stream.

    - + Synopsis
    template <typename OStream, typename Sequence>
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ e.

    - + Header
    #include <boost/fusion/sequence/io/out.hpp>
     #include <boost/fusion/include/out.hpp>
     
    - + Example
    std::cout << make_vector(123, "Hello", 'x') << std::endl;
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index fb5aaade..2d80db72 100644
    --- a/doc/html/fusion/support/category_of.html
    +++ b/doc/html/fusion/support/category_of.html
    @@ -27,7 +27,7 @@
     category_of
     
     
    - + Description

    @@ -37,7 +37,7 @@ Sequence Concepts).

    - + Synopsis
    namespace traits
    @@ -50,7 +50,7 @@
     }
     
    - + Parameters
    @@ -95,7 +95,7 @@
    - + Expression Semantics
    @@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

    - + Header
    #include <boost/fusion/support/category_of.hpp>
     #include <boost/fusion/include/category_of.hpp>
     
    - + Example
    using boost::is_base_of;
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index 1b40ee91..78813dc7 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -27,7 +27,7 @@
     deduce
     
     
    - + Description

    @@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

    - + Header
    #include <boost/fusion/support/deduce.hpp>
     #include <boost/fusion/include/deduce.hpp>
     
    - + Synopsis
    namespace traits
    @@ -60,7 +60,7 @@
     }
     
    - + Example
    template <typename T>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 7c9b1245..c620818f 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -27,7 +27,7 @@ deduce_sequence
    - + Description

    @@ -38,14 +38,14 @@ original type as its argument.

    - + Header
    #include <boost/fusion/support/deduce_sequence.hpp>
     #include <boost/fusion/include/deduce_sequence.hpp>
     
    - + Synopsis
    namespace traits
    @@ -58,7 +58,7 @@
     }
     
    - + Example
    template <class Seq>
    @@ -80,7 +80,7 @@
     }
     
    - + See also
    • diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 5a5784dd..0ef1a98f 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -27,7 +27,7 @@ is_sequence
    - + Description

    @@ -38,7 +38,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -51,7 +51,7 @@
     }
     
    - + Parameters
    @@ -96,7 +96,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ otherwise.

    - + Header
    #include <boost/fusion/support/is_sequence.hpp>
     #include <boost/fusion/include/is_sequence.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index 8ae394d8..40128231 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -27,7 +27,7 @@
     is_view
     
     
    - + Description

    @@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::is_view<T>::type c;
    @@ -115,14 +115,14 @@
             otherwise.
           

    - + Header
    #include <boost/fusion/support/is_view.hpp>
     #include <boost/fusion/include/is_view.hpp>
     
    - + Example
    BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index 8284ba6c..0e79948c 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -27,7 +27,7 @@
     pair
     
     
    - + Description

    @@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

    - + Synopsis
    template <typename First, typename Second>
    @@ -60,7 +60,7 @@
     make_pair(Second const &);
     
    - + Template parameters
    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -317,14 +317,14 @@
    - + Header
    #include <boost/fusion/support/pair.hpp>
     #include <boost/fusion/include/pair.hpp>
     
    - + Example
    pair<int, char> p('X');
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index a4d56b19..5f5b3f62 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -27,7 +27,7 @@
     tag_of
     
     
    - + Description

    @@ -41,7 +41,7 @@ conforming sequences.

    - + Synopsis
    namespace traits
    @@ -54,7 +54,7 @@
     }
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    typedef traits::tag_of<T>::type tag;
    @@ -112,14 +112,14 @@
             with T.
           

    - + Header
    #include <boost/fusion/support/tag_of.hpp>
     #include <boost/fusion/include/tag_of.hpp>
     
    - + Example
    typedef traits::tag_of<list<> >::type tag1;
    diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
    index b37d6de4..00ad4835 100644
    --- a/doc/html/fusion/tuple/class_template_tuple.html
    +++ b/doc/html/fusion/tuple/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis
    template<
    diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
    index 0c85405b..cb0f7258 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     Construction
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index 148b123c..c99f6e74 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -28,7 +28,7 @@ access
    - + Description

    @@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    template<int I, T>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    index 374d745e..5ade5e72 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
    @@ -28,7 +28,7 @@
             operators
     
     
    - + Description

    @@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index fd1b0b42..0b0a0fb4 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -28,17 +28,17 @@ 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 __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.

    - + Specification
    template<typename T1, typename T2, ..., typename TN>
    diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    index f5770ef2..c2e93744 100644
    --- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
    @@ -28,7 +28,7 @@
             helper classes
     
     
    - + Description

    @@ -37,7 +37,7 @@ tuple size, and the element types.

    - + Specification
    tuple_size<T>::value
    diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
    index 18b69d92..4c89cd3b 100644
    --- a/doc/html/fusion/tuple/pairs.html
    +++ b/doc/html/fusion/tuple/pairs.html
    @@ -27,7 +27,7 @@
     Pairs
     
     
    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification
    tuple_size<std::pair<T1, T2> >::value
    @@ -83,10 +83,7 @@
             ill-formed.
           

    - Returns: pr.first - if I == - 0 else pr.second.[*Returns: - pr.first if I + [*Returns: pr.first if I == 0 else pr.second.

    diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html index 82578440..73f3a10d 100644 --- a/doc/html/fusion/view.html +++ b/doc/html/fusion/view.html @@ -47,7 +47,7 @@ to copy and be passed around by value.

    - + Header

    #include <boost/fusion/view.hpp>
    diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
    index b3093246..76868945 100644
    --- a/doc/html/fusion/view/filter_view.html
    +++ b/doc/html/fusion/view/filter_view.html
    @@ -27,7 +27,7 @@
     filter_view
     
     
    - + Description

    @@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header
    #include <boost/fusion/view/filter_view.hpp>
     #include <boost/fusion/include/filter_view.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Pred>
     struct filter_view;
     
    - + Template parameters
    @@ -111,7 +111,7 @@
    - + Model of
      @@ -144,7 +144,7 @@
    - + Expression Semantics

    @@ -214,7 +214,7 @@

    - + Example
    using boost::mpl::_;
    diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
    index 6994b99f..43b95aed 100644
    --- a/doc/html/fusion/view/iterator_range.html
    +++ b/doc/html/fusion/view/iterator_range.html
    @@ -27,7 +27,7 @@
     iterator_range
     
     
    - + Description

    @@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
    #include <boost/fusion/view/iterator_range.hpp>
     #include <boost/fusion/include/iterator_range.hpp>
     
    - + Synopsis
    template <typename First, typename Last>
     struct iterator_range;
     
    - + Template parameters
    @@ -107,7 +107,7 @@
    - + Model of
      @@ -149,7 +149,7 @@
    - + Expression Semantics
    @@ -223,7 +223,7 @@
    - + Example
    char const* s = "Ruby";
    diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
    index 183abba9..93a87107 100644
    --- a/doc/html/fusion/view/joint_view.html
    +++ b/doc/html/fusion/view/joint_view.html
    @@ -27,7 +27,7 @@
     joint_view
     
     
    - + Description

    @@ -35,21 +35,21 @@ which is a concatenation of two sequences.

    - + Header
    #include <boost/fusion/view/joint_view.hpp>
     #include <boost/fusion/include/joint_view.hpp>
     
    - + Synopsis
    template <typename Sequence1, typename Sequence2>
     struct joint_view;
     
    - + Template parameters
    @@ -109,7 +109,7 @@
    - + Model of
      @@ -146,7 +146,7 @@
    - + Expression Semantics

    @@ -218,7 +218,7 @@

    - + Example
    vector<int, char> v1(3, 'x');
    diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
    index ebb65806..19653eb6 100644
    --- a/doc/html/fusion/view/nview.html
    +++ b/doc/html/fusion/view/nview.html
    @@ -27,7 +27,7 @@
     nview
     
     
    - + Description

    @@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

    - + Header
    #include <boost/fusion/view/nview.hpp>
     #include <boost/fusion/include/nview.hpp>
     
    - + Synopsis
    template <typename Sequence, typename Indicies>
    @@ -56,7 +56,7 @@
     as_nview(Sequence& s);
     
    - + Template parameters
    @@ -133,7 +133,7 @@
    - + Model of
    • @@ -159,7 +159,7 @@
    - + Expression Semantics

    @@ -235,7 +235,7 @@ of references to the elements of the original Fusion Sequence

    - + Example
    typedef vector<int, char, double> vec;
    @@ -243,9 +243,9 @@
     
     vec v1(1, 'c', 2.0);
     
    -std::cout << nview<vec, indicies>(v1) << std::endl; // (2.0 c 1 2.0 1)
    -std::cout << as_nview<2, 1, 1, 0>(v1) << std::endl; // (2.0 c c 1)
    -
    +std::cout << nview<vec, indicies>(v1) << std::endl; // (2.0 c 1 2.0 1) +std::cout << as_nview<2, 1, 1, 0>(v1) << std::endl; // (2.0 c c 1) +
    diff --git a/doc/html/fusion/view/repetitive_view.html b/doc/html/fusion/view/repetitive_view.html index a540927e..9c636bfe 100644 --- a/doc/html/fusion/view/repetitive_view.html +++ b/doc/html/fusion/view/repetitive_view.html @@ -27,7 +27,7 @@ repetitive_view
    - + Description

    @@ -40,21 +40,21 @@ is not.

    - + Header
    #include <boost/fusion/view/repetitive_view.hpp>
     #include <boost/fusion/include/repetitive_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct repetitive_view;
     
    - + Template parameters
    @@ -115,7 +115,7 @@
    - + Expression Semantics
    @@ -228,7 +228,7 @@
    - + Result Type Expressions
    @@ -253,7 +253,7 @@
    - + Example
    typedef vector<int, char, double> vec1;
    @@ -262,8 +262,8 @@
     vec1 v1(1, 'c', 2.0);
     vec2 v2(repetitive_view<vec1>(v1));
     
    -std::cout << v2 << std::endl; // 1, 'c', 2.0, 1, 'c'
    -
    +std::cout << v2 << std::endl; // 1, 'c', 2.0, 1, 'c' +
    diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html index cfe6c5d3..6df8902b 100644 --- a/doc/html/fusion/view/reverse_view.html +++ b/doc/html/fusion/view/reverse_view.html @@ -32,21 +32,21 @@ element will be its first.

    - + Header
    #include <boost/fusion/view/reverse_view.hpp>
     #include <boost/fusion/include/reverse_view.hpp>
     
    - + Synopsis
    template <typename Sequence>
     struct reverse_view;
     
    - + Template parameters
    @@ -89,7 +89,7 @@
    - + Model of
      @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -199,7 +199,7 @@
    - + Example
    typedef vector<int, short, double> vector_type;
    diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
    index dc712de5..3902dd28 100644
    --- a/doc/html/fusion/view/single_view.html
    +++ b/doc/html/fusion/view/single_view.html
    @@ -31,21 +31,21 @@
             a value as a single element sequence.
           

    - + Header
    #include <boost/fusion/view/single_view.hpp>
     #include <boost/fusion/include/single_view.hpp>
     
    - + Synopsis
    template <typename T>
     struct single_view;
     
    - + Template parameters
    @@ -87,11 +87,12 @@
    - + Model of

    Notation

    @@ -111,13 +112,13 @@
    - + Expression Semantics

    Semantics of an expression is defined only where it differs from, or is not - defined in Forward - Sequence. + defined in Random + Access Sequence.

    @@ -182,7 +183,7 @@
    - + Example
    single_view<int> view(3);
    diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
    index bb28a28a..da88ed47 100644
    --- a/doc/html/fusion/view/transform_view.html
    +++ b/doc/html/fusion/view/transform_view.html
    @@ -36,14 +36,14 @@
             Traversal Concept) of its underlying sequence or sequences.
           

    - + Header
    #include <boost/fusion/view/transform_view.hpp>
     #include <boost/fusion/include/transform_view.hpp>
     
    - + Synopsis

    @@ -59,7 +59,7 @@ struct transform_view;

    - + Template parameters
    @@ -169,7 +169,7 @@
    - + Model of
    • @@ -224,7 +224,7 @@
    - + Expression Semantics
    @@ -319,7 +319,7 @@
    - + Example
    struct square
    diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
    index 17241ea0..5ed95eca 100644
    --- a/doc/html/fusion/view/zip_view.html
    +++ b/doc/html/fusion/view/zip_view.html
    @@ -27,7 +27,7 @@
     zip_view
     
     
    - + Description

    @@ -35,24 +35,24 @@ 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. + to the component __sequence__s.

    - + Header
    #include <boost/fusion/view/zip_view.hpp>
     #include <boost/fusion/include/zip_view.hpp>
     
    - + Synopsis
    template <typename Sequences>
     struct zip_view;
     
    - + Template parameters
    @@ -87,7 +87,7 @@

    A Forward - Sequence of references to other Fusion _sequence_s + Sequence of references to other Fusion __sequence__s

    @@ -95,7 +95,7 @@
    - + Model of
    • @@ -124,7 +124,7 @@
    - + Expression Semantics

    @@ -159,7 +159,7 @@

    Creates a zip_view - given a sequence of references to the component _sequence_s. + given a sequence of references to the component __sequence__s.

    @@ -195,7 +195,7 @@
    - + Example
    typedef vector<int,int> vec1;
    @@ -203,8 +203,8 @@
     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))
    -
    +std::cout << zip_view<sequences>(sequences(v1, v2)) << std::endl; // ((1 a) (2 b)) +
    diff --git a/doc/html/index.html b/doc/html/index.html index 77b1184e..10813258 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -34,7 +34,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)

    @@ -261,7 +261,7 @@
    - +

    Last revised: December 19, 2010 at 15:00:31 GMT

    Last revised: July 16, 2011 at 21:05:19 GMT


    diff --git a/doc/iterator.qbk b/doc/iterator.qbk index 5a706c5a..8e076e53 100644 --- a/doc/iterator.qbk +++ b/doc/iterator.qbk @@ -160,6 +160,7 @@ the following invariants always hold: * __std_pair__ iterator * __boost_array__ iterator * __vector__ iterator +* __single_view__ iterator * __iterator_range__ (where adapted sequence is a __bidirectional_sequence__) * __transform_view__ (where adapted sequence is a __bidirectional_sequence__) * __reverse_view__ @@ -206,6 +207,7 @@ the following expressions must be valid: * __vector__ iterator * __std_pair__ iterator * __boost_array__ iterator +* __single_view__ 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__) diff --git a/doc/sequence.qbk b/doc/sequence.qbk index 1b0a34ba..538539ad 100644 --- a/doc/sequence.qbk +++ b/doc/sequence.qbk @@ -189,6 +189,7 @@ are not defined in __forward_sequence__. * __boost_array__ * __vector__ * __reverse_view__ +* __single_view__ * __iterator_range__ (where adapted sequence is a Bidirectional Sequence) * __transform_view__ (where adapted sequence is a Bidirectional Sequence) * __zip_view__ (where adapted sequences are models of Bidirectional Sequence) @@ -264,6 +265,7 @@ are not defined in __bidirectional_sequence__. * __boost_array__ * __vector__ * __reverse_view__ +* __single_view__ * __iterator_range__ (where adapted sequence is a Random Access Sequence) * __transform_view__ (where adapted sequence is a Random Access Sequence) * __zip_view__ (where adapted sequences are models of Random Access Sequence) diff --git a/doc/view.qbk b/doc/view.qbk index f4a00a78..7c6899f1 100644 --- a/doc/view.qbk +++ b/doc/view.qbk @@ -43,7 +43,7 @@ lazy nature make them very cheap to copy and be passed around by value. [heading Model of] -* __forward_sequence__ +* __random_access_sequence__ [variablelist Notation [[`S`] [A `single_view` type]] @@ -54,7 +54,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 -defined in __forward_sequence__. +defined in __random_access_sequence__. [table [[Expression] [Semantics]] diff --git a/include/boost/fusion/view/single_view/detail/advance_impl.hpp b/include/boost/fusion/view/single_view/detail/advance_impl.hpp new file mode 100644 index 00000000..d0846ec4 --- /dev/null +++ b/include/boost/fusion/view/single_view/detail/advance_impl.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2011 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#if !defined(BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM) +#define BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM + +#include + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + + template + struct single_view_iterator; + + namespace extension + { + template + struct advance_impl; + + template<> + struct advance_impl + { + template + struct apply + { + typedef single_view_iterator< + typename Iterator::single_view_type, + typename mpl::plus::type> + type; + + static type + call(Iterator const& i) + { + return type(i.view); + } + }; + }; + } + +}} + +#endif diff --git a/include/boost/fusion/view/single_view/detail/at_impl.hpp b/include/boost/fusion/view/single_view/detail/at_impl.hpp new file mode 100644 index 00000000..3e0915fc --- /dev/null +++ b/include/boost/fusion/view/single_view/detail/at_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2011 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#if !defined(BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM) +#define BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct single_view_tag; + + namespace extension + { + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply + { + BOOST_MPL_ASSERT((mpl::equal_to >)); + typedef typename Sequence::value_type type; + + static type + call(Sequence& seq) + { + return seq.val; + } + }; + }; + } + +}} + +#endif diff --git a/include/boost/fusion/view/single_view/detail/begin_impl.hpp b/include/boost/fusion/view/single_view/detail/begin_impl.hpp index 395992be..20dbef88 100644 --- a/include/boost/fusion/view/single_view/detail/begin_impl.hpp +++ b/include/boost/fusion/view/single_view/detail/begin_impl.hpp @@ -1,17 +1,20 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_05052005_0305) -#define FUSION_BEGIN_IMPL_05052005_0305 +#if !defined(BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305) +#define BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305 + +#include namespace boost { namespace fusion { struct single_view_tag; - template + template struct single_view_iterator; namespace extension @@ -25,12 +28,12 @@ namespace boost { namespace fusion template struct apply { - typedef single_view_iterator type; + typedef single_view_iterator > type; static type - call(Sequence& s) + call(Sequence& seq) { - return type(s); + return type(seq); } }; }; diff --git a/include/boost/fusion/view/single_view/detail/deref_impl.hpp b/include/boost/fusion/view/single_view/detail/deref_impl.hpp index 355cf6ac..89dc5c24 100644 --- a/include/boost/fusion/view/single_view/detail/deref_impl.hpp +++ b/include/boost/fusion/view/single_view/detail/deref_impl.hpp @@ -1,15 +1,16 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_05052005_0258) -#define FUSION_DEREF_IMPL_05052005_0258 +#if !defined(BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258) +#define BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258 -#include -#include -#include +#include +#include +#include namespace boost { namespace fusion { @@ -26,12 +27,13 @@ namespace boost { namespace fusion template struct apply { + BOOST_MPL_ASSERT((mpl::equal_to >)); typedef typename Iterator::value_type type; static type call(Iterator const& i) { - return i.val; + return i.view.val; } }; }; diff --git a/include/boost/fusion/view/single_view/detail/distance_impl.hpp b/include/boost/fusion/view/single_view/detail/distance_impl.hpp new file mode 100644 index 00000000..fec204cd --- /dev/null +++ b/include/boost/fusion/view/single_view/detail/distance_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2011 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#if !defined(BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM) +#define BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM + +#include + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + + namespace extension + { + template + struct distance_impl; + + template<> + struct distance_impl + { + template + struct apply + : mpl::minus + { + typedef typename mpl::minus::type type; + + static type + call(First const& /*first*/, Last const& /*last*/) + { + return type(); + } + }; + }; + } + +}} + +#endif diff --git a/include/boost/fusion/view/single_view/detail/end_impl.hpp b/include/boost/fusion/view/single_view/detail/end_impl.hpp index d239c242..c542c251 100644 --- a/include/boost/fusion/view/single_view/detail/end_impl.hpp +++ b/include/boost/fusion/view/single_view/detail/end_impl.hpp @@ -1,18 +1,21 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_END_IMPL_05052005_0332) -#define FUSION_END_IMPL_05052005_0332 +#if !defined(BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332) +#define BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332 + +#include namespace boost { namespace fusion { struct single_view_tag; - template - struct single_view_iterator_end; + template + struct single_view_iterator; namespace extension { @@ -25,12 +28,12 @@ namespace boost { namespace fusion template struct apply { - typedef single_view_iterator_end type; + typedef single_view_iterator > type; static type - call(Sequence&) + call(Sequence& seq) { - return type(); + return type(seq); } }; }; diff --git a/include/boost/fusion/view/single_view/detail/equal_to_impl.hpp b/include/boost/fusion/view/single_view/detail/equal_to_impl.hpp new file mode 100644 index 00000000..c9a7ebde --- /dev/null +++ b/include/boost/fusion/view/single_view/detail/equal_to_impl.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2011 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM) +#define BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template<> + struct equal_to_impl + { + template + struct apply + : mpl::equal_to + { + BOOST_MPL_ASSERT((is_same::type, + typename add_const::type>)); + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/view/single_view/detail/next_impl.hpp b/include/boost/fusion/view/single_view/detail/next_impl.hpp index c9cdafdf..e4b33810 100644 --- a/include/boost/fusion/view/single_view/detail/next_impl.hpp +++ b/include/boost/fusion/view/single_view/detail/next_impl.hpp @@ -1,20 +1,20 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_05052005_0331) -#define FUSION_NEXT_IMPL_05052005_0331 +#if !defined(BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331) +#define BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331 + +#include namespace boost { namespace fusion { struct single_view_iterator_tag; - template - struct single_view_iterator_end; - - template + template struct single_view_iterator; namespace extension @@ -28,14 +28,15 @@ namespace boost { namespace fusion template struct apply { - typedef single_view_iterator_end< - typename Iterator::single_view_type> + typedef single_view_iterator< + typename Iterator::single_view_type, + typename mpl::next::type> type; static type - call(Iterator) + call(Iterator const& i) { - return type(); + return type(i.view); } }; }; diff --git a/include/boost/fusion/view/single_view/detail/prior_impl.hpp b/include/boost/fusion/view/single_view/detail/prior_impl.hpp new file mode 100644 index 00000000..ece6795d --- /dev/null +++ b/include/boost/fusion/view/single_view/detail/prior_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2011 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM) +#define BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM + +#include + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + + template + struct single_view_iterator; + + namespace extension + { + template + struct prior_impl; + + template <> + struct prior_impl + { + template + struct apply + { + typedef single_view_iterator< + typename Iterator::single_view_type, + typename mpl::prior::type> + type; + + static type + call(Iterator const& i) + { + return type(i.view); + } + }; + }; + } + +}} + +#endif diff --git a/include/boost/fusion/view/single_view/detail/size_impl.hpp b/include/boost/fusion/view/single_view/detail/size_impl.hpp new file mode 100644 index 00000000..eba89cdd --- /dev/null +++ b/include/boost/fusion/view/single_view/detail/size_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2011 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_SINGLE_VIEW_SIZE_IMPL_JUL_07_2011_1348PM) +#define FUSION_SINGLE_VIEW_SIZE_IMPL_JUL_07_2011_1348PM + +namespace boost { namespace fusion +{ + struct single_view_tag; + + namespace extension + { + template + struct size_impl; + + template <> + struct size_impl + { + template + struct apply + { + typedef mpl::int_<1> type; + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/view/single_view/detail/value_at_impl.hpp b/include/boost/fusion/view/single_view/detail/value_at_impl.hpp new file mode 100644 index 00000000..a8c20ad5 --- /dev/null +++ b/include/boost/fusion/view/single_view/detail/value_at_impl.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2011 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM) +#define BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct single_view_tag; + + namespace extension + { + template + struct value_at_impl; + + template<> + struct value_at_impl + { + template + struct apply + { + BOOST_MPL_ASSERT((mpl::equal_to >)); + typedef typename Sequence::value_type type; + }; + }; + } + +}} + +#endif diff --git a/include/boost/fusion/view/single_view/detail/value_of_impl.hpp b/include/boost/fusion/view/single_view/detail/value_of_impl.hpp index f975eb14..5689a9e0 100644 --- a/include/boost/fusion/view/single_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/view/single_view/detail/value_of_impl.hpp @@ -1,11 +1,16 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_VALUE_IMPL_05052005_0324) -#define FUSION_VALUE_IMPL_05052005_0324 +#if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324) +#define BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324 + +#include +#include +#include namespace boost { namespace fusion { @@ -22,8 +27,8 @@ namespace boost { namespace fusion template struct apply { - typedef typename Iterator::single_view_type single_view_type; - typedef typename single_view_type::value_type type; + BOOST_MPL_ASSERT((mpl::equal_to >)); + typedef typename Iterator::value_type type; }; }; } diff --git a/include/boost/fusion/view/single_view/single_view.hpp b/include/boost/fusion/view/single_view/single_view.hpp index 03087cd6..d0c2659b 100644 --- a/include/boost/fusion/view/single_view/single_view.hpp +++ b/include/boost/fusion/view/single_view/single_view.hpp @@ -1,18 +1,22 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_SINGLE_VIEW_05052005_0335) -#define FUSION_SINGLE_VIEW_05052005_0335 +#if !defined(BOOST_FUSION_SINGLE_VIEW_05052005_0335) +#define BOOST_FUSION_SINGLE_VIEW_05052005_0335 #include #include #include #include +#include #include #include +#include +#include #include #include #include @@ -25,7 +29,7 @@ namespace boost { namespace fusion { struct single_view_tag; - struct forward_traversal_tag; + struct random_access_traversal_tag; struct fusion_sequence_tag; template @@ -33,7 +37,7 @@ namespace boost { namespace fusion { typedef single_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_traversal_tag category; + typedef random_access_traversal_tag category; typedef mpl::true_ is_view; typedef mpl::int_<1> size; typedef T value_type; diff --git a/include/boost/fusion/view/single_view/single_view_iterator.hpp b/include/boost/fusion/view/single_view/single_view_iterator.hpp index fa249015..7e53a3da 100644 --- a/include/boost/fusion/view/single_view/single_view_iterator.hpp +++ b/include/boost/fusion/view/single_view/single_view_iterator.hpp @@ -1,16 +1,21 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_SINGLE_VIEW_ITERATOR_05052005_0340) -#define FUSION_SINGLE_VIEW_ITERATOR_05052005_0340 +#if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340) +#define BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340 #include #include #include #include +#include +#include +#include +#include #include #include @@ -22,29 +27,25 @@ namespace boost { namespace fusion { struct single_view_iterator_tag; - struct forward_traversal_tag; + struct random_access_traversal_tag; - template - struct single_view_iterator_end - : iterator_base > - { - typedef single_view_iterator_tag fusion_tag; - typedef forward_traversal_tag category; - }; - - template + template struct single_view_iterator - : iterator_base > + : iterator_base > { typedef single_view_iterator_tag fusion_tag; - typedef forward_traversal_tag category; + typedef random_access_traversal_tag category; typedef typename SingleView::value_type value_type; + typedef Pos position; typedef SingleView single_view_type; - explicit single_view_iterator(single_view_type const& view) - : val(view.val) {} + explicit single_view_iterator(single_view_type& in_view) + : view(in_view) {} - value_type val; + SingleView& view; + + private: + single_view_iterator& operator=(single_view_iterator const&); }; }} diff --git a/test/sequence/single_view.cpp b/test/sequence/single_view.cpp index e3faa26a..e9322712 100644 --- a/test/sequence/single_view.cpp +++ b/test/sequence/single_view.cpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2011 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -7,8 +8,22 @@ #include #include #include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include struct X {}; @@ -40,7 +55,28 @@ main() #endif std::cout << view1 << std::endl; BOOST_TEST(*begin(view1) == 3); + BOOST_TEST(at >(view1) == 3); BOOST_TEST(view1.val == 3); + BOOST_TEST(3 == front(view1)); + BOOST_TEST(3 == back(view1)); + BOOST_TEST(!empty(view1)); + BOOST_TEST(next(begin(view1)) == end(view1)); + BOOST_TEST(prior(end(view1)) == begin(view1)); + BOOST_TEST(!(next(begin(view1)) != end(view1))); + BOOST_TEST(!(prior(end(view1)) != begin(view1))); + BOOST_TEST(1 == distance(begin(view1), end(view1))); + BOOST_TEST(0 == distance(end(view1), end(view1))); + BOOST_TEST(0 == distance(begin(view1), begin(view1))); + BOOST_TEST(end(view1) == advance >(begin(view1))); + BOOST_TEST(begin(view1) == advance >(begin(view1))); + BOOST_TEST(end(view1) == advance >(end(view1))); + BOOST_TEST(begin(view1) == advance >(end(view1))); + BOOST_TEST(end(view1) == advance_c<1>(begin(view1))); + BOOST_TEST(begin(view1) == advance_c<0>(begin(view1))); + BOOST_TEST(end(view1) == advance_c<0>(end(view1))); + BOOST_TEST(begin(view1) == advance_c<-1>(end(view1))); + BOOST_TEST(1 == size(view1)); + BOOST_MPL_ASSERT((boost::is_same, boost::mpl::int_<0> >::type>)); single_view view2; std::cout << view2 << std::endl; From 518ac25a806c700f5c63036f92ecd55f7158d980 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Mon, 8 Aug 2011 06:29:25 +0000 Subject: [PATCH 51/82] merged [73583] from trunk [SVN r73606] --- include/boost/fusion/iterator/distance.hpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp index 0cfa414d..9c6db549 100644 --- a/include/boost/fusion/iterator/distance.hpp +++ b/include/boost/fusion/iterator/distance.hpp @@ -34,10 +34,7 @@ namespace boost { namespace fusion // default implementation template struct apply : distance_detail::linear_distance - { - BOOST_MPL_ASSERT_NOT((traits::is_random_access)); - BOOST_MPL_ASSERT_NOT((traits::is_random_access)); - }; + {}; }; template <> From 01156b172ae4021e3c8e89ac6e5390a9a916849c Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 10 Oct 2011 02:33:13 +0000 Subject: [PATCH 52/82] Fix for ticket #6000 [SVN r74873] --- .../algorithm/transformation/pop_back.hpp | 45 +++++++++++++++++++ test/algorithm/pop_back.cpp | 14 ++++-- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/algorithm/transformation/pop_back.hpp b/include/boost/fusion/algorithm/transformation/pop_back.hpp index 37f64326..ba68cd92 100644 --- a/include/boost/fusion/algorithm/transformation/pop_back.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_back.hpp @@ -78,6 +78,51 @@ namespace boost { namespace fusion , mpl::int_<(Last::is_last?1:0)> >::type {}; + + + template + struct prior_impl + { + typedef typename Iterator::iterator_base_type base_type; + + typedef typename + result_of::prior::type + base_prior; + + typedef pop_back_iterator type; + + static type + call(Iterator const& i) + { + return type(fusion::prior(i.iterator_base)); + } + }; + + template + struct prior_impl + { + // If this is the last iterator, we'll have to double back + typedef typename Iterator::iterator_base_type base_type; + + typedef typename + result_of::prior< + typename result_of::prior::type + >::type + base_prior; + + typedef pop_back_iterator type; + + static type + call(Iterator const& i) + { + return type(fusion::prior( + fusion::prior(i.iterator_base))); + } + }; + + template + struct prior : prior_impl + {}; }; namespace result_of diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp index d1055c0e..de7cc646 100644 --- a/test/algorithm/pop_back.cpp +++ b/test/algorithm/pop_back.cpp @@ -15,6 +15,9 @@ #include #include #include +#include +#include +#include #include int @@ -85,12 +88,17 @@ main() auto i1 = find(popv); auto i2 = find(pop); - assert(i1 != end(pop)); - assert(i2 != end(pop)); - assert(i1 != i2); + BOOST_TEST(i1 != end(pop)); + BOOST_TEST(i2 != end(pop)); + BOOST_TEST(i1 != i2); } #endif + { + boost::array a = { 10, 50 }; + BOOST_TEST(back(pop_back(a)) == 10); + } + return boost::report_errors(); } From 4b6dddde0360344df362df18d6508fa5c8dd5e4d Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 10 Oct 2011 10:07:45 +0000 Subject: [PATCH 53/82] Bumped copyright date and version to 2.1 (it's about time!). [SVN r74884] --- doc/Jamfile | 2 +- doc/acknowledgements.qbk | 2 +- doc/adapted.qbk | 2 +- doc/algorithm.qbk | 2 +- doc/changelog.qbk | 10 +++++----- doc/container.qbk | 2 +- doc/extension.qbk | 2 +- doc/functional.qbk | 2 +- doc/fusion.qbk | 6 +++--- doc/introduction.qbk | 2 +- doc/iterator.qbk | 2 +- doc/notes.qbk | 2 +- doc/organization.qbk | 2 +- doc/preface.qbk | 2 +- doc/quick_start.qbk | 2 +- doc/references.qbk | 2 +- doc/sequence.qbk | 2 +- doc/support.qbk | 2 +- doc/tuple.qbk | 2 +- doc/view.qbk | 2 +- 20 files changed, 26 insertions(+), 26 deletions(-) diff --git a/doc/Jamfile b/doc/Jamfile index 13454575..8348f7eb 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -1,5 +1,5 @@ #============================================================================== -# Copyright (c) 2003-2007 Joel de Guzman +# Copyright (c) 2003-2011 Joel de Guzman # # Use, modification and distribution is subject to the Boost Software # License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk index fd66c3c5..61f7b7c0 100644 --- a/doc/acknowledgements.qbk +++ b/doc/acknowledgements.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/adapted.qbk b/doc/adapted.qbk index ea47a5d1..d0dabbae 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk index f1e500e4..a626c9e3 100644 --- a/doc/algorithm.qbk +++ b/doc/algorithm.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software diff --git a/doc/changelog.qbk b/doc/changelog.qbk index 67a65d0e..98de599f 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software @@ -12,10 +12,10 @@ This section summarizes significant changes to the Fusion library. * Sep 27, 2006: Added `boost::tuple` support. (Joel de Guzman) * Nov 17, 2006: Added `boost::variant` support. (Joel de Guzman) -* Feb 15, 2007: Added functional module. (Tobias Schwinger) -* April 2, 2007: Added struct adapter. (Joel de Guzman) -* May 8, 2007: Added associative struct adapter. (Dan Marsden) -* Dec 20, 2007: Removed `boost::variant` support. After thorough +* Feb 15, 2011: Added functional module. (Tobias Schwinger) +* April 2, 2011: Added struct adapter. (Joel de Guzman) +* May 8, 2011: Added associative struct adapter. (Dan Marsden) +* Dec 20, 2011: Removed `boost::variant` support. After thorough investigation, I think now that the move to make variant a fusion sequence is rather quirky. A variant will always have a size==1 regardless of the number of types it can contain diff --git a/doc/container.qbk b/doc/container.qbk index 83c10c1a..34d02cd9 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/extension.qbk b/doc/extension.qbk index 7d132316..ae770bd0 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/functional.qbk b/doc/functional.qbk index 120ae0d2..d587290b 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/fusion.qbk b/doc/fusion.qbk index fd348d57..ac8bced9 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software @@ -8,9 +8,9 @@ ===============================================================================/] [library Fusion [quickbook 1.3] - [version 2.0] + [version 2.1] [authors [de Guzman, Joel], [Marsden, Dan], [Schwinger, Tobias]] - [copyright 2001 2002 2003 2004 2005 2006 2007 Joel de Guzman, Dan Marsden, Tobias Schwinger] + [copyright 2001 2002 2003 2004 2005 2006 2011 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. diff --git a/doc/introduction.qbk b/doc/introduction.qbk index 066f5a33..48945b9f 100644 --- a/doc/introduction.qbk +++ b/doc/introduction.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/iterator.qbk b/doc/iterator.qbk index 8e076e53..a4b75858 100644 --- a/doc/iterator.qbk +++ b/doc/iterator.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/notes.qbk b/doc/notes.qbk index f8255733..bb4e343a 100644 --- a/doc/notes.qbk +++ b/doc/notes.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software diff --git a/doc/organization.qbk b/doc/organization.qbk index 8b81fbfc..df481115 100644 --- a/doc/organization.qbk +++ b/doc/organization.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/preface.qbk b/doc/preface.qbk index 5686642a..42be72dc 100644 --- a/doc/preface.qbk +++ b/doc/preface.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/quick_start.qbk b/doc/quick_start.qbk index c0d69f1e..0bd7c946 100644 --- a/doc/quick_start.qbk +++ b/doc/quick_start.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/references.qbk b/doc/references.qbk index 5b6c21a1..98e1fc3b 100644 --- a/doc/references.qbk +++ b/doc/references.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/sequence.qbk b/doc/sequence.qbk index 5c4b14d3..0f19f44e 100644 --- a/doc/sequence.qbk +++ b/doc/sequence.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/support.qbk b/doc/support.qbk index dae8d031..27cbded1 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/tuple.qbk b/doc/tuple.qbk index 97a0aa46..d3ed713a 100644 --- a/doc/tuple.qbk +++ b/doc/tuple.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 diff --git a/doc/view.qbk b/doc/view.qbk index 7c6899f1..328deb8e 100644 --- a/doc/view.qbk +++ b/doc/view.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, 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 From af16a84f095ca74688da10cd686b3952d7e39b84 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 10 Oct 2011 10:38:37 +0000 Subject: [PATCH 54/82] Bumped copyright date and version to 2.1 (it's about time!) + fixed copyright notices and dates. [SVN r74887] --- doc/acknowledgements.qbk | 3 ++- doc/adapted.qbk | 3 ++- doc/algorithm.qbk | 3 ++- doc/changelog.qbk | 18 ++++++++++++------ doc/container.qbk | 3 ++- doc/extension.qbk | 3 ++- doc/functional.qbk | 2 +- doc/fusion.qbk | 3 ++- doc/introduction.qbk | 3 ++- doc/iterator.qbk | 3 ++- doc/notes.qbk | 3 ++- doc/organization.qbk | 3 ++- doc/preface.qbk | 3 ++- doc/quick_start.qbk | 3 ++- doc/references.qbk | 3 ++- doc/sequence.qbk | 3 ++- doc/support.qbk | 3 ++- doc/tuple.qbk | 3 ++- doc/view.qbk | 3 ++- 19 files changed, 47 insertions(+), 24 deletions(-) diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk index 61f7b7c0..da059955 100644 --- a/doc/acknowledgements.qbk +++ b/doc/acknowledgements.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/adapted.qbk b/doc/adapted.qbk index d0dabbae..fd8237cd 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman + Copyright (C) 2006 Dan Marsden Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk index a626c9e3..7402ba33 100644 --- a/doc/algorithm.qbk +++ b/doc/algorithm.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman + Copyright (C) 2006 Dan Marsden Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software diff --git a/doc/changelog.qbk b/doc/changelog.qbk index 98de599f..91406c7b 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -1,5 +1,7 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman + Copyright (C) 2006 Dan Marsden + Copyright (C) 2006 Tobias Schwinger Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software @@ -12,10 +14,10 @@ This section summarizes significant changes to the Fusion library. * Sep 27, 2006: Added `boost::tuple` support. (Joel de Guzman) * Nov 17, 2006: Added `boost::variant` support. (Joel de Guzman) -* Feb 15, 2011: Added functional module. (Tobias Schwinger) -* April 2, 2011: Added struct adapter. (Joel de Guzman) -* May 8, 2011: Added associative struct adapter. (Dan Marsden) -* Dec 20, 2011: Removed `boost::variant` support. After thorough +* Feb 15, 2007: Added functional module. (Tobias Schwinger) +* April 2, 2007: Added struct adapter. (Joel de Guzman) +* May 8, 2007: Added associative struct adapter. (Dan Marsden) +* Dec 20, 2007: Removed `boost::variant` support. After thorough investigation, I think now that the move to make variant a fusion sequence is rather quirky. A variant will always have a size==1 regardless of the number of types it can contain @@ -37,6 +39,10 @@ This section summarizes significant changes to the Fusion library. (Christopher Schmidt) * October 7, 2010: Added __adapt_adt__, __adapt_tpl_adt__, __adapt_assoc_adt__ and __adapt_assoc_tpl_adt__ (Joel de Guzman, - Hartmut Kaiser and Christopher Schmidt) + Hartmut Kaiser and Christopher Schmidt) +* August 29, 2011: Added support for segmented sequences and iterators (Eric Niebler) +* September 16, 2011: Added preprocessed files (using wave) to speed up + compilation (Joel de Guzman) +* October 8, 2011: Added adaptor for std::tuple (Joel de Guzman) [endsect] diff --git a/doc/container.qbk b/doc/container.qbk index 34d02cd9..72b2229b 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/extension.qbk b/doc/extension.qbk index ae770bd0..354bc13e 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/functional.qbk b/doc/functional.qbk index d587290b..d6b60b0c 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -1,5 +1,5 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + 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 diff --git a/doc/fusion.qbk b/doc/fusion.qbk index ac8bced9..a6202ab3 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman + Copyright (C) 2006 Dan Marsden Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software diff --git a/doc/introduction.qbk b/doc/introduction.qbk index 48945b9f..f8979bfc 100644 --- a/doc/introduction.qbk +++ b/doc/introduction.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/iterator.qbk b/doc/iterator.qbk index a4b75858..ff768f92 100644 --- a/doc/iterator.qbk +++ b/doc/iterator.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/notes.qbk b/doc/notes.qbk index bb4e343a..6c1b883c 100644 --- a/doc/notes.qbk +++ b/doc/notes.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 Joel de Guzman + Copyright (C) 2006 Dan Marsden Copyright (C) 2010 Christopher Schmidt Use, modification and distribution is subject to the Boost Software diff --git a/doc/organization.qbk b/doc/organization.qbk index df481115..e3dd7fb4 100644 --- a/doc/organization.qbk +++ b/doc/organization.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/preface.qbk b/doc/preface.qbk index 42be72dc..cdf0114f 100644 --- a/doc/preface.qbk +++ b/doc/preface.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/quick_start.qbk b/doc/quick_start.qbk index 0bd7c946..e6e6c3c1 100644 --- a/doc/quick_start.qbk +++ b/doc/quick_start.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/references.qbk b/doc/references.qbk index 98e1fc3b..d0d63019 100644 --- a/doc/references.qbk +++ b/doc/references.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/sequence.qbk b/doc/sequence.qbk index 0f19f44e..c95fd51a 100644 --- a/doc/sequence.qbk +++ b/doc/sequence.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/support.qbk b/doc/support.qbk index 27cbded1..4a040015 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/tuple.qbk b/doc/tuple.qbk index d3ed713a..3be81bbe 100644 --- a/doc/tuple.qbk +++ b/doc/tuple.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 diff --git a/doc/view.qbk b/doc/view.qbk index 328deb8e..de39c694 100644 --- a/doc/view.qbk +++ b/doc/view.qbk @@ -1,5 +1,6 @@ [/============================================================================== - Copyright (C) 2001-2011 Joel de Guzman, Dan Marsden, Tobias Schwinger + Copyright (C) 2001-2011 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 From 44b337abb097efb550c02ad32aa8545e257433a5 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 5 Nov 2011 01:05:04 +0000 Subject: [PATCH 55/82] Fix Ticket #6067 [SVN r75320] --- .../detail/segmented_iterator_range.hpp | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp b/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp index d63c2b32..e5f5ed0b 100644 --- a/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp @@ -29,11 +29,21 @@ // - All other ranges point to ranges // - The front of each range in the stack (besides the // topmost) is the range above it - + namespace boost { namespace fusion { template struct iterator_range; + + namespace result_of + { + template + struct push_back; + } + + template + typename result_of::push_back::type + push_back(Sequence const& seq, T const& x); }} namespace boost { namespace fusion { namespace detail @@ -117,7 +127,7 @@ namespace boost { namespace fusion { namespace detail segment_sequence< typename result_of::push_front< rest_type const - , typename recurse::type + , typename recurse::type >::type > type; @@ -184,7 +194,7 @@ namespace boost { namespace fusion { namespace detail { return stack.cdr; } - }; + }; //auto make_segment_sequence_back(stack_end) //{ @@ -260,7 +270,7 @@ namespace boost { namespace fusion { namespace detail segment_sequence< typename result_of::push_back< rest_type const - , typename recurse::type + , typename recurse::type >::type > type; @@ -328,7 +338,7 @@ namespace boost { namespace fusion { namespace detail return stack.cdr; } }; - + //auto make_segmented_range_reduce(stack_begin, stack_end) //{ // if (size(stack_begin) == 1 && size(stack_end) == 1) @@ -373,7 +383,7 @@ namespace boost { namespace fusion { namespace detail template < typename StackBegin , typename StackEnd - , bool SameSegment = + , bool SameSegment = result_of::equal_to< typename StackBegin::car_type::begin_type , typename StackEnd::car_type::begin_type From 9a8955fbe10560a8c4253f8bbad5db2bb4eb030f Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 16 Dec 2011 02:14:17 +0000 Subject: [PATCH 56/82] Merge from trunk [SVN r75980] --- .../algorithm/transformation/pop_back.hpp | 2 +- include/boost/fusion/container/list/cons.hpp | 4 +- .../fusion/container/map/detail/at_impl.hpp | 57 +++++++++++++++++++ .../map/detail/preprocessed/map10.hpp | 2 +- .../map/detail/preprocessed/map20.hpp | 2 +- .../map/detail/preprocessed/map30.hpp | 2 +- .../map/detail/preprocessed/map40.hpp | 2 +- .../map/detail/preprocessed/map50.hpp | 2 +- .../container/map/detail/value_at_impl.hpp | 34 +++++++++++ include/boost/fusion/container/map/map.hpp | 4 +- .../vector/detail/preprocessed/vector10.hpp | 22 +++---- .../vector/detail/preprocessed/vector20.hpp | 20 +++---- .../vector/detail/preprocessed/vector30.hpp | 20 +++---- .../vector/detail/preprocessed/vector40.hpp | 20 +++---- .../vector/detail/preprocessed/vector50.hpp | 20 +++---- .../vector/detail/preprocessed/vvector10.hpp | 3 +- .../vector/detail/preprocessed/vvector20.hpp | 3 +- .../vector/detail/preprocessed/vvector30.hpp | 3 +- .../vector/detail/preprocessed/vvector40.hpp | 3 +- .../vector/detail/preprocessed/vvector50.hpp | 3 +- .../container/vector/detail/vector_n.hpp | 4 +- .../boost/fusion/container/vector/vector.hpp | 54 +++++++++++------- include/boost/fusion/iterator/equal_to.hpp | 4 +- .../fusion/sequence/comparison/equal_to.hpp | 2 +- .../fusion/sequence/comparison/greater.hpp | 2 +- .../sequence/comparison/greater_equal.hpp | 2 +- .../boost/fusion/sequence/comparison/less.hpp | 2 +- .../fusion/sequence/comparison/less_equal.hpp | 2 +- .../sequence/comparison/not_equal_to.hpp | 2 +- include/boost/fusion/sequence/io/in.hpp | 2 +- include/boost/fusion/sequence/io/out.hpp | 2 +- .../boost/fusion/support/deduce_sequence.hpp | 8 +++ include/boost/fusion/support/tag_of.hpp | 31 +++++----- include/boost/fusion/support/tag_of_fwd.hpp | 3 - .../view/detail/strictest_traversal.hpp | 8 +++ .../fusion/view/nview/detail/nview_impl.hpp | 4 +- include/boost/fusion/view/nview/nview.hpp | 11 ++++ .../fusion/view/zip_view/detail/end_impl.hpp | 2 +- .../view/zip_view/detail/value_at_impl.hpp | 8 +++ .../view/zip_view/detail/value_of_impl.hpp | 8 +++ .../boost/fusion/view/zip_view/zip_view.hpp | 16 ++++++ 41 files changed, 287 insertions(+), 118 deletions(-) create mode 100644 include/boost/fusion/container/map/detail/at_impl.hpp create mode 100644 include/boost/fusion/container/map/detail/value_at_impl.hpp diff --git a/include/boost/fusion/algorithm/transformation/pop_back.hpp b/include/boost/fusion/algorithm/transformation/pop_back.hpp index ba68cd92..6059c555 100644 --- a/include/boost/fusion/algorithm/transformation/pop_back.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_back.hpp @@ -96,7 +96,7 @@ namespace boost { namespace fusion { return type(fusion::prior(i.iterator_base)); } - }; + }; template struct prior_impl diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp index e434d5c7..666b5367 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -88,7 +88,7 @@ namespace boost { namespace fusion template cons( Sequence const& seq - , typename disable_if< + , typename boost::disable_if< mpl::or_< is_convertible // use copy ctor instead , is_convertible // use copy to car instead @@ -119,7 +119,7 @@ namespace boost { namespace fusion } template - typename disable_if, cons&>::type + typename boost::disable_if, cons&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type Iterator; diff --git a/include/boost/fusion/container/map/detail/at_impl.hpp b/include/boost/fusion/container/map/detail/at_impl.hpp new file mode 100644 index 00000000..f871bee0 --- /dev/null +++ b/include/boost/fusion/container/map/detail/at_impl.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2011 Brandon Kohn + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP) +#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + typedef mpl::at element; + typedef typename detail::ref_result::type type; + + static type + call(Sequence& m) + { + return m.get_data().at_impl(N()); + } + }; + + template + struct apply + { + typedef mpl::at element; + typedef typename detail::cref_result::type type; + + static type + call(Sequence const& m) + { + return m.get_data().at_impl(N()); + } + }; + }; + } +}} + +#endif //BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP diff --git a/include/boost/fusion/container/map/detail/preprocessed/map10.hpp b/include/boost/fusion/container/map/detail/preprocessed/map10.hpp index cae643d8..fdf28eb2 100644 --- a/include/boost/fusion/container/map/detail/preprocessed/map10.hpp +++ b/include/boost/fusion/container/map/detail/preprocessed/map10.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion template struct map : sequence_base > { - struct category : forward_traversal_tag, associative_tag {}; + struct category : random_access_traversal_tag, associative_tag {}; typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; typedef mpl::false_ is_view; diff --git a/include/boost/fusion/container/map/detail/preprocessed/map20.hpp b/include/boost/fusion/container/map/detail/preprocessed/map20.hpp index 01105265..33cd2e59 100644 --- a/include/boost/fusion/container/map/detail/preprocessed/map20.hpp +++ b/include/boost/fusion/container/map/detail/preprocessed/map20.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion template struct map : sequence_base > { - struct category : forward_traversal_tag, associative_tag {}; + struct category : random_access_traversal_tag, associative_tag {}; typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; typedef mpl::false_ is_view; diff --git a/include/boost/fusion/container/map/detail/preprocessed/map30.hpp b/include/boost/fusion/container/map/detail/preprocessed/map30.hpp index ede29720..54f492d0 100644 --- a/include/boost/fusion/container/map/detail/preprocessed/map30.hpp +++ b/include/boost/fusion/container/map/detail/preprocessed/map30.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion template struct map : sequence_base > { - struct category : forward_traversal_tag, associative_tag {}; + struct category : random_access_traversal_tag, associative_tag {}; typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; typedef mpl::false_ is_view; diff --git a/include/boost/fusion/container/map/detail/preprocessed/map40.hpp b/include/boost/fusion/container/map/detail/preprocessed/map40.hpp index 6a75d2c6..7060a670 100644 --- a/include/boost/fusion/container/map/detail/preprocessed/map40.hpp +++ b/include/boost/fusion/container/map/detail/preprocessed/map40.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion template struct map : sequence_base > { - struct category : forward_traversal_tag, associative_tag {}; + struct category : random_access_traversal_tag, associative_tag {}; typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; typedef mpl::false_ is_view; diff --git a/include/boost/fusion/container/map/detail/preprocessed/map50.hpp b/include/boost/fusion/container/map/detail/preprocessed/map50.hpp index f9c36302..1da73641 100644 --- a/include/boost/fusion/container/map/detail/preprocessed/map50.hpp +++ b/include/boost/fusion/container/map/detail/preprocessed/map50.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion template struct map : sequence_base > { - struct category : forward_traversal_tag, associative_tag {}; + struct category : random_access_traversal_tag, associative_tag {}; typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; typedef mpl::false_ is_view; diff --git a/include/boost/fusion/container/map/detail/value_at_impl.hpp b/include/boost/fusion/container/map/detail/value_at_impl.hpp new file mode 100644 index 00000000..31d9b383 --- /dev/null +++ b/include/boost/fusion/container/map/detail/value_at_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2011 Brandon Kohn + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP) +#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP + +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + typedef typename mpl::at::type type; + }; + }; + } +}} + +#endif //BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP diff --git a/include/boost/fusion/container/map/map.hpp b/include/boost/fusion/container/map/map.hpp index d61df914..5152e6e1 100644 --- a/include/boost/fusion/container/map/map.hpp +++ b/include/boost/fusion/container/map/map.hpp @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include #include #include @@ -50,7 +52,7 @@ namespace boost { namespace fusion template struct map : sequence_base > { - struct category : forward_traversal_tag, associative_tag {}; + struct category : random_access_traversal_tag, associative_tag {}; typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp index 841eae19..d6258f60 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp @@ -61,7 +61,7 @@ namespace boost { namespace fusion template vector1( Sequence const& seq - , typename disable_if >::type* = 0 + , typename boost::disable_if >::type* = 0 ) : base_type(base_type::init_from_sequence(seq)) {} template @@ -72,7 +72,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -157,7 +157,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -242,7 +242,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -327,7 +327,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -412,7 +412,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -497,7 +497,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -582,7 +582,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -667,7 +667,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -752,7 +752,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -837,7 +837,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp index 94b82e20..a409b2e7 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp @@ -73,7 +73,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -158,7 +158,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -243,7 +243,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -328,7 +328,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -413,7 +413,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -498,7 +498,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -583,7 +583,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -668,7 +668,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -753,7 +753,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -838,7 +838,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp index 78ab3737..032ff9d2 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp @@ -73,7 +73,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -158,7 +158,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -243,7 +243,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -328,7 +328,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -413,7 +413,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -498,7 +498,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -583,7 +583,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -668,7 +668,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -753,7 +753,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -838,7 +838,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp index fb42550b..1b5fa58d 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp @@ -73,7 +73,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -158,7 +158,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -243,7 +243,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -328,7 +328,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -413,7 +413,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -498,7 +498,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -583,7 +583,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -668,7 +668,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -753,7 +753,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -838,7 +838,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp index 82f26096..ba6c1771 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp @@ -73,7 +73,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -158,7 +158,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -243,7 +243,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -328,7 +328,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -413,7 +413,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -498,7 +498,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -583,7 +583,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -668,7 +668,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -753,7 +753,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; @@ -838,7 +838,7 @@ namespace boost { namespace fusion return *this; } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp index a566278a..8e6f1f68 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template vector(Sequence const& rhs) - : vec(rhs) {} + : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -116,6 +116,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } private: + BOOST_FUSION_VECTOR_CTOR_HELPER() vector_n vec; }; }} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp index 378ea978..bc04fefe 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template vector(Sequence const& rhs) - : vec(rhs) {} + : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -136,6 +136,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } private: + BOOST_FUSION_VECTOR_CTOR_HELPER() vector_n vec; }; }} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp index f49d3ef2..0841920a 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template vector(Sequence const& rhs) - : vec(rhs) {} + : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -156,6 +156,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } private: + BOOST_FUSION_VECTOR_CTOR_HELPER() vector_n vec; }; }} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp index c683cba6..11d9cc7d 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template vector(Sequence const& rhs) - : vec(rhs) {} + : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -176,6 +176,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } private: + BOOST_FUSION_VECTOR_CTOR_HELPER() vector_n vec; }; }} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp index 316f9d27..1ac6c6f4 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template vector(Sequence const& rhs) - : vec(rhs) {} + : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -196,6 +196,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } private: + BOOST_FUSION_VECTOR_CTOR_HELPER() vector_n vec; }; }} diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp index 274c33e8..431774b3 100644 --- a/include/boost/fusion/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n.hpp @@ -104,7 +104,7 @@ BOOST_PP_CAT(vector, N)( Sequence const& seq #if (N == 1) - , typename disable_if >::type* /*dummy*/ = 0 + , typename boost::disable_if >::type* /*dummy*/ = 0 #endif ) : base_type(base_type::init_from_sequence(seq)) {} @@ -118,7 +118,7 @@ } template - typename disable_if, this_type&>::type + typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index 5bb0b6ab..6563bc93 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -17,6 +17,38 @@ #include #include +#if !defined(__WAVE__) + +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) + +#define BOOST_FUSION_VECTOR_COPY_INIT() \ + ctor_helper(rhs, is_base_of()) \ + +#define BOOST_FUSION_VECTOR_CTOR_HELPER() \ + 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; \ + } + +#else + +#define BOOST_FUSION_VECTOR_COPY_INIT() \ + rhs \ + +#define BOOST_FUSION_VECTOR_CTOR_HELPER() + +#endif + +#endif // !defined(__WAVE__) + #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) #include #else @@ -76,11 +108,7 @@ namespace boost { namespace fusion template vector(Sequence const& rhs) -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) - : vec(ctor_helper(rhs, is_base_of())) {} -#else - : vec(rhs) {} -#endif + : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} // Expand a couple of forwarding constructors for arguments // of type (T0), (T0, T1), (T0, T1, T2) etc. Example: @@ -149,21 +177,7 @@ namespace boost { namespace fusion private: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) - 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 - + BOOST_FUSION_VECTOR_CTOR_HELPER() vector_n vec; }; }} diff --git a/include/boost/fusion/iterator/equal_to.hpp b/include/boost/fusion/iterator/equal_to.hpp index c15d870a..33478377 100644 --- a/include/boost/fusion/iterator/equal_to.hpp +++ b/include/boost/fusion/iterator/equal_to.hpp @@ -74,7 +74,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< mpl::and_, is_fusion_iterator > , bool >::type @@ -85,7 +85,7 @@ namespace boost { namespace fusion template inline typename - enable_if< + boost::enable_if< mpl::and_, is_fusion_iterator > , bool >::type diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp index ad3ba585..9c4e0435 100644 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -37,7 +37,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< traits::enable_equality , bool >::type diff --git a/include/boost/fusion/sequence/comparison/greater.hpp b/include/boost/fusion/sequence/comparison/greater.hpp index f672a48e..077138d8 100644 --- a/include/boost/fusion/sequence/comparison/greater.hpp +++ b/include/boost/fusion/sequence/comparison/greater.hpp @@ -37,7 +37,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< traits::enable_comparison , bool >::type diff --git a/include/boost/fusion/sequence/comparison/greater_equal.hpp b/include/boost/fusion/sequence/comparison/greater_equal.hpp index 753deb4d..90175bc7 100644 --- a/include/boost/fusion/sequence/comparison/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/greater_equal.hpp @@ -37,7 +37,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< traits::enable_comparison , bool >::type diff --git a/include/boost/fusion/sequence/comparison/less.hpp b/include/boost/fusion/sequence/comparison/less.hpp index 82383f77..944cdcf6 100644 --- a/include/boost/fusion/sequence/comparison/less.hpp +++ b/include/boost/fusion/sequence/comparison/less.hpp @@ -28,7 +28,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< traits::enable_comparison , bool >::type diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index 890fb99c..0e5d23a5 100644 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -65,7 +65,7 @@ namespace boost { namespace fusion template inline typename - enable_if< + boost::enable_if< traits::enable_comparison , bool >::type diff --git a/include/boost/fusion/sequence/comparison/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/not_equal_to.hpp index efc9b537..14ef25df 100644 --- a/include/boost/fusion/sequence/comparison/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/not_equal_to.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< traits::enable_equality , bool >::type diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index da4e5a5c..73a1fffb 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -27,7 +27,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< fusion::traits::is_sequence , std::istream& >::type diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp index fc7fa1af..988a3985 100644 --- a/include/boost/fusion/sequence/io/out.hpp +++ b/include/boost/fusion/sequence/io/out.hpp @@ -29,7 +29,7 @@ namespace boost { namespace fusion { template inline typename - enable_if< + boost::enable_if< fusion::traits::is_sequence , std::ostream& >::type diff --git a/include/boost/fusion/support/deduce_sequence.hpp b/include/boost/fusion/support/deduce_sequence.hpp index 77631b79..ce02a3cd 100644 --- a/include/boost/fusion/support/deduce_sequence.hpp +++ b/include/boost/fusion/support/deduce_sequence.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace traits @@ -29,6 +30,13 @@ namespace boost { namespace fusion { namespace traits struct result< Self(T) > : fusion::traits::deduce { }; + + // never called, but needed for decltype-based result_of (C++0x) +#ifndef BOOST_NO_RVALUE_REFERENCES + template + typename result< deducer(T) >::type + operator()(T&&) const; +#endif }; } diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index 1c5a26e5..a3fef3ba 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -46,28 +46,29 @@ namespace boost { namespace fusion namespace detail { BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag) + + template + struct tag_of_impl + : mpl::if_, + mpl::identity, + mpl::identity >::type + {}; + + template + struct tag_of_impl< + Sequence + , typename boost::enable_if >::type> + { + typedef typename Sequence::fusion_tag type; + }; } namespace traits { - template - struct tag_of_fallback - { - typedef non_fusion_tag type; - }; - template struct tag_of - : mpl::if_< fusion::detail::is_mpl_sequence, - mpl::identity, - tag_of_fallback >::type + : boost::fusion::detail::tag_of_impl {}; - - template - struct tag_of >::type> - { - typedef typename Sequence::fusion_tag type; - }; } namespace detail diff --git a/include/boost/fusion/support/tag_of_fwd.hpp b/include/boost/fusion/support/tag_of_fwd.hpp index dfc0e01c..ba434d93 100644 --- a/include/boost/fusion/support/tag_of_fwd.hpp +++ b/include/boost/fusion/support/tag_of_fwd.hpp @@ -12,9 +12,6 @@ namespace boost { namespace fusion { namespace traits { - template - struct tag_of_fallback; - template struct tag_of; } diff --git a/include/boost/fusion/view/detail/strictest_traversal.hpp b/include/boost/fusion/view/detail/strictest_traversal.hpp index 39a389c3..7b7c9760 100644 --- a/include/boost/fusion/view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/view/detail/strictest_traversal.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_STRICTEST_TRAVERSAL_20060123_2101) #define FUSION_STRICTEST_TRAVERSAL_20060123_2101 +#include #include #include #include @@ -53,6 +54,13 @@ namespace boost { namespace fusion typedef typename stricter_traversal::type type; }; + + // never called, but needed for decltype-based result_of (C++0x) +#ifndef BOOST_NO_RVALUE_REFERENCES + template + typename result::type + operator()(StrictestSoFar&&, Next&&) const; +#endif }; template diff --git a/include/boost/fusion/view/nview/detail/nview_impl.hpp b/include/boost/fusion/view/nview/detail/nview_impl.hpp index 03aa49f4..555c34ea 100644 --- a/include/boost/fusion/view/nview/detail/nview_impl.hpp +++ b/include/boost/fusion/view/nview/detail/nview_impl.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2009 Hartmut Kaiser - 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) ==============================================================================*/ @@ -27,7 +27,7 @@ namespace boost { namespace fusion { namespace result_of { template + , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_VECTOR_SIZE, int I, INT_MAX)> struct as_nview { typedef mpl::vector_c< diff --git a/include/boost/fusion/view/nview/nview.hpp b/include/boost/fusion/view/nview/nview.hpp index 02422e0b..2355b688 100644 --- a/include/boost/fusion/view/nview/nview.hpp +++ b/include/boost/fusion/view/nview/nview.hpp @@ -23,6 +23,8 @@ #include #include +#include + namespace boost { namespace fusion { namespace detail @@ -35,12 +37,21 @@ namespace boost { namespace fusion template struct result : add_reference {}; +#ifdef BOOST_NO_RVALUE_REFERENCES template typename add_reference::type operator()(T& x) const { return x; } +#else + template + typename result::type + operator()(T&& x) const + { + return x; + } +#endif }; struct addconstref diff --git a/include/boost/fusion/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/view/zip_view/detail/end_impl.hpp index b58854e3..6423a88f 100644 --- a/include/boost/fusion/view/zip_view/detail/end_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/end_impl.hpp @@ -62,7 +62,7 @@ namespace boost { namespace fusion { template typename result::type - operator()(Seq const& seq) + operator()(Seq const& seq) const { return fusion::advance(fusion::begin(seq)); } 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 93f0979b..13e0274f 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 @@ -16,6 +16,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -35,6 +36,13 @@ namespace boost { namespace fusion { mpl::identity, result_of::value_at::type, N> > {}; + + // never called, but needed for decltype-based result_of (C++0x) +#ifndef BOOST_NO_RVALUE_REFERENCES + template + typename result::type + operator()(Seq&&) const; +#endif }; } 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 45b7b962..5571155e 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 @@ -16,6 +16,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -34,6 +35,13 @@ namespace boost { namespace fusion mpl::identity, result_of::value_of > {}; + + // never called, but needed for decltype-based result_of (C++0x) +#ifndef BOOST_NO_RVALUE_REFERENCES + template + typename result::type + operator()(It&&) const; +#endif }; } diff --git a/include/boost/fusion/view/zip_view/zip_view.hpp b/include/boost/fusion/view/zip_view/zip_view.hpp index 6258711c..e9a0222d 100644 --- a/include/boost/fusion/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/view/zip_view/zip_view.hpp @@ -37,6 +37,8 @@ #include #include +#include + namespace boost { namespace fusion { namespace detail @@ -64,6 +66,13 @@ namespace boost { namespace fusion { result_of::size, mpl::int_ >::type type; }; + + // never called, but needed for decltype-based result_of (C++0x) +#ifndef BOOST_NO_RVALUE_REFERENCES + template + typename result::type + operator()(Seq&&) const; +#endif }; struct poly_min @@ -78,6 +87,13 @@ namespace boost { namespace fusion { typedef typename remove_reference::type rhs; typedef typename mpl::min::type type; }; + + // never called, but needed for decltype-based result_of (C++0x) +#ifndef BOOST_NO_RVALUE_REFERENCES + template + typename result::type + operator()(Lhs&&, Rhs&&) const; +#endif }; template From b159898a47491bcdc855ecc61b3256e74d611785 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 30 Jan 2012 00:13:38 +0000 Subject: [PATCH 57/82] Fix missed merge from 6338 [SVN r76791] --- .../boost/fusion/view/iterator_range/detail/at_impl.hpp | 2 +- .../iterator_range/detail/segmented_iterator_range.hpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/view/iterator_range/detail/at_impl.hpp b/include/boost/fusion/view/iterator_range/detail/at_impl.hpp index 5f882aaa..1b425231 100644 --- a/include/boost/fusion/view/iterator_range/detail/at_impl.hpp +++ b/include/boost/fusion/view/iterator_range/detail/at_impl.hpp @@ -33,7 +33,7 @@ namespace boost { namespace fusion static type call(Seq& s) { - return * advance(s.first); + return * fusion::advance(s.first); } }; }; diff --git a/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp b/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp index e5f5ed0b..489d9553 100644 --- a/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp @@ -39,11 +39,18 @@ namespace boost { namespace fusion { template struct push_back; + + template + struct push_front; } template typename result_of::push_back::type push_back(Sequence const& seq, T const& x); + + template + typename result_of::push_front::type + push_front(Sequence const& seq, T const& x); }} namespace boost { namespace fusion { namespace detail From 93477e270e77bc4290220ddb8179d4d5968f8f3e Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 26 Apr 2012 00:18:51 +0000 Subject: [PATCH 58/82] Merging 77932-78199 from trunk [SVN r78200] --- .../adapted/std_tuple/detail/at_impl.hpp | 10 +- .../adapted/std_tuple/std_tuple_iterator.hpp | 10 +- .../boost/fusion/adapted/std_tuple/tag_of.hpp | 6 - .../boost/fusion/container/deque/deque.hpp | 111 ++++++++-------- .../fusion/container/deque/deque_fwd.hpp | 36 ++--- .../container/deque/detail/cpp03_deque.hpp | 125 ++++++++++++++++++ .../deque/detail/cpp03_deque_fwd.hpp | 54 ++++++++ .../container/deque/detail/keyed_element.hpp | 10 +- .../fusion/container/list/detail/at_impl.hpp | 12 +- .../fusion/container/map/detail/at_impl.hpp | 8 +- .../container/map/detail/deref_data_impl.hpp | 9 +- .../container/vector/detail/at_impl.hpp | 4 +- .../container/vector/detail/deref_impl.hpp | 9 +- .../boost/fusion/support/detail/access.hpp | 4 +- 14 files changed, 281 insertions(+), 127 deletions(-) create mode 100644 include/boost/fusion/container/deque/detail/cpp03_deque.hpp create mode 100644 include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp diff --git a/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp b/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp index 2f09719c..400f366e 100644 --- a/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp +++ b/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include @@ -29,13 +29,13 @@ namespace boost { namespace fusion struct apply { typedef typename remove_const::type seq_type; - typedef std::tuple_element element; + typedef typename std::tuple_element::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , fusion::detail::cref_result - , fusion::detail::ref_result + , typename fusion::detail::cref_result::type + , typename fusion::detail::ref_result::type >::type type; diff --git a/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp b/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp index 4998e21d..082018a4 100644 --- a/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp +++ b/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include @@ -48,12 +48,12 @@ namespace boost { namespace fusion template struct deref { - typedef value_of element; + typedef typename value_of::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , fusion::detail::cref_result - , fusion::detail::ref_result + , typename fusion::detail::cref_result::type + , typename fusion::detail::ref_result::type >::type type; diff --git a/include/boost/fusion/adapted/std_tuple/tag_of.hpp b/include/boost/fusion/adapted/std_tuple/tag_of.hpp index 10e2e181..6d7b4d6f 100644 --- a/include/boost/fusion/adapted/std_tuple/tag_of.hpp +++ b/include/boost/fusion/adapted/std_tuple/tag_of.hpp @@ -10,12 +10,6 @@ #include #include -namespace std -{ - template - class tuple; -} - namespace boost { namespace fusion { struct std_tuple_tag; diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 97238f4a..85b64b4a 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -22,6 +22,25 @@ #include #include +/////////////////////////////////////////////////////////////////////////////// +// With no decltype and variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +#if (defined(BOOST_NO_DECLTYPE) \ + || defined(BOOST_NO_VARIADIC_TEMPLATES) \ + || defined(BOOST_NO_RVALUE_REFERENCES)) +# include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") +#endif + +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include #include #include #include @@ -29,93 +48,67 @@ #include #include #include -#include -#include -#include +#include #include +#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") -#endif - -/*============================================================================= - Copyright (c) 2001-2011 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct deque_tag; - template - struct deque - : - detail::deque_keyed_values::type, - sequence_base > + template + struct deque : detail::nil_keyed_element + { + }; + + template + struct deque + : detail::deque_keyed_values::type + , sequence_base> { typedef deque_tag fusion_tag; typedef bidirectional_traversal_tag category; - typedef typename detail::deque_keyed_values::type base; - typedef typename detail::deque_initial_size::type size; + typedef typename detail::deque_keyed_values::type base; + typedef mpl::int_<(sizeof ...(Tail) + 1)> size; typedef mpl::int_ next_up; - typedef mpl::int_< - mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::int_::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(deque const& seq) - : base(seq) - {} + explicit deque(typename detail::call_param::type head + , typename detail::call_param::type... tail) + : base(detail::deque_keyed_values::call(head, tail...)) + {} - template - deque(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) - : base(base::from_iterator(fusion::begin(seq))) - {} + template + explicit deque(Sequence const& seq + , typename disable_if >::type* /*dummy*/ = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} - template - deque& - operator=(deque const& rhs) + template + deque& operator=(deque const& rhs) { base::operator=(rhs); return *this; } template - deque& - operator=(T const& rhs) + deque& operator=(T const& rhs) { base::operator=(rhs); return *this; } - }; }} -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) #endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - #endif diff --git a/include/boost/fusion/container/deque/deque_fwd.hpp b/include/boost/fusion/container/deque/deque_fwd.hpp index 7f9a1f9b..858b55bd 100644 --- a/include/boost/fusion/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/container/deque/deque_fwd.hpp @@ -11,40 +11,26 @@ #include #include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +/////////////////////////////////////////////////////////////////////////////// +// With no decltype and variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +#if (defined(BOOST_NO_DECLTYPE) \ + || defined(BOOST_NO_VARIADIC_TEMPLATES) \ + || defined(BOOST_NO_RVALUE_REFERENCES)) +# include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp") #endif -/*============================================================================= - Copyright (c) 2001-2011 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// namespace boost { namespace fusion { - struct void_; - - template< - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_DEQUE_SIZE, typename T, void_)> + template struct deque; }} -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) #endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - #endif diff --git a/include/boost/fusion/container/deque/detail/cpp03_deque.hpp b/include/boost/fusion/container/deque/detail/cpp03_deque.hpp new file mode 100644 index 00000000..5804d890 --- /dev/null +++ b/include/boost/fusion/container/deque/detail/cpp03_deque.hpp @@ -0,0 +1,125 @@ +/*============================================================================= + Copyright (c) 2005-2012 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_CPP03_FUSION_DEQUE_26112006_1649) +#define BOOST_CPP03_FUSION_DEQUE_26112006_1649 + +#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion { + + struct deque_tag; + + template + struct deque + : + detail::deque_keyed_values::type, + sequence_base > + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + 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(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + + template + deque& + operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + + template + deque& + operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } + + }; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp b/include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp new file mode 100644 index 00000000..3a74447b --- /dev/null +++ b/include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2005-2012 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(FUSION_CPP03_DEQUE_FORWARD_02092007_0749) +#define FUSION_CPP03_DEQUE_FORWARD_02092007_0749 + +#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + template< + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_DEQUE_SIZE, typename T, void_)> + struct deque; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/deque/detail/keyed_element.hpp b/include/boost/fusion/container/deque/detail/keyed_element.hpp index 1b5e3468..ff6f19a7 100644 --- a/include/boost/fusion/container/deque/detail/keyed_element.hpp +++ b/include/boost/fusion/container/deque/detail/keyed_element.hpp @@ -8,9 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330 -#include -#include - +#include #include #include @@ -59,17 +57,17 @@ namespace detail { return *this; } - typename add_reference::type>::type get(Key) const + typename cref_result::type get(Key) const { return value_; } - typename add_reference::type get(Key) + typename ref_result::type get(Key) { return value_; } - keyed_element(typename add_reference::type>::type value, Rest const& rest) + keyed_element(typename call_param::type value, Rest const& rest) : Rest(rest), value_(value) {} diff --git a/include/boost/fusion/container/list/detail/at_impl.hpp b/include/boost/fusion/container/list/detail/at_impl.hpp index 145f8aa5..75746392 100644 --- a/include/boost/fusion/container/list/detail/at_impl.hpp +++ b/include/boost/fusion/container/list/detail/at_impl.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion @@ -93,15 +93,15 @@ namespace boost { namespace fusion template struct apply { - typedef detail::cons_deref< - typename detail::cons_advance::type> + typedef typename detail::cons_deref< + typename detail::cons_advance::type>::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , detail::cref_result - , detail::ref_result + , typename detail::cref_result::type + , typename detail::ref_result::type >::type type; diff --git a/include/boost/fusion/container/map/detail/at_impl.hpp b/include/boost/fusion/container/map/detail/at_impl.hpp index f871bee0..bc51e815 100644 --- a/include/boost/fusion/container/map/detail/at_impl.hpp +++ b/include/boost/fusion/container/map/detail/at_impl.hpp @@ -28,7 +28,9 @@ namespace boost { namespace fusion template struct apply { - typedef mpl::at element; + typedef typename + mpl::at::type + element; typedef typename detail::ref_result::type type; static type @@ -41,7 +43,9 @@ namespace boost { namespace fusion template struct apply { - typedef mpl::at element; + typedef typename + mpl::at::type + element; typedef typename detail::cref_result::type type; static type diff --git a/include/boost/fusion/container/map/detail/deref_data_impl.hpp b/include/boost/fusion/container/map/detail/deref_data_impl.hpp index 07087a39..8304c898 100644 --- a/include/boost/fusion/container/map/detail/deref_data_impl.hpp +++ b/include/boost/fusion/container/map/detail/deref_data_impl.hpp @@ -12,8 +12,7 @@ #include #include #include -#include -#include +#include namespace boost { namespace fusion { namespace extension { @@ -29,10 +28,10 @@ namespace boost { namespace fusion { namespace extension typedef typename result_of::value_of::type::second_type data; typedef typename - mpl::eval_if< + mpl::if_< is_const - , detail::cref_result > - , detail::ref_result > + , typename detail::cref_result::type + , typename detail::ref_result::type >::type type; diff --git a/include/boost/fusion/container/vector/detail/at_impl.hpp b/include/boost/fusion/container/vector/detail/at_impl.hpp index 0a006dc3..0017d9c8 100644 --- a/include/boost/fusion/container/vector/detail/at_impl.hpp +++ b/include/boost/fusion/container/vector/detail/at_impl.hpp @@ -27,7 +27,7 @@ namespace boost { namespace fusion template struct apply { - typedef mpl::at element; + typedef typename mpl::at::type element; typedef typename detail::ref_result::type type; static type @@ -40,7 +40,7 @@ namespace boost { namespace fusion template struct apply { - typedef mpl::at element; + typedef typename mpl::at::type element; typedef typename detail::cref_result::type type; static type diff --git a/include/boost/fusion/container/vector/detail/deref_impl.hpp b/include/boost/fusion/container/vector/detail/deref_impl.hpp index 1d9ac4a8..8c5fb942 100644 --- a/include/boost/fusion/container/vector/detail/deref_impl.hpp +++ b/include/boost/fusion/container/vector/detail/deref_impl.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -29,14 +30,14 @@ namespace boost { namespace fusion typedef typename Iterator::vector vector; typedef typename Iterator::index index; typedef typename mpl::at< - typename vector::types, index> + typename vector::types, index>::type element; typedef typename - mpl::eval_if< + mpl::if_< is_const - , fusion::detail::cref_result - , fusion::detail::ref_result + , typename fusion::detail::cref_result::type + , typename fusion::detail::ref_result::type >::type type; diff --git a/include/boost/fusion/support/detail/access.hpp b/include/boost/fusion/support/detail/access.hpp index 03c9c319..ced7cea1 100644 --- a/include/boost/fusion/support/detail/access.hpp +++ b/include/boost/fusion/support/detail/access.hpp @@ -15,7 +15,7 @@ namespace boost { namespace fusion { namespace detail template struct ref_result { - typedef typename add_reference::type type; + typedef typename add_reference::type type; }; template @@ -23,7 +23,7 @@ namespace boost { namespace fusion { namespace detail { typedef typename add_reference< - typename add_const::type + typename add_const::type >::type type; }; From ee33ea5cfacfefce30fc8bda5d98fcc4e4fdd2e3 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 26 Apr 2012 00:18:58 +0000 Subject: [PATCH 59/82] Merging 77932-78199 from trunk [SVN r78201] --- doc/container.qbk | 497 ++++++++++++++++++++++++++++++++++++++++++- test/sequence/io.cpp | 2 +- 2 files changed, 494 insertions(+), 5 deletions(-) diff --git a/doc/container.qbk b/doc/container.qbk index 72b2229b..d66f818f 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -95,7 +95,7 @@ including any Fusion header to change the default. Example: [table [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified]]] + [[`T0`...`TN`] [Element types] [__unspecified__]] ] [heading Model of] @@ -246,7 +246,7 @@ including any Fusion header to change the default. Example: [table [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified-type]]] + [[`T0`...`TN`] [Element types] [__unspecified__]] ] [heading Model of] @@ -289,6 +289,220 @@ constant (see __recursive_inline__).] [endsect] +[section deque] + +[heading Description] + +`deque` is a simple __bidirectional_sequence__ that supports +constant-time insertion and removal of elements at both ends. Like the +__list__ and __cons__, `deque` is more efficient than __vector__ +(especially at compile time) when the target sequence is constructed +piecemeal (a data at a time, e.g. when constructing expression +templates). Like the __list__ and __cons__, runtime cost of access to +each element is peculiarly constant (see __recursive_inline__). + +Element insertion and removal are done by special `deque` helper classes +__front_extended_deque__ and __back_extended_deque__. + +[heading Header] + + #include + #include + #include + #include + +[heading Synopsis] + + template + struct deque; + +For C++11 compilers, the variadic class interface has no upper bound. + +For C++03 compilers, the variadic class interface accepts `0` to +`FUSION_MAX_DEQUE_SIZE` elements, where `FUSION_MAX_DEQUE_SIZE` is a +user definable predefined maximum that defaults to `10`. Example: + + deque + +You may define the preprocessor constant `FUSION_MAX_DEQUE_SIZE` before +including any Fusion header to change the default. Example: + + #define FUSION_MAX_DEQUE_SIZE 20 + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Elements`] [Element types] [ ]] +] + +[heading Model of] + +* __bidirectional_sequence__ + +[variablelist Notation + [[`D`] [A `deque` type]] + [[`d`, `d2`] [Instances of `deque`]] + [[`e0`...`en`] [Heterogeneous values]] + [[`s`] [A __forward_sequence__]] + [[`N`] [An __mpl_integral_constant__]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __bidirectional_sequence__. + +[table + [[Expression] [Semantics]] + [[`D()`] [Creates a deque with default constructed elements.]] + [[`D(e0, e1,... en)`] [Creates a deque with elements `e0`...`en`.]] + [[`D(s)`] [Copy constructs a deque from a __forward_sequence__, `s`.]] + [[`d = s`] [Assigns to a deque, `d`, from a __forward_sequence__, `s`.]] + [[`__at__(d)`] [The Nth element from the beginning of the sequence; see __at__.]] +] + +[blurb __note__ `__at__(d)` is provided for convenience, despite +`deque` being a __bidirectional_sequence__ only (`at` is supposed to be +a __random_access_sequence__ requirement). The runtime complexity of +__at__ is constant (see __recursive_inline__). `deque` element access +utilizes operator overloading with argument dependent lookup (ADL) of +the proper element getter function given a static constant index +parameter. Interestingly, with modern C++ compilers, this lookup is very +fast and rivals recursive template instantiations in compile time-speed, +so much so that `deque` relies on ADL for all element access (indexing) +as well as iteration.] + +[heading Example] + + deque d(12, 5.5f); + std::cout << __at_c__<0>(d) << std::endl; + std::cout << __at_c__<1>(d) << std::endl; + +[endsect] + +[section front_extended_deque] + +[heading Description] + +`front_extended_deque` allows a __deque__ to be front extended. It shares +the same properties as the __deque__. + +[heading Header] + + See __deque__ + +[heading Synopsis] + + template + struct front_extended_deque; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Deque`] [Deque type] [ ]] + [[`T`] [Element type] [ ]] +] + +[blurb __note__ `Deque` can be a __deque__, a __front_extended_deque__ or a +__back_extended_deque__] + +[heading Model of] + +* __bidirectional_sequence__ + +[variablelist Notation + [[`D`] [A `front_extended_deque` type]] + [[`e`] [Heterogeneous value]] + [[`N`] [An __mpl_integral_constant__]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is +not defined in __bidirectional_sequence__. + +[table + [[Expression] [Semantics]] + [[`D(d, e)`] [Extend `d` prepending `e` to its front.]] + [[`__at__(d)`] [The Nth element from the beginning of the sequence; see __at__.]] +] + +[blurb __note__ See __deque__ for further details.] + +[heading Example] + + typedef deque initial_deque; + initial_deque d(12, 5.5f); + front_extended_deque d2(d, 999); + std::cout << __at_c__<0>(d2) << std::endl; + std::cout << __at_c__<1>(d2) << std::endl; + std::cout << __at_c__<2>(d2) << std::endl; + +[endsect] + +[section back_extended_deque] + +[heading Description] + +`back_extended_deque` allows a __deque__ to be back extended. It shares +the same properties as the __deque__. + +[heading Header] + + See __deque__ + +[heading Synopsis] + + template + struct back_extended_deque; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Deque`] [Deque type] [ ]] + [[`T`] [Element type] [ ]] +] + +[blurb __note__ `Deque` can be a __deque__, a __back_extended_deque__ or a +__back_extended_deque__] + +[heading Model of] + +* __bidirectional_sequence__ + +[variablelist Notation + [[`D`] [A `back_extended_deque` type]] + [[`e`] [Heterogeneous value]] + [[`N`] [An __mpl_integral_constant__]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is +not defined in __bidirectional_sequence__. + +[table + [[Expression] [Semantics]] + [[`D(d, e)`] [Extend `d` prepending `e` to its back.]] + [[`__at__(d)`] [The Nth element from the beginning of the sequence; see __at__.]] +] + +[blurb __note__ See __deque__ for further details.] + +[heading Example] + + typedef deque initial_deque; + initial_deque d(12, 5.5f); + back_extended_deque d2(d, 999); + std::cout << __at_c__<0>(d2) << std::endl; + std::cout << __at_c__<1>(d2) << std::endl; + std::cout << __at_c__<2>(d2) << std::endl; + +[endsect] + [section set] [heading Description] @@ -332,7 +546,7 @@ including any Fusion header to change the default. Example: [table [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified-type]]] + [[`T0`...`TN`] [Element types] [__unspecified__]] ] [heading Model of] @@ -414,7 +628,7 @@ including any Fusion header to change the default. Example: [table [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified-type]]] + [[`T0`...`TN`] [Element types] [__unspecified__]] ] [heading Model of] @@ -617,6 +831,58 @@ __note_boost_ref__ [endsect] +[section make_deque] + +[heading Description] + +Create a __deque__ from one or more values. + +[heading Synopsis] + + template + typename __result_of_make_deque__::type + make_deque(Elements const&... elements); + +For C++11 compilers, the variadic function interface has no upper bound. + +For C++11 compilers, the variadic function accepts `0` to +`FUSION_MAX_DEQUE_SIZE` elements, where `FUSION_MAX_DEQUE_SIZE` is a +user definable predefined maximum that defaults to `10`. You may define +the preprocessor constant `FUSION_MAX_DEQUE_SIZE` before including any +Fusion header to change the default. Example: + + #define FUSION_MAX_DEQUE_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Description] [Description]] + [[`elements`] [Instances of `Elements`] [The arguments to `make_deque`]] +] + +[heading Expression Semantics] + + make_deque(elements...); + +[*Return type]: __result_of_make_deque__`::type` + +[*Semantics]: Create a __deque__ from `elements...`. + +[heading Header] + + #include + #include + +[heading Example] + + make_deque(123, "hello", 12.5) + +[heading See also] + +__note_boost_ref__ + +[endsect] + [section make_set] [heading Description] @@ -914,6 +1180,54 @@ including any Fusion header to change the default. Example: [endsect] +[section deque_tie] + +[heading Description] + +Constructs a tie using a __deque__ sequence. + +[heading Synopsis] + + template + __deque__ + deque_tie(Elements&... elements); + +For C++11 compilers, the variadic function interface has no upper bound. + +For C++03 compilers, the variadic function accepts `0` to +`FUSION_MAX_DEQUE_SIZE` elements, where `FUSION_MAX_DEQUE_SIZE` is a +user definable predefined maximum that defaults to `10`. You may define +the preprocessor constant `FUSION_MAX_DEQUE_SIZE` before including any +Fusion header to change the default. Example: + + #define FUSION_MAX_DEQUE_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Description] [Description]] + [[`elements`] [Instances of `Elements`] [The arguments to `deque_tie`]] +] + +[heading Expression Semantics] + + deque_tie(elements...); + +[*Return type]: __deque__ + +[*Semantics]: Create a __deque__ of references from `elements...`. + +[heading Header] + + #include + #include + +[heading Example] + + int i = 123; + double d = 123.456; + deque_tie(i, d) + [endsect] [section MetaFunctions] @@ -1048,6 +1362,54 @@ rules for __element_conversion__. [endsect] +[section make_deque] + +[heading Description] + +Returns the result type of __make_deque__. + +[heading Synopsis] + + template + struct make_deque; + +For C++11 compilers, the variadic template interface has no upper bound. + +For C++03 The variadic function accepts `0` to `FUSION_MAX_DEQUE_SIZE` +elements, where `FUSION_MAX_DEQUE_SIZE` is a user definable predefined +maximum that defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_DEQUE_SIZE` before including any Fusion header to change the +default. Example: + + #define FUSION_MAX_DEQUE_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Elements`] [Variadic template types] [Template arguments to `make_deque`]] +] + +[heading Expression Semantics] + + result_of::make_deque::type + +[*Return type]: A __deque__ with elements of types converted following the +rules for __element_conversion__. + +[*Semantics]: Create a __deque__ from `Elements...`. + +[heading Header] + + #include + #include + +[heading Example] + + result_of::make_deque::type + +[endsect] + [section make_set] [heading Description] @@ -1240,6 +1602,53 @@ default. Example: [endsect] +[section deque_tie] + +[heading Description] + +Returns the result type of __deque_tie__. + +[heading Synopsis] + + template + struct deque_tie; + +For C++11 compilers, the variadic template interface has no upper bound. + +For C++03 compilers, the variadic function accepts `0` to +`FUSION_MAX_DEQUE_SIZE` elements, where `FUSION_MAX_DEQUE_SIZE` is a +user definable predefined maximum that defaults to `10`. You may define +the preprocessor constant `FUSION_MAX_DEQUE_SIZE` before including any +Fusion header to change the default. Example: + + #define FUSION_MAX_DEQUE_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Elements`] [Variadic template types] [Template arguments to `deque_tie`]] +] + +[heading Expression Semantics] + + result_of::deque_tie::type; + +[*Return type]: __deque__ + +[*Semantics]: Create a __deque__ of references from `Elements...`. + +[heading Header] + + #include + #include + +[heading Example] + + result_of::deque_tie::type + +[endsect] + [section map_tie] [heading Description] @@ -1388,6 +1797,48 @@ Convert a fusion sequence to a __vector__. [endsect] +[section as_deque] + +[heading Description] + +Convert a fusion sequence to a __deque__. + +[heading Synopsis] + + template + typename result_of::as_deque::type + as_deque(Sequence& seq); + + template + typename result_of::as_deque::type + as_deque(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [An instance of Sequence] [The sequence to convert.]] +] + +[heading Expression Semantics] + + as_deque(seq); + +[*Return type]: __result_of_as_deque__`::type` + +[*Semantics]: Convert a fusion sequence, `seq`, to a __deque__. + +[heading Header] + + #include + #include + +[heading Example] + + as_deque(__make_vector__('x', 123, "hello")) + +[endsect] + [section as_set] [heading Description] @@ -1559,6 +2010,44 @@ Returns the result type of __as_vector__. [endsect] +[section as_deque] + +[heading Description] + +Returns the result type of __as_deque__. + +[heading Synopsis] + + template + struct as_deque; + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A fusion __sequence__] [The sequence type to convert.]] +] + +[heading Expression Semantics] + + result_of::as_deque::type; + +[*Return type]: A __deque__ with same elements as the input sequence, +`Sequence`. + +[*Semantics]: Convert a fusion sequence, `Sequence`, to a __deque__. + +[heading Header] + + #include + #include + +[heading Example] + + result_of::as_deque<__vector__ >::type + +[endsect] + [section as_set] [heading Description] diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp index 00e88b13..74e0f30c 100644 --- a/test/sequence/io.cpp +++ b/test/sequence/io.cpp @@ -103,7 +103,7 @@ main() useThisIStringStream is("(100 200 300)"); vector ti; - BOOST_TEST(bool((is >> ti) != 0)); + BOOST_TEST(bool(is >> ti) != 0); BOOST_TEST(ti == make_vector(100, 200, 300)); // Note that strings are problematic: From 2e99690387e198a44dcec7c5b2139d1b0fc962c3 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 26 Apr 2012 00:26:25 +0000 Subject: [PATCH 60/82] added missing file from last merge [SVN r78202] --- .../deque/detail/cpp11_deque_keyed_values.hpp | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp diff --git a/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp new file mode 100644 index 00000000..43ed5360 --- /dev/null +++ b/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2005-2012 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_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901) +#define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct keyed_element; + + template + struct deque_keyed_values_impl; + + template + struct deque_keyed_values_impl + { + typedef mpl::int_<(N::value + 1)> next_index; + typedef typename deque_keyed_values_impl::type tail; + typedef keyed_element type; + + static type call( + typename detail::call_param::type head + , typename detail::call_param::type... tail) + { + return type( + head + , deque_keyed_values_impl::call(tail...) + ); + } + }; + + struct nil_keyed_element; + + template + struct deque_keyed_values_impl + { + typedef nil_keyed_element type; + static type call() { return type(); } + }; + + template + struct deque_keyed_values + : deque_keyed_values_impl, Elements...> {}; +}}} + +#endif From e03dcc7c54f92ec7fe39bd56c0fd5330ff31cd86 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 26 Apr 2012 02:27:13 +0000 Subject: [PATCH 61/82] added missing file from last merge [SVN r78203] --- .../deque/detail/cpp03_deque_keyed_values.hpp | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 include/boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp diff --git a/include/boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp new file mode 100644 index 00000000..2fee4700 --- /dev/null +++ b/include/boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp @@ -0,0 +1,106 @@ +/*============================================================================= + Copyright (c) 2005-2012 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_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330) +#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330 + +#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#define FUSION_VOID(z, n, _) void_ + +namespace boost { namespace fusion +{ + struct void_; +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_keyed_values" FUSION_MAX_DEQUE_SIZE_STR ".hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion { 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)> + {}; + +}}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#undef FUSION_VOID + +#endif From bcb5fd9618f7bd8efbe12f1c3ecda7dc37442212 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 11 Jun 2012 01:30:33 +0000 Subject: [PATCH 62/82] Merge r77879 from trunk. I think it should have been merged in r78201, and was messing up the doc build (you can see it in the content in 1.50 beta1). [SVN r78876] --- doc/container.qbk | 14 +++++++++----- doc/fusion.qbk | 9 ++++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/doc/container.qbk b/doc/container.qbk index d66f818f..e8408d9d 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -21,10 +21,11 @@ __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 -sequence container, and in many cases the most efficient. +`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 (a +vector with N elements is just a struct with N members), and in many +cases the most efficient. [heading Header] @@ -156,7 +157,7 @@ time). The runtime cost of access to each element is peculiarly constant [table [[Parameter] [Description] [Default]] - [[`Car`] [Head type] []] + [[`Car`] [Head type] [ ]] [[`Cdr`] [Tail type] [`nil`]] ] @@ -1000,6 +1001,7 @@ succeeding sections document the various /tier/ flavors. * __list_tie__ * __vector_tie__ * __map_tie__ +* __deque_tie__ Example: @@ -1230,6 +1232,8 @@ Fusion header to change the default. Example: [endsect] +[endsect] + [section MetaFunctions] [section make_list] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index a6202ab3..ce4e5973 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -11,7 +11,7 @@ [quickbook 1.3] [version 2.1] [authors [de Guzman, Joel], [Marsden, Dan], [Schwinger, Tobias]] - [copyright 2001 2002 2003 2004 2005 2006 2011 Joel de Guzman, Dan Marsden, Tobias Schwinger] + [copyright 2001 2002 2003 2004 2005 2006 2011 2012 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. @@ -116,6 +116,9 @@ [def __vector__ [link fusion.container.vector `vector`]] [def __cons__ [link fusion.container.cons `cons`]] [def __list__ [link fusion.container.list `list`]] +[def __deque__ [link fusion.container.deque `deque`]] +[def __front_extended_deque__ [link fusion.container.front_extended_deque `front_extended_deque`]] +[def __back_extended_deque__ [link fusion.container.back_extended_deque `back_extended_deque`]] [def __set__ [link fusion.container.set `set`]] [def __map__ [link fusion.container.map `map`]] @@ -198,12 +201,16 @@ [def __result_of_make_cons__ [link fusion.container.generation.metafunctions.make_cons `result_of::make_cons`]] [def __make_list__ [link fusion.container.generation.functions.make_list `make_list`]] [def __result_of_make_list__ [link fusion.container.generation.metafunctions.make_list `result_of::make_list`]] +[def __make_deque__ [link fusion.container.generation.functions.make_deque `make_deque`]] +[def __result_of_make_deque__ [link fusion.container.generation.metafunctions.make_deque `result_of::make_deque`]] [def __make_set__ [link fusion.container.generation.functions.make_set `make_set`]] [def __result_of_make_set__ [link fusion.container.generation.metafunctions.make_set `result_of::make_set`]] [def __make_map__ [link fusion.container.generation.functions.make_map `make_map`]] [def __result_of_make_map__ [link fusion.container.generation.metafunctions.make_map `result_of::make_map`]] [def __list_tie__ [link fusion.container.generation.functions.list_tie `list_tie`]] [def __result_of_list_tie__ [link fusion.container.generation.metafunctions.list_tie `result_of::list_tie`]] +[def __deque_tie__ [link fusion.container.generation.functions.deque_tie `deque_tie`]] +[def __result_of_deque_tie__ [link fusion.container.generation.metafunctions.deque_tie `result_of::deque_tie`]] [def __out__ [link fusion.sequence.operator.i_o.out out]] [def __in__ [link fusion.sequence.operator.i_o.in in]] From 5a51e5d9aa4b8a30b7c58937adc93a796b883ac0 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 5 Jul 2012 04:40:37 +0000 Subject: [PATCH 63/82] Merge from trunk [SVN r79274] --- .../fusion/adapted/adt/detail/extension.hpp | 21 +- include/boost/fusion/adapted/struct.hpp | 1 + .../adapted/struct/define_struct_inline.hpp | 25 ++ .../struct/detail/define_struct_inline.hpp | 358 ++++++++++++++++++ .../boost/fusion/algorithm/auxiliary/copy.hpp | 13 +- .../fusion/algorithm/iteration/accumulate.hpp | 16 +- .../algorithm/iteration/accumulate_fwd.hpp | 15 +- .../fusion/algorithm/iteration/for_each.hpp | 16 +- .../algorithm/iteration/for_each_fwd.hpp | 17 +- .../boost/fusion/algorithm/query/count.hpp | 9 +- .../boost/fusion/algorithm/query/count_if.hpp | 9 +- .../fusion/algorithm/transformation/erase.hpp | 35 +- .../algorithm/transformation/insert.hpp | 10 +- .../algorithm/transformation/push_back.hpp | 9 +- .../algorithm/transformation/push_front.hpp | 9 +- .../algorithm/transformation/replace.hpp | 9 +- .../algorithm/transformation/replace_if.hpp | 8 +- .../algorithm/transformation/reverse.hpp | 9 +- .../container/deque/back_extended_deque.hpp | 41 +- .../boost/fusion/container/deque/convert.hpp | 6 +- .../boost/fusion/container/deque/deque.hpp | 22 +- .../fusion/container/deque/deque_fwd.hpp | 11 +- .../fusion/container/deque/deque_iterator.hpp | 10 +- .../container/deque/detail/as_deque.hpp | 2 +- .../fusion/container/deque/detail/at_impl.hpp | 36 +- .../container/deque/detail/begin_impl.hpp | 26 +- .../container/deque/detail/convert_impl.hpp | 4 +- .../deque/detail/deque_forward_ctor.hpp | 8 +- .../deque/detail/deque_initial_size.hpp | 6 +- .../deque/detail/deque_keyed_values_call.hpp | 6 +- .../container/deque/detail/end_impl.hpp | 26 +- .../deque/detail/is_sequence_impl.hpp | 10 +- .../container/deque/detail/keyed_element.hpp | 29 +- .../container/deque/detail/value_at_impl.hpp | 22 +- .../container/deque/front_extended_deque.hpp | 39 +- .../boost/fusion/container/deque/limits.hpp | 6 +- .../fusion/container/map/detail/at_impl.hpp | 2 +- .../vector/detail/preprocessed/vector10.hpp | 141 +++++++ .../vector/detail/preprocessed/vector20.hpp | 140 +++++++ .../vector/detail/preprocessed/vector30.hpp | 140 +++++++ .../vector/detail/preprocessed/vector40.hpp | 140 +++++++ .../vector/detail/preprocessed/vector50.hpp | 140 +++++++ .../container/vector/detail/vector_n.hpp | 19 + .../fusion/functional/adapter/unfused.hpp | 12 + .../functional/adapter/unfused_typed.hpp | 12 + .../fusion/include/define_struct_inline.hpp | 13 + .../sequence/comparison/detail/equal_to.hpp | 3 +- .../sequence/comparison/detail/greater.hpp | 6 +- .../comparison/detail/greater_equal.hpp | 6 +- .../sequence/comparison/detail/less.hpp | 6 +- .../sequence/comparison/detail/less_equal.hpp | 6 +- .../comparison/detail/not_equal_to.hpp | 3 +- include/boost/fusion/support.hpp | 1 + include/boost/fusion/support/as_const.hpp | 26 ++ include/boost/fusion/support/is_segmented.hpp | 7 +- include/boost/fusion/support/is_sequence.hpp | 6 +- include/boost/fusion/support/is_view.hpp | 7 +- .../detail/segmented_iterator_range.hpp | 14 +- 58 files changed, 1566 insertions(+), 183 deletions(-) create mode 100644 include/boost/fusion/adapted/struct/define_struct_inline.hpp create mode 100644 include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp mode change 100755 => 100644 include/boost/fusion/functional/adapter/unfused.hpp create mode 100644 include/boost/fusion/include/define_struct_inline.hpp create mode 100644 include/boost/fusion/support/as_const.hpp diff --git a/include/boost/fusion/adapted/adt/detail/extension.hpp b/include/boost/fusion/adapted/adt/detail/extension.hpp index 50c40cf3..2f4db4dd 100644 --- a/include/boost/fusion/adapted/adt/detail/extension.hpp +++ b/include/boost/fusion/adapted/adt/detail/extension.hpp @@ -12,13 +12,28 @@ #include #include +#include +#include -namespace boost { namespace fusion { namespace detail -{ +namespace boost { namespace fusion +{ + namespace detail + { template struct get_identity : remove_const::type> {}; -}}} + } + + namespace extension + { + // Overload as_const() to unwrap adt_attribute_proxy. + template + typename adt_attribute_proxy::type as_const(const adt_attribute_proxy& proxy) + { + return proxy.get(); + } + } +}} #endif diff --git a/include/boost/fusion/adapted/struct.hpp b/include/boost/fusion/adapted/struct.hpp index acc12e69..e51b514b 100644 --- a/include/boost/fusion/adapted/struct.hpp +++ b/include/boost/fusion/adapted/struct.hpp @@ -16,5 +16,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/adapted/struct/define_struct_inline.hpp b/include/boost/fusion/adapted/struct/define_struct_inline.hpp new file mode 100644 index 00000000..9dc5b44c --- /dev/null +++ b/include/boost/fusion/adapted/struct/define_struct_inline.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2012 Nathan Ridge + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP + +#include +#include + +#define BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE( \ + TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES) \ + \ + BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE_IMPL( \ + TEMPLATE_PARAMS_SEQ, \ + NAME, \ + ATTRIBUTES) + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE(NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_IMPL(NAME, ATTRIBUTES) \ + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp new file mode 100644 index 00000000..84eccca6 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp @@ -0,0 +1,358 @@ +/*============================================================================= + Copyright (c) 2012 Nathan Ridge + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY(R, DATA, N, ATTRIBUTE) \ + BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)() + +#define BOOST_FUSION_MAKE_CONST_REF_PARAM(R, DATA, N, ATTRIBUTE) \ + BOOST_PP_COMMA_IF(N) \ + BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) const& \ + BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE) + +#define BOOST_FUSION_MAKE_INIT_LIST_ENTRY_I(NAME) NAME(NAME) + +#define BOOST_FUSION_MAKE_INIT_LIST_ENTRY(R, DATA, N, ATTRIBUTE) \ + BOOST_PP_COMMA_IF(N) \ + BOOST_FUSION_MAKE_INIT_LIST_ENTRY_I(BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)) + +// Note: all template parameter names need to be uglified, otherwise they might +// shadow a template parameter of the struct when used with +// BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE + +#define BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS(Z, N, NAME) \ + template \ + struct value_of > \ + : boost::mpl::identity< \ + typename boost_fusion_uglified_Sq::t##N##_type \ + > \ + { \ + }; + +#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ + SPEC_TYPE, CALL_ARG_TYPE, TYPE_QUAL, ATTRIBUTE, N) \ + \ + template \ + struct deref > \ + { \ + typedef typename boost_fusion_uglified_Sq::t##N##_type TYPE_QUAL& type; \ + static type call(CALL_ARG_TYPE, N> const& iter) \ + { \ + return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ + } \ + }; + +#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS(R, NAME, N, ATTRIBUTE) \ + BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ + BOOST_PP_CAT(NAME, _iterator) \ + struct value_at > \ + { \ + typedef typename boost_fusion_uglified_Sq::t##N##_type type; \ + }; + +#define BOOST_FUSION_MAKE_AT_SPECS(R, DATA, N, ATTRIBUTE) \ + template \ + struct at > \ + { \ + typedef typename boost::mpl::if_< \ + boost::is_const, \ + typename boost_fusion_uglified_Sq::t##N##_type const&, \ + typename boost_fusion_uglified_Sq::t##N##_type& \ + >::type type; \ + \ + static type call(boost_fusion_uglified_Sq& sq) \ + { \ + return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ + } \ + }; + +#define BOOST_FUSION_MAKE_TYPEDEF(R, DATA, N, ATTRIBUTE) \ + typedef BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) t##N##_type; + +#define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \ + BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_IMPL(NAME, ATTRIBUTES) \ + struct NAME : boost::fusion::sequence_facade< \ + NAME, \ + boost::fusion::random_access_traversal_tag \ + > \ + { \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS(NAME, ATTRIBUTES) \ + }; + +#define BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE_IMPL( \ + TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES) \ + \ + template < \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \ + (0)TEMPLATE_PARAMS_SEQ) \ + > \ + struct NAME : boost::fusion::sequence_facade< \ + NAME< \ + BOOST_PP_SEQ_ENUM(TEMPLATE_PARAMS_SEQ) \ + >, \ + boost::fusion::random_access_traversal_tag \ + > \ + { \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS(NAME, ATTRIBUTES) \ + }; + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS(NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_MEMBERS_IMPL( \ + NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END)) + +#define BOOST_FUSION_DEFINE_STRUCT_MEMBERS_IMPL(NAME, ATTRIBUTES_SEQ) \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ + NAME, \ + ATTRIBUTES_SEQ, \ + BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)) + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \ + \ + NAME() \ + : BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY, \ + ~, \ + ATTRIBUTES_SEQ) \ + { \ + } \ + \ + NAME(BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_CONST_REF_PARAM, \ + ~, \ + ATTRIBUTES_SEQ)) \ + : BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_INIT_LIST_ENTRY, \ + ~, \ + ATTRIBUTES_SEQ) \ + { \ + } \ + \ + template \ + NAME(const boost_fusion_uglified_Seq& rhs) \ + { \ + boost::fusion::copy(rhs, *this); \ + } \ + \ + template \ + NAME& operator=(const boost_fusion_uglified_Seq& rhs) \ + { \ + boost::fusion::copy(rhs, *this); \ + return *this; \ + } \ + \ + template \ + struct NAME##_iterator \ + : boost::fusion::iterator_facade< \ + NAME##_iterator, \ + boost::fusion::random_access_traversal_tag \ + > \ + { \ + typedef boost::mpl::int_ index; \ + typedef boost_fusion_uglified_Seq sequence_type; \ + \ + NAME##_iterator(boost_fusion_uglified_Seq& seq) : seq_(seq) {} \ + \ + boost_fusion_uglified_Seq& seq_; \ + \ + template struct value_of; \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ + NAME) \ + \ + template struct deref; \ + BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ + NAME, \ + ATTRIBUTES_SEQ) \ + \ + template \ + struct next \ + { \ + typedef NAME##_iterator< \ + typename boost_fusion_uglified_It::sequence_type, \ + boost_fusion_uglified_It::index::value + 1 \ + > type; \ + \ + static type call(boost_fusion_uglified_It const& it) \ + { \ + return type(it.seq_); \ + } \ + }; \ + \ + template \ + struct prior \ + { \ + typedef NAME##_iterator< \ + typename boost_fusion_uglified_It::sequence_type, \ + boost_fusion_uglified_It::index::value - 1 \ + > type; \ + \ + static type call(boost_fusion_uglified_It const& it) \ + { \ + return type(it.seq_); \ + } \ + }; \ + \ + template < \ + typename boost_fusion_uglified_It1, \ + typename boost_fusion_uglified_It2 \ + > \ + struct distance \ + { \ + typedef typename boost::mpl::minus< \ + typename boost_fusion_uglified_It2::index, \ + typename boost_fusion_uglified_It1::index \ + >::type type; \ + \ + static type call(boost_fusion_uglified_It1 const& it1, \ + boost_fusion_uglified_It2 const& it2) \ + { \ + return type(); \ + } \ + }; \ + \ + template < \ + typename boost_fusion_uglified_It, \ + typename boost_fusion_uglified_M \ + > \ + struct advance \ + { \ + typedef NAME##_iterator< \ + typename boost_fusion_uglified_It::sequence_type, \ + boost_fusion_uglified_It::index::value \ + + boost_fusion_uglified_M::value \ + > type; \ + \ + static type call(boost_fusion_uglified_It const& it) \ + { \ + return type(it.seq_); \ + } \ + }; \ + }; \ + \ + template \ + struct begin \ + { \ + typedef NAME##_iterator type; \ + \ + static type call(boost_fusion_uglified_Sq& sq) \ + { \ + return type(sq); \ + } \ + }; \ + \ + template \ + struct end \ + { \ + typedef NAME##_iterator< \ + boost_fusion_uglified_Sq, \ + ATTRIBUTES_SEQ_SIZE \ + > type; \ + \ + static type call(boost_fusion_uglified_Sq& sq) \ + { \ + return type(sq); \ + } \ + }; \ + \ + template \ + struct size : boost::mpl::int_ \ + { \ + }; \ + \ + template \ + struct empty : boost::mpl::bool_ \ + { \ + }; \ + \ + template < \ + typename boost_fusion_uglified_Sq, \ + typename boost_fusion_uglified_N \ + > \ + struct value_at : value_at< \ + boost_fusion_uglified_Sq, \ + boost::mpl::int_ \ + > \ + { \ + }; \ + \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_VALUE_AT_SPECS, \ + ~) \ + \ + template < \ + typename boost_fusion_uglified_Sq, \ + typename boost_fusion_uglified_N \ + > \ + struct at : at< \ + boost_fusion_uglified_Sq, \ + boost::mpl::int_ \ + > \ + { \ + }; \ + \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_MAKE_AT_SPECS, ~, ATTRIBUTES_SEQ) \ + \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_MAKE_TYPEDEF, ~, ATTRIBUTES_SEQ) \ + \ + BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_DATA_MEMBER, \ + ~, \ + ATTRIBUTES_SEQ) + +#endif diff --git a/include/boost/fusion/algorithm/auxiliary/copy.hpp b/include/boost/fusion/algorithm/auxiliary/copy.hpp index 2720627c..fd866468 100644 --- a/include/boost/fusion/algorithm/auxiliary/copy.hpp +++ b/include/boost/fusion/algorithm/auxiliary/copy.hpp @@ -11,8 +11,11 @@ #include #include #include +#include #include #include +#include +#include #if defined (BOOST_MSVC) # pragma warning(push) @@ -54,7 +57,15 @@ namespace boost { namespace fusion } template - inline void + inline + typename + enable_if_c< + type_traits::ice_and< + traits::is_sequence::value + , traits::is_sequence::value + >::value, + void + >::type copy(Seq1 const& src, Seq2& dest) { BOOST_STATIC_ASSERT( diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp index a8d6a357..4b676dea 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -9,6 +9,8 @@ #include #include +#include +#include namespace boost { namespace fusion { @@ -23,14 +25,24 @@ namespace boost { namespace fusion } template - inline typename result_of::accumulate::type + inline + typename + lazy_enable_if< + traits::is_sequence + , result_of::accumulate + >::type accumulate(Sequence& seq, State const& state, F f) { return fusion::fold(seq, state, f); } template - inline typename result_of::accumulate::type + inline + typename + lazy_enable_if< + traits::is_sequence + , result_of::accumulate + >::type accumulate(Sequence const& seq, State const& state, F f) { return fusion::fold(seq, state, f); diff --git a/include/boost/fusion/algorithm/iteration/accumulate_fwd.hpp b/include/boost/fusion/algorithm/iteration/accumulate_fwd.hpp index 9c0bd115..a4ca316c 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate_fwd.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate_fwd.hpp @@ -7,6 +7,9 @@ #if !defined(BOOST_FUSION_ACCUMULATE_FWD_HPP_INCLUDED) #define BOOST_FUSION_ACCUMULATE_FWD_HPP_INCLUDED +#include +#include + namespace boost { namespace fusion { namespace result_of @@ -16,11 +19,19 @@ namespace boost { namespace fusion } template - typename result_of::accumulate::type + typename + lazy_enable_if< + traits::is_sequence + , result_of::accumulate + >::type accumulate(Sequence& seq, State const& state, F f); template - typename result_of::accumulate::type + typename + lazy_enable_if< + traits::is_sequence + , result_of::accumulate + >::type accumulate(Sequence const& seq, State const& state, F f); }} diff --git a/include/boost/fusion/algorithm/iteration/for_each.hpp b/include/boost/fusion/algorithm/iteration/for_each.hpp index ab8b8f0e..17cde34a 100644 --- a/include/boost/fusion/algorithm/iteration/for_each.hpp +++ b/include/boost/fusion/algorithm/iteration/for_each.hpp @@ -11,6 +11,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -24,14 +26,24 @@ namespace boost { namespace fusion } template - inline void + inline + typename + enable_if< + traits::is_sequence + , void + >::type for_each(Sequence& seq, F const& f) { detail::for_each(seq, f, typename traits::is_segmented::type()); } template - inline void + inline + typename + enable_if< + traits::is_sequence + , void + >::type for_each(Sequence const& seq, F const& f) { detail::for_each(seq, f, typename traits::is_segmented::type()); diff --git a/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp b/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp index 544915d9..b757873e 100644 --- a/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp +++ b/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp @@ -7,6 +7,9 @@ #if !defined(BOOST_FUSION_FOR_EACH_FWD_HPP_INCLUDED) #define BOOST_FUSION_FOR_EACH_FWD_HPP_INCLUDED +#include +#include + namespace boost { namespace fusion { namespace result_of @@ -16,11 +19,21 @@ namespace boost { namespace fusion } template - void + inline + typename + enable_if< + traits::is_sequence + , void + >::type for_each(Sequence& seq, F const& f); template - void + inline + typename + enable_if< + traits::is_sequence + , void + >::type for_each(Sequence const& seq, F const& f); }} diff --git a/include/boost/fusion/algorithm/query/count.hpp b/include/boost/fusion/algorithm/query/count.hpp index ade58671..04887163 100644 --- a/include/boost/fusion/algorithm/query/count.hpp +++ b/include/boost/fusion/algorithm/query/count.hpp @@ -10,6 +10,8 @@ #include #include +#include +#include namespace boost { namespace fusion { @@ -23,7 +25,12 @@ namespace boost { namespace fusion } template - inline int + inline + typename + enable_if< + traits::is_sequence + , int + >::type count(Sequence const& seq, T const& x) { detail::count_compare f(x); diff --git a/include/boost/fusion/algorithm/query/count_if.hpp b/include/boost/fusion/algorithm/query/count_if.hpp index 51112cf0..79297973 100644 --- a/include/boost/fusion/algorithm/query/count_if.hpp +++ b/include/boost/fusion/algorithm/query/count_if.hpp @@ -10,6 +10,8 @@ #include #include +#include +#include namespace boost { namespace fusion { @@ -23,7 +25,12 @@ namespace boost { namespace fusion } template - inline int + inline + typename + enable_if< + traits::is_sequence + , int + >::type count_if(Sequence const& seq, F f) { return detail::count_if( diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp index 304ed4c5..6ad737fd 100644 --- a/include/boost/fusion/algorithm/transformation/erase.hpp +++ b/include/boost/fusion/algorithm/transformation/erase.hpp @@ -16,6 +16,9 @@ #include #include #include +#include +#include +#include namespace boost { namespace fusion { @@ -53,18 +56,38 @@ namespace boost { namespace fusion } }; + struct use_default; + + template + struct fusion_default_help + : mpl::if_< + is_same + , Default + , T + > + { + }; + template < typename Sequence , typename First - , typename Last = typename compute_erase_last::type> + , typename Last = use_default> 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 First FirstType; + typedef typename + fusion_default_help< + Last + , typename compute_erase_last::type + >::type + LastType; + + 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; @@ -72,7 +95,11 @@ namespace boost { namespace fusion } template - typename result_of::erase::type + typename + lazy_enable_if< + traits::is_sequence + , typename result_of::erase + >::type erase(Sequence const& seq, First const& first) { typedef result_of::erase result_of; diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp index ac5bca38..2052fc01 100644 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -16,6 +16,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -38,8 +40,12 @@ namespace boost { namespace fusion } template - inline typename result_of::insert< - Sequence const, Position, T>::type + inline + typename + lazy_enable_if< + traits::is_sequence + , result_of::insert + >::type insert(Sequence const& seq, Position const& pos, T const& x) { typedef result_of::insert< diff --git a/include/boost/fusion/algorithm/transformation/push_back.hpp b/include/boost/fusion/algorithm/transformation/push_back.hpp index 00a01a80..9afe538a 100644 --- a/include/boost/fusion/algorithm/transformation/push_back.hpp +++ b/include/boost/fusion/algorithm/transformation/push_back.hpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -24,7 +26,12 @@ namespace boost { namespace fusion } template - inline typename result_of::push_back::type + inline + typename + lazy_enable_if< + traits::is_sequence + , result_of::push_back + >::type push_back(Sequence const& seq, T const& x) { typedef typename result_of::push_back push_back; diff --git a/include/boost/fusion/algorithm/transformation/push_front.hpp b/include/boost/fusion/algorithm/transformation/push_front.hpp index d08ad279..abe7faad 100644 --- a/include/boost/fusion/algorithm/transformation/push_front.hpp +++ b/include/boost/fusion/algorithm/transformation/push_front.hpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -24,7 +26,12 @@ namespace boost { namespace fusion } template - inline typename result_of::push_front::type + inline + typename + lazy_enable_if< + traits::is_sequence + , result_of::push_front + >::type push_front(Sequence const& seq, T const& x) { typedef typename result_of::push_front push_front; diff --git a/include/boost/fusion/algorithm/transformation/replace.hpp b/include/boost/fusion/algorithm/transformation/replace.hpp index bfe186e5..a92e6e37 100644 --- a/include/boost/fusion/algorithm/transformation/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/replace.hpp @@ -9,6 +9,8 @@ #include #include +#include +#include namespace boost { namespace fusion { @@ -22,7 +24,12 @@ namespace boost { namespace fusion } template - inline typename result_of::replace::type + inline + typename + enable_if< + traits::is_sequence + , typename result_of::replace::type + >::type replace(Sequence const& seq, T const& old_value, T const& new_value) { typedef typename result_of::replace::type result; diff --git a/include/boost/fusion/algorithm/transformation/replace_if.hpp b/include/boost/fusion/algorithm/transformation/replace_if.hpp index 29913436..39b9009a 100644 --- a/include/boost/fusion/algorithm/transformation/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/replace_if.hpp @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -24,7 +25,12 @@ namespace boost { namespace fusion } template - inline typename result_of::replace_if::type + inline + typename + enable_if< + traits::is_sequence + , typename result_of::replace_if::type + >::type replace_if(Sequence const& seq, F pred, T const& new_value) { typedef typename result_of::replace_if::type result; diff --git a/include/boost/fusion/algorithm/transformation/reverse.hpp b/include/boost/fusion/algorithm/transformation/reverse.hpp index 23c4fe65..923b90fc 100644 --- a/include/boost/fusion/algorithm/transformation/reverse.hpp +++ b/include/boost/fusion/algorithm/transformation/reverse.hpp @@ -8,6 +8,8 @@ #define FUSION_REVERSE_07212005_1230 #include +#include +#include namespace boost { namespace fusion { @@ -21,7 +23,12 @@ namespace boost { namespace fusion } template - inline reverse_view + inline + typename + enable_if< + traits::is_sequence + , reverse_view + >::type reverse(Sequence const& view) { return reverse_view(view); diff --git a/include/boost/fusion/container/deque/back_extended_deque.hpp b/include/boost/fusion/container/deque/back_extended_deque.hpp index ef8345f7..738e05bb 100644 --- a/include/boost/fusion/container/deque/back_extended_deque.hpp +++ b/include/boost/fusion/container/deque/back_extended_deque.hpp @@ -1,36 +1,47 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_BACK_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209 -#include #include -#include + #include #include +#include -#include -#include - -namespace boost { namespace fusion { - template +namespace boost { namespace fusion +{ + template struct back_extended_deque - : detail::keyed_element, - sequence_base > + : detail::keyed_element + , sequence_base > { 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; + typedef mpl::int_<(Deque::next_up::value + 1)> next_up; + typedef mpl::int_<(result_of::size::value + 1)> size; - back_extended_deque(Deque const& deque, typename add_reference::type>::type t) - : base(t, deque) + template + back_extended_deque(Deque const& deque, Arg const& val) + : base(val, deque) {} + +#if defined(BOOST_NO_RVALUE_REFERENCES) + template + back_extended_deque(Deque const& deque, Arg& val) + : base(val, deque) + {} +#else + template + back_extended_deque(Deque const& deque, Arg&& val) + : base(std::forward(val), deque) + {} +#endif }; }} diff --git a/include/boost/fusion/container/deque/convert.hpp b/include/boost/fusion/container/deque/convert.hpp index 0f8ea657..1910cb84 100644 --- a/include/boost/fusion/container/deque/convert.hpp +++ b/include/boost/fusion/container/deque/convert.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -21,7 +21,9 @@ namespace boost { namespace fusion template struct as_deque { - typedef typename detail::as_deque::value> gen; + typedef typename + detail::as_deque::value> + gen; typedef typename gen:: template apply::type>::type type; diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 85b64b4a..215981e4 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -8,19 +8,7 @@ #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 /////////////////////////////////////////////////////////////////////////////// // With no decltype and variadics, we will use the C++03 version @@ -30,9 +18,9 @@ || defined(BOOST_NO_RVALUE_REFERENCES)) # include #else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") -#endif +# if !defined(BOOST_FUSION_HAS_CPP11_DEQUE) +# define BOOST_FUSION_HAS_CPP11_DEQUE +# endif /////////////////////////////////////////////////////////////////////////////// // C++11 interface diff --git a/include/boost/fusion/container/deque/deque_fwd.hpp b/include/boost/fusion/container/deque/deque_fwd.hpp index 858b55bd..19ca8f8f 100644 --- a/include/boost/fusion/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/container/deque/deque_fwd.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2007 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -8,8 +8,7 @@ #if !defined(FUSION_DEQUE_FORWARD_02092007_0749) #define FUSION_DEQUE_FORWARD_02092007_0749 -#include -#include +#include /////////////////////////////////////////////////////////////////////////////// // With no decltype and variadics, we will use the C++03 version @@ -19,9 +18,9 @@ || defined(BOOST_NO_RVALUE_REFERENCES)) # include #else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp") -#endif +# if !defined(BOOST_FUSION_HAS_CPP11_DEQUE) +# define BOOST_FUSION_HAS_CPP11_DEQUE +# endif /////////////////////////////////////////////////////////////////////////////// // C++11 interface diff --git a/include/boost/fusion/container/deque/deque_iterator.hpp b/include/boost/fusion/container/deque/deque_iterator.hpp index 3cb02f08..d3e5f31e 100644 --- a/include/boost/fusion/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/container/deque/deque_iterator.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_DEQUE_ITERATOR_26112006_2154) @@ -12,13 +12,13 @@ #include #include #include -#include +#include namespace boost { namespace fusion { struct bidirectional_traversal_tag; - template + template struct deque_iterator : iterator_facade, bidirectional_traversal_tag> { @@ -84,7 +84,7 @@ namespace boost { namespace fusion { typedef typename mpl::minus< typename I2::index, typename I1::index - >::type + >::type type; static type diff --git a/include/boost/fusion/container/deque/detail/as_deque.hpp b/include/boost/fusion/container/deque/detail/as_deque.hpp index bc9ae846..906f4fb6 100644 --- a/include/boost/fusion/container/deque/detail/as_deque.hpp +++ b/include/boost/fusion/container/deque/detail/as_deque.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/include/boost/fusion/container/deque/detail/at_impl.hpp b/include/boost/fusion/container/deque/detail/at_impl.hpp index dc09d31b..0684dcf1 100644 --- a/include/boost/fusion/container/deque/detail/at_impl.hpp +++ b/include/boost/fusion/container/deque/detail/at_impl.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_DEQUE_AT_IMPL_09122006_2017) @@ -19,15 +19,15 @@ #include #include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct deque_tag; - namespace extension + namespace extension { template struct at_impl; - + template<> struct at_impl { @@ -37,15 +37,21 @@ namespace boost { namespace fusion { 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 int const offset = next_down::value + 1; + typedef mpl::int_<(N::value + offset)> 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) { diff --git a/include/boost/fusion/container/deque/detail/begin_impl.hpp b/include/boost/fusion/container/deque/detail/begin_impl.hpp index 8c02b9ac..1447868a 100644 --- a/include/boost/fusion/container/deque/detail/begin_impl.hpp +++ b/include/boost/fusion/container/deque/detail/begin_impl.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_DEQUE_BEGIN_IMPL_09122006_2034) @@ -13,27 +13,29 @@ #include #include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct deque_tag; - namespace extension + 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; - + typedef typename + mpl::if_c< + (Sequence::next_down::value == Sequence::next_up::value) + , deque_iterator + , deque_iterator + >::type + type; + static type call(Sequence& seq) { return type(seq); diff --git a/include/boost/fusion/container/deque/detail/convert_impl.hpp b/include/boost/fusion/container/deque/detail/convert_impl.hpp index 9693d95d..1401ef1a 100644 --- a/include/boost/fusion/container/deque/detail/convert_impl.hpp +++ b/include/boost/fusion/container/deque/detail/convert_impl.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -28,7 +28,7 @@ namespace boost { namespace fusion template struct apply { - typedef typename detail::as_deque::value> gen; + typedef detail::as_deque::value> gen; typedef typename gen:: template apply::type>::type type; diff --git a/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp b/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp index 38d5e643..b76916eb 100644 --- a/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp +++ b/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp @@ -1,14 +1,18 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_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 +#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + #include #include #include diff --git a/include/boost/fusion/container/deque/detail/deque_initial_size.hpp b/include/boost/fusion/container/deque/detail/deque_initial_size.hpp index 738221ce..edb3c176 100644 --- a/include/boost/fusion/container/deque/detail/deque_initial_size.hpp +++ b/include/boost/fusion/container/deque/detail/deque_initial_size.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -8,6 +8,10 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139) #define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139 +#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + #include #include #include diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp index d96f16a0..f95960bc 100644 --- a/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp +++ b/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -9,6 +9,10 @@ #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 +#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + #include #include #include diff --git a/include/boost/fusion/container/deque/detail/end_impl.hpp b/include/boost/fusion/container/deque/detail/end_impl.hpp index 0727e00f..8037689a 100644 --- a/include/boost/fusion/container/deque/detail/end_impl.hpp +++ b/include/boost/fusion/container/deque/detail/end_impl.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_DEQUE_END_IMPL_09122006_2034) @@ -13,27 +13,29 @@ #include #include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct deque_tag; - namespace extension + 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; - + typedef typename + mpl::if_c< + (Sequence::next_down::value == Sequence::next_up::value) + , deque_iterator + , deque_iterator + >::type + type; + static type call(Sequence& seq) { return type(seq); diff --git a/include/boost/fusion/container/deque/detail/is_sequence_impl.hpp b/include/boost/fusion/container/deque/detail/is_sequence_impl.hpp index ff88ed6f..b4718be4 100644 --- a/include/boost/fusion/container/deque/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/container/deque/detail/is_sequence_impl.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2010 Christopher Schmidt - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ @@ -14,18 +14,16 @@ namespace boost { namespace fusion { struct deque_tag; - namespace extension + namespace extension { template struct is_sequence_impl; - + template<> struct is_sequence_impl { template - struct apply - : mpl::true_ - {}; + struct apply : mpl::true_ {}; }; } }} diff --git a/include/boost/fusion/container/deque/detail/keyed_element.hpp b/include/boost/fusion/container/deque/detail/keyed_element.hpp index ff6f19a7..d1b219de 100644 --- a/include/boost/fusion/container/deque/detail/keyed_element.hpp +++ b/include/boost/fusion/container/deque/detail/keyed_element.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330) @@ -12,34 +12,34 @@ #include #include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct fusion_sequence_tag; +}} -namespace detail { - +namespace boost { namespace fusion { namespace detail +{ struct nil_keyed_element { typedef fusion_sequence_tag tag; void get(); template - static nil_keyed_element + static nil_keyed_element from_iterator(It const&) { return nil_keyed_element(); } }; - template - struct keyed_element - : Rest + template + struct keyed_element : Rest { typedef Rest base; typedef fusion_sequence_tag tag; using Rest::get; - template + template static keyed_element from_iterator(It const& it) { @@ -47,9 +47,9 @@ namespace detail { *it, base::from_iterator(fusion::next(it))); } - template + template keyed_element(keyed_element const& rhs) - : Rest(rhs.get_base()), value_(rhs.value_) + : Rest(rhs.get_base()), value_(rhs.value_) {} Rest const get_base() const @@ -95,7 +95,7 @@ namespace detail { template struct keyed_element_value_at - : keyed_element_value_at + : keyed_element_value_at {}; template @@ -103,7 +103,6 @@ namespace detail { { typedef Value type; }; - }}} #endif diff --git a/include/boost/fusion/container/deque/detail/value_at_impl.hpp b/include/boost/fusion/container/deque/detail/value_at_impl.hpp index 64dbe5e1..cba31a3e 100644 --- a/include/boost/fusion/container/deque/detail/value_at_impl.hpp +++ b/include/boost/fusion/container/deque/detail/value_at_impl.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 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_DEQUE_VALUE_AT_IMPL_08122006_0756) @@ -13,15 +13,15 @@ #include #include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct deque_tag; - namespace extension + namespace extension { template struct value_at_impl; - + template<> struct value_at_impl { @@ -31,10 +31,12 @@ namespace boost { namespace fusion { 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; + + static int const offset = next_down::value + 1; + typedef mpl::int_<(N::value + offset)> adjusted_index; + typedef typename + detail::keyed_element_value_at::type + type; }; }; } diff --git a/include/boost/fusion/container/deque/front_extended_deque.hpp b/include/boost/fusion/container/deque/front_extended_deque.hpp index 7a7f9cee..2f3654ed 100644 --- a/include/boost/fusion/container/deque/front_extended_deque.hpp +++ b/include/boost/fusion/container/deque/front_extended_deque.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -8,32 +8,39 @@ #if !defined(BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209 -#include #include -#include -#include -#include - -#include -#include - #include +#include +#include namespace boost { namespace fusion { - template + template struct front_extended_deque - : detail::keyed_element, - sequence_base > + : detail::keyed_element + , sequence_base > { typedef detail::keyed_element base; - typedef mpl::int_ >::value> next_down; + typedef mpl::int_<(Deque::next_down::value - 1)> next_down; typedef typename Deque::next_up next_up; - typedef mpl::plus::type, mpl::int_<1> > size; + typedef mpl::int_<(result_of::size::value + 1)> size; - front_extended_deque(Deque const& deque, typename add_reference::type>::type t) - : base(t, deque) + template + front_extended_deque(Deque const& deque, Arg const& val) + : base(val, deque) {} + +#if defined(BOOST_NO_RVALUE_REFERENCES) + template + front_extended_deque(Deque const& deque, Arg& val) + : base(val, deque) + {} +#else + template + front_extended_deque(Deque const& deque, Arg&& val) + : base(std::forward(val), deque) + {} +#endif }; }} diff --git a/include/boost/fusion/container/deque/limits.hpp b/include/boost/fusion/container/deque/limits.hpp index 891d41ed..2a7d219d 100644 --- a/include/boost/fusion/container/deque/limits.hpp +++ b/include/boost/fusion/container/deque/limits.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -8,6 +8,10 @@ #if !defined(BOOST_FUSION_DEQUE_LIMITS_26112006_1737) #define BOOST_FUSION_DEQUE_LIMITS_26112006_1737 +#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + #include #if !defined(FUSION_MAX_DEQUE_SIZE) diff --git a/include/boost/fusion/container/map/detail/at_impl.hpp b/include/boost/fusion/container/map/detail/at_impl.hpp index bc51e815..025c1724 100644 --- a/include/boost/fusion/container/map/detail/at_impl.hpp +++ b/include/boost/fusion/container/map/detail/at_impl.hpp @@ -41,7 +41,7 @@ namespace boost { namespace fusion }; template - struct apply + struct apply { typedef typename mpl::at::type diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp index d6258f60..8ef9947d 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp @@ -34,6 +34,15 @@ namespace boost { namespace fusion return vector_data1(*i0); } + template + static vector_data1 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + + return vector_data1(*i0); + } T0 m0; }; template @@ -64,6 +73,12 @@ namespace boost { namespace fusion , typename boost::disable_if >::type* = 0 ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector1( + Sequence& seq + , typename boost::disable_if >::type* = 0 + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector1& operator=(vector1 const& vec) @@ -121,6 +136,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); return vector_data2(*i0 , *i1); } + template + static vector_data2 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); + return vector_data2(*i0 , *i1); + } T0 m0; T1 m1; }; template @@ -149,6 +173,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector2( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector2& operator=(vector2 const& vec) @@ -206,6 +235,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); return vector_data3(*i0 , *i1 , *i2); } + template + static vector_data3 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); + return vector_data3(*i0 , *i1 , *i2); + } T0 m0; T1 m1; T2 m2; }; template @@ -234,6 +272,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector3( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector3& operator=(vector3 const& vec) @@ -291,6 +334,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); return vector_data4(*i0 , *i1 , *i2 , *i3); } + template + static vector_data4 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); + return vector_data4(*i0 , *i1 , *i2 , *i3); + } T0 m0; T1 m1; T2 m2; T3 m3; }; template @@ -319,6 +371,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector4( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector4& operator=(vector4 const& vec) @@ -376,6 +433,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); return vector_data5(*i0 , *i1 , *i2 , *i3 , *i4); } + template + static vector_data5 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); + return vector_data5(*i0 , *i1 , *i2 , *i3 , *i4); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; }; template @@ -404,6 +470,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector5( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector5& operator=(vector5 const& vec) @@ -461,6 +532,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); return vector_data6(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); } + template + static vector_data6 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); + return vector_data6(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; }; template @@ -489,6 +569,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector6( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector6& operator=(vector6 const& vec) @@ -546,6 +631,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); return vector_data7(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); } + template + static vector_data7 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); + return vector_data7(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; }; template @@ -574,6 +668,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector7( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector7& operator=(vector7 const& vec) @@ -631,6 +730,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); return vector_data8(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); } + template + static vector_data8 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); + return vector_data8(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; }; template @@ -659,6 +767,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector8( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector8& operator=(vector8 const& vec) @@ -716,6 +829,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); return vector_data9(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); } + template + static vector_data9 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); + return vector_data9(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; }; template @@ -744,6 +866,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector9( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector9& operator=(vector9 const& vec) @@ -801,6 +928,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); return vector_data10(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); } + template + static vector_data10 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); + return vector_data10(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; }; template @@ -829,6 +965,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector10( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector10& operator=(vector10 const& vec) diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp index a409b2e7..151acbbd 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp @@ -37,6 +37,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); return vector_data11(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10); } + template + static vector_data11 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); + return vector_data11(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; }; template @@ -65,6 +74,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector11( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector11& operator=(vector11 const& vec) @@ -122,6 +136,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); return vector_data12(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11); } + template + static vector_data12 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); + return vector_data12(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; }; template @@ -150,6 +173,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector12( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector12& operator=(vector12 const& vec) @@ -207,6 +235,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); return vector_data13(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12); } + template + static vector_data13 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); + return vector_data13(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; }; template @@ -235,6 +272,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector13( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector13& operator=(vector13 const& vec) @@ -292,6 +334,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); return vector_data14(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13); } + template + static vector_data14 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); + return vector_data14(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; }; template @@ -320,6 +371,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector14( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector14& operator=(vector14 const& vec) @@ -377,6 +433,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); return vector_data15(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14); } + template + static vector_data15 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); + return vector_data15(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; }; template @@ -405,6 +470,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector15( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector15& operator=(vector15 const& vec) @@ -462,6 +532,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); return vector_data16(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15); } + template + static vector_data16 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); + return vector_data16(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; }; template @@ -490,6 +569,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector16( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector16& operator=(vector16 const& vec) @@ -547,6 +631,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); return vector_data17(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16); } + template + static vector_data17 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); + return vector_data17(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; }; template @@ -575,6 +668,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector17( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector17& operator=(vector17 const& vec) @@ -632,6 +730,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); return vector_data18(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17); } + template + static vector_data18 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); + return vector_data18(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; }; template @@ -660,6 +767,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector18( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector18& operator=(vector18 const& vec) @@ -717,6 +829,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); return vector_data19(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18); } + template + static vector_data19 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); + return vector_data19(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; }; template @@ -745,6 +866,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector19( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector19& operator=(vector19 const& vec) @@ -802,6 +928,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); return vector_data20(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); } + template + static vector_data20 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); + return vector_data20(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; }; template @@ -830,6 +965,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector20( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector20& operator=(vector20 const& vec) diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp index 032ff9d2..3810091b 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp @@ -37,6 +37,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); return vector_data21(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20); } + template + static vector_data21 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); + return vector_data21(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; }; template @@ -65,6 +74,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector21( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector21& operator=(vector21 const& vec) @@ -122,6 +136,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); return vector_data22(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21); } + template + static vector_data22 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); + return vector_data22(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; }; template @@ -150,6 +173,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector22( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector22& operator=(vector22 const& vec) @@ -207,6 +235,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); return vector_data23(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22); } + template + static vector_data23 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); + return vector_data23(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; }; template @@ -235,6 +272,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector23( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector23& operator=(vector23 const& vec) @@ -292,6 +334,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); return vector_data24(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23); } + template + static vector_data24 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); + return vector_data24(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; }; template @@ -320,6 +371,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector24( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector24& operator=(vector24 const& vec) @@ -377,6 +433,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); return vector_data25(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24); } + template + static vector_data25 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); + return vector_data25(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; }; template @@ -405,6 +470,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector25( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector25& operator=(vector25 const& vec) @@ -462,6 +532,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); return vector_data26(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25); } + template + static vector_data26 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); + return vector_data26(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; }; template @@ -490,6 +569,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector26( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector26& operator=(vector26 const& vec) @@ -547,6 +631,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); return vector_data27(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26); } + template + static vector_data27 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); + return vector_data27(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; }; template @@ -575,6 +668,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector27( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector27& operator=(vector27 const& vec) @@ -632,6 +730,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); return vector_data28(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27); } + template + static vector_data28 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); + return vector_data28(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; }; template @@ -660,6 +767,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector28( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector28& operator=(vector28 const& vec) @@ -717,6 +829,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); return vector_data29(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28); } + template + static vector_data29 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); + return vector_data29(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; }; template @@ -745,6 +866,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector29( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector29& operator=(vector29 const& vec) @@ -802,6 +928,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); return vector_data30(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); } + template + static vector_data30 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); + return vector_data30(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; }; template @@ -830,6 +965,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector30( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector30& operator=(vector30 const& vec) diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp index 1b5fa58d..07fac8dc 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp @@ -37,6 +37,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); return vector_data31(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30); } + template + static vector_data31 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); + return vector_data31(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; }; template @@ -65,6 +74,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector31( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector31& operator=(vector31 const& vec) @@ -122,6 +136,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); return vector_data32(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31); } + template + static vector_data32 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); + return vector_data32(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; }; template @@ -150,6 +173,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector32( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector32& operator=(vector32 const& vec) @@ -207,6 +235,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); return vector_data33(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32); } + template + static vector_data33 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); + return vector_data33(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; }; template @@ -235,6 +272,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector33( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector33& operator=(vector33 const& vec) @@ -292,6 +334,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); return vector_data34(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33); } + template + static vector_data34 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); + return vector_data34(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; }; template @@ -320,6 +371,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector34( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector34& operator=(vector34 const& vec) @@ -377,6 +433,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); return vector_data35(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34); } + template + static vector_data35 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); + return vector_data35(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; }; template @@ -405,6 +470,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector35( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector35& operator=(vector35 const& vec) @@ -462,6 +532,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); return vector_data36(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35); } + template + static vector_data36 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); + return vector_data36(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; }; template @@ -490,6 +569,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector36( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector36& operator=(vector36 const& vec) @@ -547,6 +631,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); return vector_data37(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36); } + template + static vector_data37 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); + return vector_data37(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; }; template @@ -575,6 +668,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector37( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector37& operator=(vector37 const& vec) @@ -632,6 +730,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); return vector_data38(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37); } + template + static vector_data38 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); + return vector_data38(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; }; template @@ -660,6 +767,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector38( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector38& operator=(vector38 const& vec) @@ -717,6 +829,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); return vector_data39(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38); } + template + static vector_data39 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); + return vector_data39(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; }; template @@ -745,6 +866,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector39( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector39& operator=(vector39 const& vec) @@ -802,6 +928,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); return vector_data40(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); } + template + static vector_data40 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); + return vector_data40(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; }; template @@ -830,6 +965,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector40( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector40& operator=(vector40 const& vec) diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp b/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp index ba6c1771..7ef9402e 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp @@ -37,6 +37,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); return vector_data41(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40); } + template + static vector_data41 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); + return vector_data41(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; }; template @@ -65,6 +74,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector41( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector41& operator=(vector41 const& vec) @@ -122,6 +136,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); return vector_data42(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41); } + template + static vector_data42 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); + return vector_data42(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; }; template @@ -150,6 +173,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector42( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector42& operator=(vector42 const& vec) @@ -207,6 +235,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); return vector_data43(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42); } + template + static vector_data43 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); + return vector_data43(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; }; template @@ -235,6 +272,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector43( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector43& operator=(vector43 const& vec) @@ -292,6 +334,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); return vector_data44(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43); } + template + static vector_data44 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); + return vector_data44(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; }; template @@ -320,6 +371,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector44( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector44& operator=(vector44 const& vec) @@ -377,6 +433,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); return vector_data45(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44); } + template + static vector_data45 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); + return vector_data45(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; }; template @@ -405,6 +470,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector45( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector45& operator=(vector45 const& vec) @@ -462,6 +532,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); return vector_data46(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45); } + template + static vector_data46 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); + return vector_data46(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; }; template @@ -490,6 +569,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector46( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector46& operator=(vector46 const& vec) @@ -547,6 +631,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); return vector_data47(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46); } + template + static vector_data47 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); + return vector_data47(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46; }; template @@ -575,6 +668,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector47( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector47& operator=(vector47 const& vec) @@ -632,6 +730,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); return vector_data48(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47); } + template + static vector_data48 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); + return vector_data48(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46; T47 m47; }; template @@ -660,6 +767,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector48( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector48& operator=(vector48 const& vec) @@ -717,6 +829,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47); return vector_data49(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48); } + template + static vector_data49 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47); + return vector_data49(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46; T47 m47; T48 m48; }; template @@ -745,6 +866,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector49( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector49& operator=(vector49 const& vec) @@ -802,6 +928,15 @@ namespace boost { namespace fusion typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47); typedef typename result_of::next< I48>::type I49; I49 i49 = fusion::next(i48); return vector_data50(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49); } + template + static vector_data50 + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47); typedef typename result_of::next< I48>::type I49; I49 i49 = fusion::next(i48); + return vector_data50(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49); + } T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46; T47 m47; T48 m48; T49 m49; }; template @@ -830,6 +965,11 @@ namespace boost { namespace fusion Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} + template + vector50( + Sequence& seq + ) + : base_type(base_type::init_from_sequence(seq)) {} template vector50& operator=(vector50 const& vec) diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp index 431774b3..4e249c7f 100644 --- a/include/boost/fusion/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n.hpp @@ -68,6 +68,16 @@ return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); } + template + static BOOST_PP_CAT(vector_data, N) + init_from_sequence(Sequence& 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, _) }; @@ -109,6 +119,15 @@ ) : base_type(base_type::init_from_sequence(seq)) {} + template + BOOST_PP_CAT(vector, N)( + Sequence& seq +#if (N == 1) + , typename boost::disable_if >::type* /*dummy*/ = 0 +#endif + ) + : base_type(base_type::init_from_sequence(seq)) {} + template BOOST_PP_CAT(vector, N)& operator=(BOOST_PP_CAT(vector, N) const& vec) diff --git a/include/boost/fusion/functional/adapter/unfused.hpp b/include/boost/fusion/functional/adapter/unfused.hpp old mode 100755 new mode 100644 index b0d02bc4..facd5c54 --- a/include/boost/fusion/functional/adapter/unfused.hpp +++ b/include/boost/fusion/functional/adapter/unfused.hpp @@ -100,6 +100,7 @@ namespace boost { namespace fusion namespace boost { +#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE) template struct result_of< boost::fusion::unfused const () > { @@ -110,6 +111,17 @@ namespace boost { typedef typename boost::fusion::unfused::call_0_result type; }; +#endif + template + struct tr1_result_of< boost::fusion::unfused const () > + { + typedef typename boost::fusion::unfused::call_const_0_result type; + }; + template + struct tr1_result_of< boost::fusion::unfused() > + { + typedef typename boost::fusion::unfused::call_0_result type; + }; } #define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_HPP_INCLUDED diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 0f19f28f..923c6876 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -80,6 +80,7 @@ namespace boost { namespace fusion namespace boost { +#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE) template struct result_of< boost::fusion::unfused_typed const () > : boost::fusion::unfused_typed::template result< @@ -90,6 +91,17 @@ namespace boost : boost::fusion::unfused_typed::template result< boost::fusion::unfused_typed () > { }; +#endif + template + struct tr1_result_of< boost::fusion::unfused_typed const () > + : boost::fusion::unfused_typed::template result< + boost::fusion::unfused_typed const () > + { }; + template + struct tr1_result_of< boost::fusion::unfused_typed() > + : boost::fusion::unfused_typed::template result< + boost::fusion::unfused_typed () > + { }; } diff --git a/include/boost/fusion/include/define_struct_inline.hpp b/include/boost/fusion/include/define_struct_inline.hpp new file mode 100644 index 00000000..141ad4e2 --- /dev/null +++ b/include/boost/fusion/include/define_struct_inline.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2012 Nathan Ridge + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_DEFINE_STRUCT_INLINE_HPP +#define BOOST_FUSION_INCLUDE_DEFINE_STRUCT_INLINE_HPP + +#include + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp index 3e15e63a..56cfe1b2 100644 --- a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -32,7 +33,7 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a == *b + return extension::as_const(*a) == extension::as_const(*b) && call(fusion::next(a), fusion::next(b)); } diff --git a/include/boost/fusion/sequence/comparison/detail/greater.hpp b/include/boost/fusion/sequence/comparison/detail/greater.hpp index b4c4b087..e6128776 100644 --- a/include/boost/fusion/sequence/comparison/detail/greater.hpp +++ b/include/boost/fusion/sequence/comparison/detail/greater.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -32,8 +33,9 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a > *b || - (!(*b > *a) && call(fusion::next(a), fusion::next(b))); + return extension::as_const(*a) > extension::as_const(*b) || + (!(extension::as_const(*b) > extension::as_const(*a)) && + call(fusion::next(a), fusion::next(b))); } template diff --git a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp index f3eccd5d..6d91e27b 100644 --- a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -32,8 +33,9 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a >= *b - && (!(*b >= *a) || call(fusion::next(a), fusion::next(b))); + return extension::as_const(*a) >= extension::as_const(*b) + && (!(extension::as_const(*b) >= extension::as_const(*a)) || + call(fusion::next(a), fusion::next(b))); } template diff --git a/include/boost/fusion/sequence/comparison/detail/less.hpp b/include/boost/fusion/sequence/comparison/detail/less.hpp index 4957d7bf..1342bb14 100644 --- a/include/boost/fusion/sequence/comparison/detail/less.hpp +++ b/include/boost/fusion/sequence/comparison/detail/less.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -32,8 +33,9 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a < *b || - (!(*b < *a) && call(fusion::next(a), fusion::next(b))); + return extension::as_const(*a) < extension::as_const(*b) || + (!(extension::as_const(*b) < extension::as_const(*a)) && + call(fusion::next(a), fusion::next(b))); } template diff --git a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp index 08fe9ec3..5683849a 100644 --- a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -32,8 +33,9 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a <= *b - && (!(*b <= *a) || call(fusion::next(a), fusion::next(b))); + return extension::as_const(*a) <= extension::as_const(*b) + && (!(extension::as_const(*b) <= extension::as_const(*a)) || + call(fusion::next(a), fusion::next(b))); } template 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 ac54dfb7..77c23508 100644 --- a/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -32,7 +33,7 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a != *b + return extension::as_const(*a) != extension::as_const(*b) || call(fusion::next(a), fusion::next(b)); } diff --git a/include/boost/fusion/support.hpp b/include/boost/fusion/support.hpp index 765b777d..50bf924f 100644 --- a/include/boost/fusion/support.hpp +++ b/include/boost/fusion/support.hpp @@ -19,5 +19,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/support/as_const.hpp b/include/boost/fusion/support/as_const.hpp new file mode 100644 index 00000000..bb2a96a6 --- /dev/null +++ b/include/boost/fusion/support/as_const.hpp @@ -0,0 +1,26 @@ +/*============================================================================= + Copyright (c) 2012 Nathan Ridge + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#ifndef BOOST_FUSION_SUPPORT_AS_CONST_HPP +#define BOOST_FUSION_SUPPORT_AS_CONST_HPP + +namespace boost { namespace fusion { namespace extension +{ + // A customization point that allows certain wrappers around + // Fusion sequence elements (e.g. adt_attribute_proxy) to be + // unwrapped in contexts where the element only needs to be + // read. The library wraps accesses to Fusion elements in + // such contexts with calls to this function. Users can + // specialize this function for their own wrappers. + template + const T& as_const(const T& obj) + { + return obj; + } + +}}} + +#endif diff --git a/include/boost/fusion/support/is_segmented.hpp b/include/boost/fusion/support/is_segmented.hpp index ba571dc5..6e62eac4 100644 --- a/include/boost/fusion/support/is_segmented.hpp +++ b/include/boost/fusion/support/is_segmented.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_IS_SEGMENTED_03202006_0015) #define FUSION_IS_SEGMENTED_03202006_0015 +#include #include namespace boost { namespace fusion @@ -41,8 +42,10 @@ namespace boost { namespace fusion { template struct is_segmented - : extension::is_segmented_impl::type>:: - template apply + : mpl::bool_< + (bool)extension::is_segmented_impl::type>:: + template apply::type::value + > { }; } diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index 2f0ee433..184bbbb6 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_sequence.hpp @@ -59,9 +59,11 @@ namespace boost { namespace fusion { template struct is_sequence - : extension::is_sequence_impl< + : mpl::bool_< + (bool)extension::is_sequence_impl< typename fusion::detail::tag_of::type - >::template apply + >::template apply::type::value + > {}; template diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index dbcc93a9..4ec9e065 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_IS_VIEW_03202006_0015) #define FUSION_IS_VIEW_03202006_0015 +#include #include #include @@ -54,8 +55,10 @@ namespace boost { namespace fusion { template struct is_view : - extension::is_view_impl::type>:: - template apply::type + mpl::bool_< + (bool)extension::is_view_impl::type>:: + template apply::type::value + > {}; } }} diff --git a/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp b/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp index 489d9553..9bf459c4 100644 --- a/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include // Invariants: // - Each segmented iterator has a stack @@ -45,11 +47,19 @@ namespace boost { namespace fusion } template - typename result_of::push_back::type + typename + lazy_enable_if< + traits::is_sequence + , result_of::push_back + >::type push_back(Sequence const& seq, T const& x); template - typename result_of::push_front::type + typename + lazy_enable_if< + traits::is_sequence + , result_of::push_front + >::type push_front(Sequence const& seq, T const& x); }} From 9cceb79cf867df04b9b4d8cf5c1819b3ae2b0b0a Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 11 Aug 2012 02:36:08 +0000 Subject: [PATCH 64/82] update from trunk fixing http://boost.2283326.n4.nabble.com/fusion-g-4-6-deque-and-c-0x-compile-error-td4632499.html [SVN r79958] --- doc/adapted.qbk | 96 ++++++++++++++++- .../struct/detail/define_struct_inline.hpp | 45 +++++--- .../deque/detail/deque_keyed_values.hpp | 102 ------------------ ...epetetive_view.hpp => repetitive_view.hpp} | 0 .../tuple/detail/preprocessed/make_tuple.hpp | 2 +- .../tuple/detail/preprocessed/tuple_fwd.hpp | 2 +- .../tuple/detail/preprocessed/tuple_tie.hpp | 2 +- test/sequence/adapt_adt.cpp | 38 +++++++ test/sequence/adapt_tpl_adt.cpp | 15 +++ 9 files changed, 182 insertions(+), 120 deletions(-) delete mode 100644 include/boost/fusion/container/deque/detail/deque_keyed_values.hpp rename include/boost/fusion/include/{repetetive_view.hpp => repetitive_view.hpp} (100%) diff --git a/doc/adapted.qbk b/doc/adapted.qbk index fd8237cd..93aa1703 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -658,7 +658,7 @@ __random_access_sequence__. [heading Synopsis] - BOOST_FUSION_ADAPT_ADT( + BOOST_FUSION_ADAPT_TPL_ADT( (template_param0)(template_param1)..., (type_name) (specialization_param0)(specialization_param1)..., (attribute_type0, attribute_const_type0, get_expr0, set_expr0) @@ -1115,6 +1115,100 @@ defined in __random_access_sequence__. [endsect] +[section:define_struct_inline BOOST_FUSION_DEFINE_STRUCT_INLINE] + +[heading Description] + +BOOST_FUSION_DEFINE_STRUCT_INLINE is a macro that can be used to generate all +the necessary boilerplate to define and adapt an arbitrary struct as a model of +__random_access_sequence__. Unlike BOOST_FUSION_DEFINE_STRUCT, it can be used +at class or namespace scope. + +[heading Synopsis] + + BOOST_FUSION_DEFINE_STRUCT_INLINE( + struct_name, + (member_type0, member_name0) + (member_type1, member_name1) + ... + ) + +[heading Expression Semantics] + +The semantics of BOOST_FUSION_DEFINE_STRUCT_INLINE are identical to those of +BOOST_FUSION_DEFINE_STRUCT, with two differences: + +# BOOST_FUSION_DEFINE_STRUCT_INLINE can be used at class or namespace scope, and + thus does not take a namespace list parameter. +# The structure generated by BOOST_FUSION_DEFINE_STRUCT_INLINE has a base class, + and is thus not POD in C++03. + +[heading Header] + + #include + #include + +[heading Example] + + // enclosing::employee is a Fusion sequence + class enclosing + { + BOOST_FUSION_DEFINE_STRUCT_INLINE( + employee, + (std::string, name) + (int, age)) + }; + + +[endsect] + +[section:define_tpl_struct_inline BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE] + +[heading Description] + +BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE is a macro that can be used to generate +all the necessary boilerplate to define and adapt an arbitrary template struct +as a model of __random_access_sequence__. Unlike BOOST_FUSION_DEFINE_TPL_STRUCT, +it can be used at class or namespace scope. + +[heading Synopsis] + + BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE( + (template_param0)(template_param1)..., + struct_name, + (member_type0, member_name0) + (member_type1, member_name1) + ... + ) + +[heading Expression Semantics] + +The semantics of BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE are identical to those of +BOOST_FUSION_DEFINE_TPL_STRUCT, with two differences: + +# BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE can be used at class or namespace scope, + and thus does not take a namespace list parameter. +# The structure generated by BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE has a base + class, and is thus not POD in C++03. + +[heading Header] + + #include + #include + +[heading Example] + + // Any instantiated enclosing::employee is a Fusion sequence + class enclosing + { + BOOST_FUSION_DEFINE_TPL_STRUCT( + (Name)(Age), employee, + (Name, name) + (Age, age)) + }; + +[endsect] + [section:define_assoc_struct BOOST_FUSION_DEFINE_ASSOC_STRUCT] [heading Description] diff --git a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp index 84eccca6..a7961ec3 100644 --- a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp +++ b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp @@ -29,6 +29,27 @@ #define BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY(R, DATA, N, ATTRIBUTE) \ BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)() +#define BOOST_FUSION_MAKE_DEFAULT_INIT_LIST(ATTRIBUTES_SEQ) \ + : BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY, \ + ~, \ + ATTRIBUTES_SEQ) \ + +#define BOOST_FUSION_IGNORE_1(ARG1) +#define BOOST_FUSION_IGNORE_2(ARG1, ARG2) + +#define BOOST_FUSION_MAKE_COPY_CONSTRUCTOR(NAME, ATTRIBUTES_SEQ) \ + NAME(BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_CONST_REF_PARAM, \ + ~, \ + ATTRIBUTES_SEQ)) \ + : BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_INIT_LIST_ENTRY, \ + ~, \ + ATTRIBUTES_SEQ) \ + { \ + } \ + #define BOOST_FUSION_MAKE_CONST_REF_PARAM(R, DATA, N, ATTRIBUTE) \ BOOST_PP_COMMA_IF(N) \ BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) const& \ @@ -162,23 +183,19 @@ NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \ \ NAME() \ - : BOOST_PP_SEQ_FOR_EACH_I( \ - BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY, \ - ~, \ - ATTRIBUTES_SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \ + BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \ + BOOST_FUSION_IGNORE_1) \ + (ATTRIBUTES_SEQ) \ { \ } \ \ - NAME(BOOST_PP_SEQ_FOR_EACH_I( \ - BOOST_FUSION_MAKE_CONST_REF_PARAM, \ - ~, \ - ATTRIBUTES_SEQ)) \ - : BOOST_PP_SEQ_FOR_EACH_I( \ - BOOST_FUSION_MAKE_INIT_LIST_ENTRY, \ - ~, \ - ATTRIBUTES_SEQ) \ - { \ - } \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \ + BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \ + BOOST_FUSION_IGNORE_2) \ + (NAME, ATTRIBUTES_SEQ) \ \ template \ NAME(const boost_fusion_uglified_Seq& rhs) \ diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp deleted file mode 100644 index 898bc46b..00000000 --- a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2005-2011 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_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_; -}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_keyed_values" FUSION_MAX_DEQUE_SIZE_STR ".hpp") -#endif - -/*============================================================================= - Copyright (c) 2001-2011 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion { 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)> - {}; - -}}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#undef FUSION_VOID - -#endif diff --git a/include/boost/fusion/include/repetetive_view.hpp b/include/boost/fusion/include/repetitive_view.hpp similarity index 100% rename from include/boost/fusion/include/repetetive_view.hpp rename to include/boost/fusion/include/repetitive_view.hpp diff --git a/include/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp b/include/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp index 53306dab..6abb0336 100644 --- a/include/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp +++ b/include/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp @@ -18,4 +18,4 @@ #include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" -#endif \ No newline at end of file +#endif diff --git a/include/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp b/include/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp index ec01d4b7..234936c5 100644 --- a/include/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp +++ b/include/boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp @@ -18,4 +18,4 @@ #include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" -#endif \ No newline at end of file +#endif diff --git a/include/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp b/include/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp index 02fd8f7f..5898c6b9 100644 --- a/include/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp +++ b/include/boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp @@ -18,4 +18,4 @@ #include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" -#endif \ No newline at end of file +#endif diff --git a/test/sequence/adapt_adt.cpp b/test/sequence/adapt_adt.cpp index 73868367..f8762b03 100644 --- a/test/sequence/adapt_adt.cpp +++ b/test/sequence/adapt_adt.cpp @@ -71,6 +71,24 @@ namespace ns int y; }; #endif + + // A sequence that has data members defined in an unrelated namespace + // (std, in this case). This allows testing ADL issues. + class name + { + public: + name() {} + name(const std::string& last, const std::string& first) + : last(last), first(first) {} + + const std::string& get_last() const { return last; } + const std::string& get_first() const { return first; } + void set_last(const std::string& last_) { last = last_; } + void set_first(const std::string& first_) { first = first_; } + private: + std::string last; + std::string first; + }; } BOOST_FUSION_ADAPT_ADT( @@ -87,6 +105,12 @@ BOOST_FUSION_ADAPT_ADT( ) #endif +BOOST_FUSION_ADAPT_ADT( + ns::name, + (const std::string&, const std::string&, obj.get_last(), obj.set_last(val)) + (const std::string&, const std::string&, obj.get_first(), obj.set_first(val)) +) + int main() { @@ -131,6 +155,20 @@ main() BOOST_TEST(v3 >= v2); } + { + fusion::vector v1("Lincoln", "Abraham"); + ns::name v2("Roosevelt", "Franklin"); + ns::name v3("Roosevelt", "Theodore"); + 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); diff --git a/test/sequence/adapt_tpl_adt.cpp b/test/sequence/adapt_tpl_adt.cpp index 2f0d4c6b..aeb0f721 100644 --- a/test/sequence/adapt_tpl_adt.cpp +++ b/test/sequence/adapt_tpl_adt.cpp @@ -67,6 +67,7 @@ main() using namespace boost::fusion; typedef ns::point point; + typedef ns::point name; std::cout << tuple_open('['); std::cout << tuple_close(']'); @@ -106,6 +107,20 @@ main() BOOST_TEST(v3 >= v2); } + { + boost::fusion::vector v1("Lincoln", "Abraham"); + name v2("Roosevelt", "Franklin"); + name v3("Roosevelt", "Theodore"); + 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 point to vector point p(5, 3); From 940c594d3e70b3e8319d5bbcd9d51a1d535b3b93 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 25 Oct 2012 02:06:04 +0000 Subject: [PATCH 65/82] Merge from trunk [SVN r81060] --- test/Jamfile | 6 ++ test/sequence/construction.hpp | 2 +- test/sequence/deque_move.cpp | 32 +++++++ test/sequence/move.hpp | 120 +++++++++++++++++++++++++++ test/sequence/tuple_construction.cpp | 2 +- test/sequence/vector_move.cpp | 31 +++++++ 6 files changed, 191 insertions(+), 2 deletions(-) create mode 100644 test/sequence/deque_move.cpp create mode 100644 test/sequence/move.hpp create mode 100644 test/sequence/vector_move.cpp diff --git a/test/Jamfile b/test/Jamfile index 3cea5ecf..7e464575 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -8,6 +8,10 @@ # bring in rules for testing import testing ; +project + : requirements + ; + { test-suite fusion : @@ -76,6 +80,7 @@ import testing ; [ run sequence/deque_iterator.cpp : : : : ] [ run sequence/deque_make.cpp : : : : ] [ run sequence/deque_misc.cpp : : : : ] + [ run sequence/deque_move.cpp : : : : ] [ run sequence/deque_mutate.cpp : : : : ] [ run sequence/deque_tie.cpp : : : : ] [ run sequence/deque_value_at.cpp : : : : ] @@ -109,6 +114,7 @@ import testing ; [ run sequence/vector_iterator.cpp : : : : ] [ run sequence/vector_make.cpp : : : : ] [ run sequence/vector_misc.cpp : : : : ] + [ run sequence/vector_move.cpp : : : : ] [ run sequence/vector_mutate.cpp : : : : ] [ run sequence/vector_n.cpp : : : : ] [ run sequence/vector_tie.cpp : : : : ] diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index 380a9eed..57ba5301 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -57,7 +57,7 @@ test() FUSION_SEQUENCE<> empty0; -#ifndef TR1_TUPLE_TEST +#ifndef NO_CONSTRUCT_FROM_NIL FUSION_SEQUENCE<> empty1(empty); #endif diff --git a/test/sequence/deque_move.cpp b/test/sequence/deque_move.cpp new file mode 100644 index 00000000..42fda2d9 --- /dev/null +++ b/test/sequence/deque_move.cpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2012 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) +==============================================================================*/ +#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES // $$$ JDG temp $$$ + + +#include + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + +#include + +#define FUSION_SEQUENCE boost::fusion::deque +#include "move.hpp" + +#else +#include +#endif + +int +main() +{ +#if !defined(BOOST_NO_RVALUE_REFERENCES) + test(); +#endif + + return boost::report_errors(); +} + diff --git a/test/sequence/move.hpp b/test/sequence/move.hpp new file mode 100644 index 00000000..b96a60e7 --- /dev/null +++ b/test/sequence/move.hpp @@ -0,0 +1,120 @@ +/*============================================================================= + Copyright (c) 2012 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 + +#if defined(BOOST_NO_RVALUE_REFERENCES) +#error "Valid only on compilers that support rvalues" +#endif + +#include +#include +#include +#include + + +namespace test_detail +{ + int copies = 0; + + void incr_copy() + { + copies++; + } + + struct x + { + int i; + x() : i(123) {} + + x(x&& rhs) : i(rhs.i) {} + + x& operator=(x&& rhs) + { + i = rhs.i; + return *this; + } + + x(x const& rhs) + { + incr_copy(); + } + + x& operator=(x const& rhs) + { + incr_copy(); + return *this; + } + }; + + typedef std::vector vector_type; + extern bool disable_rvo; // to disable RVO + + vector_type + generate_vec() + { + vector_type v; + v.push_back(x()); + if (disable_rvo) + return v; + return vector_type(); + } + + + template + T move_me(T && val) + { + T r(std::move(val)); + if (disable_rvo) + return r; + return T(); + } + + typedef FUSION_SEQUENCE> return_type; + + return_type + generate() + { + return_type r(generate_vec()); + if (disable_rvo) + return r; + return return_type(); + } + + typedef FUSION_SEQUENCE, x> return_type2; + + return_type2 + generate2() + { + return_type2 r(generate_vec(), x()); + if (disable_rvo) + return r; + return return_type2(); + } +} + +void test() +{ + using namespace boost::fusion; + using namespace test_detail; + + return_type v = move_me(generate()); + BOOST_TEST(copies == 0); + + return_type2 v2 = move_me(generate2()); + BOOST_TEST(copies == 0); + + v2 = move_me(generate2()); + BOOST_TEST(copies == 0); + + std::cout << "Copies: " << copies << std::endl; +} + +namespace test_detail +{ + bool disable_rvo = true; +} + diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp index b35233ab..044701c4 100644 --- a/test/sequence/tuple_construction.cpp +++ b/test/sequence/tuple_construction.cpp @@ -8,7 +8,7 @@ #include #include -#define TR1_TUPLE_TEST +#define NO_CONSTRUCT_FROM_NIL #define FUSION_SEQUENCE tuple #define FUSION_AT get #include "construction.hpp" diff --git a/test/sequence/vector_move.cpp b/test/sequence/vector_move.cpp new file mode 100644 index 00000000..70483f06 --- /dev/null +++ b/test/sequence/vector_move.cpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2012 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) +==============================================================================*/ +#define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES // $$$ JDG temp $$$ + +#include + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + +#include + +#define FUSION_SEQUENCE boost::fusion::vector +#include "move.hpp" + +#else +#include +#endif + +int +main() +{ +#if !defined(BOOST_NO_RVALUE_REFERENCES) + test(); +#endif + + return boost::report_errors(); +} + From fc38122f0f993ae11f7762ae4e867b0777a76b37 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 25 Oct 2012 02:06:21 +0000 Subject: [PATCH 66/82] Merge from trunk [SVN r81061] --- .../struct/detail/define_struct_inline.hpp | 239 ++++++++++-------- .../iteration/detail/preprocessed/fold.hpp | 2 +- .../detail/preprocessed/reverse_fold.hpp | 2 +- .../fusion/algorithm/query/detail/any.hpp | 2 +- .../boost/fusion/container/deque/deque.hpp | 87 ++++++- .../fusion/container/deque/deque_fwd.hpp | 6 +- .../deque/detail/deque_forward_ctor.hpp | 14 +- .../deque/detail/deque_initial_size.hpp | 2 +- .../deque/detail/deque_keyed_values_call.hpp | 20 +- .../container/deque/detail/keyed_element.hpp | 48 +++- .../detail/{cpp03_deque.hpp => pp_deque.hpp} | 43 +++- .../{cpp03_deque_fwd.hpp => pp_deque_fwd.hpp} | 6 +- ...d_values.hpp => pp_deque_keyed_values.hpp} | 7 +- ...es.hpp => variadic_deque_keyed_values.hpp} | 17 +- .../boost/fusion/container/deque/limits.hpp | 2 +- .../vector/detail/vector_forward_ctor.hpp | 11 + .../container/vector/detail/vector_n.hpp | 79 ++++-- .../boost/fusion/container/vector/vector.hpp | 22 ++ .../fusion/functional/invocation/invoke.hpp | 81 +++++- .../fusion/iterator/iterator_adapter.hpp | 4 +- .../fusion/sequence/intrinsic/has_key.hpp | 2 +- 21 files changed, 525 insertions(+), 171 deletions(-) rename include/boost/fusion/container/deque/detail/{cpp03_deque.hpp => pp_deque.hpp} (78%) rename include/boost/fusion/container/deque/detail/{cpp03_deque_fwd.hpp => pp_deque_fwd.hpp} (92%) rename include/boost/fusion/container/deque/detail/{cpp03_deque_keyed_values.hpp => pp_deque_keyed_values.hpp} (96%) rename include/boost/fusion/container/deque/detail/{cpp11_deque_keyed_values.hpp => variadic_deque_keyed_values.hpp} (76%) diff --git a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp index a7961ec3..7bc5fe08 100644 --- a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp +++ b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -61,15 +62,20 @@ BOOST_PP_COMMA_IF(N) \ BOOST_FUSION_MAKE_INIT_LIST_ENTRY_I(BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)) +#define BOOST_FUSION_ITERATOR_NAME(NAME) \ + BOOST_PP_CAT(boost_fusion_detail_, BOOST_PP_CAT(NAME, _iterator)) + // Note: all template parameter names need to be uglified, otherwise they might // shadow a template parameter of the struct when used with // BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE #define BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS(Z, N, NAME) \ - template \ - struct value_of > \ + template \ + struct value_of< \ + BOOST_FUSION_ITERATOR_NAME(NAME) \ + > \ : boost::mpl::identity< \ - typename boost_fusion_uglified_Sq::t##N##_type \ + typename boost_fusion_detail_Sq::t##N##_type \ > \ { \ }; @@ -77,10 +83,10 @@ #define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ SPEC_TYPE, CALL_ARG_TYPE, TYPE_QUAL, ATTRIBUTE, N) \ \ - template \ + template \ struct deref > \ { \ - typedef typename boost_fusion_uglified_Sq::t##N##_type TYPE_QUAL& type; \ + typedef typename boost_fusion_detail_Sq::t##N##_type TYPE_QUAL& type; \ static type call(CALL_ARG_TYPE, N> const& iter) \ { \ return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ @@ -89,48 +95,48 @@ #define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS(R, NAME, N, ATTRIBUTE) \ BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \ - BOOST_PP_CAT(NAME, _iterator) \ - struct value_at > \ + template \ + struct value_at > \ { \ - typedef typename boost_fusion_uglified_Sq::t##N##_type type; \ + typedef typename boost_fusion_detail_Sq::t##N##_type type; \ }; #define BOOST_FUSION_MAKE_AT_SPECS(R, DATA, N, ATTRIBUTE) \ - template \ - struct at > \ + template \ + struct at > \ { \ typedef typename boost::mpl::if_< \ - boost::is_const, \ - typename boost_fusion_uglified_Sq::t##N##_type const&, \ - typename boost_fusion_uglified_Sq::t##N##_type& \ + boost::is_const, \ + typename boost_fusion_detail_Sq::t##N##_type const&, \ + typename boost_fusion_detail_Sq::t##N##_type& \ >::type type; \ \ - static type call(boost_fusion_uglified_Sq& sq) \ + static type call(boost_fusion_detail_Sq& sq) \ { \ return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ } \ @@ -142,7 +148,11 @@ #define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \ BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); +// Note: We can't nest the iterator inside the struct because we run into +// a MSVC10 bug involving partial specializations of nested templates. + #define BOOST_FUSION_DEFINE_STRUCT_INLINE_IMPL(NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \ struct NAME : boost::fusion::sequence_facade< \ NAME, \ boost::fusion::random_access_traversal_tag \ @@ -154,6 +164,8 @@ #define BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE_IMPL( \ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES) \ \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \ + \ template < \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \ (0)TEMPLATE_PARAMS_SEQ) \ @@ -173,176 +185,201 @@ NAME, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END)) +// Note: can't compute BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ) directly because +// ATTRIBUTES_SEQ may be empty and calling BOOST_PP_SEQ_SIZE on an empty +// sequence produces warnings on MSVC. #define BOOST_FUSION_DEFINE_STRUCT_MEMBERS_IMPL(NAME, ATTRIBUTES_SEQ) \ BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ NAME, \ ATTRIBUTES_SEQ, \ - BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)) + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE((0)ATTRIBUTES_SEQ))) -#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL( \ + NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END)) + +#define BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL(NAME, ATTRIBUTES_SEQ) \ + BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \ + NAME, \ + ATTRIBUTES_SEQ, \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE((0)ATTRIBUTES_SEQ))) + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \ NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \ \ - NAME() \ - BOOST_PP_IF( \ - BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \ - BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \ - BOOST_FUSION_IGNORE_1) \ - (ATTRIBUTES_SEQ) \ - { \ - } \ - \ - BOOST_PP_IF( \ - BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \ - BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \ - BOOST_FUSION_IGNORE_2) \ - (NAME, ATTRIBUTES_SEQ) \ - \ - template \ - NAME(const boost_fusion_uglified_Seq& rhs) \ - { \ - boost::fusion::copy(rhs, *this); \ - } \ - \ - template \ - NAME& operator=(const boost_fusion_uglified_Seq& rhs) \ - { \ - boost::fusion::copy(rhs, *this); \ - return *this; \ - } \ - \ - template \ - struct NAME##_iterator \ + template \ + struct BOOST_FUSION_ITERATOR_NAME(NAME) \ : boost::fusion::iterator_facade< \ - NAME##_iterator, \ + BOOST_FUSION_ITERATOR_NAME(NAME), \ boost::fusion::random_access_traversal_tag \ > \ { \ typedef boost::mpl::int_ index; \ - typedef boost_fusion_uglified_Seq sequence_type; \ + typedef boost_fusion_detail_Seq sequence_type; \ \ - NAME##_iterator(boost_fusion_uglified_Seq& seq) : seq_(seq) {} \ + BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \ + : seq_(seq) {} \ \ - boost_fusion_uglified_Seq& seq_; \ + boost_fusion_detail_Seq& seq_; \ \ - template struct value_of; \ + template struct value_of; \ BOOST_PP_REPEAT( \ ATTRIBUTES_SEQ_SIZE, \ BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ NAME) \ \ - template struct deref; \ + template struct deref; \ BOOST_PP_SEQ_FOR_EACH_I( \ BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ NAME, \ ATTRIBUTES_SEQ) \ \ - template \ + template \ struct next \ { \ - typedef NAME##_iterator< \ - typename boost_fusion_uglified_It::sequence_type, \ - boost_fusion_uglified_It::index::value + 1 \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + typename boost_fusion_detail_It::sequence_type, \ + boost_fusion_detail_It::index::value + 1 \ > type; \ \ - static type call(boost_fusion_uglified_It const& it) \ + static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ } \ }; \ \ - template \ + template \ struct prior \ { \ - typedef NAME##_iterator< \ - typename boost_fusion_uglified_It::sequence_type, \ - boost_fusion_uglified_It::index::value - 1 \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + typename boost_fusion_detail_It::sequence_type, \ + boost_fusion_detail_It::index::value - 1 \ > type; \ \ - static type call(boost_fusion_uglified_It const& it) \ + static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ } \ }; \ \ template < \ - typename boost_fusion_uglified_It1, \ - typename boost_fusion_uglified_It2 \ + typename boost_fusion_detail_It1, \ + typename boost_fusion_detail_It2 \ > \ struct distance \ { \ typedef typename boost::mpl::minus< \ - typename boost_fusion_uglified_It2::index, \ - typename boost_fusion_uglified_It1::index \ + typename boost_fusion_detail_It2::index, \ + typename boost_fusion_detail_It1::index \ >::type type; \ \ - static type call(boost_fusion_uglified_It1 const& it1, \ - boost_fusion_uglified_It2 const& it2) \ + static type call(boost_fusion_detail_It1 const& it1, \ + boost_fusion_detail_It2 const& it2) \ { \ return type(); \ } \ }; \ \ template < \ - typename boost_fusion_uglified_It, \ - typename boost_fusion_uglified_M \ + typename boost_fusion_detail_It, \ + typename boost_fusion_detail_M \ > \ struct advance \ { \ - typedef NAME##_iterator< \ - typename boost_fusion_uglified_It::sequence_type, \ - boost_fusion_uglified_It::index::value \ - + boost_fusion_uglified_M::value \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + typename boost_fusion_detail_It::sequence_type, \ + boost_fusion_detail_It::index::value \ + + boost_fusion_detail_M::value \ > type; \ \ - static type call(boost_fusion_uglified_It const& it) \ + static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ } \ }; \ - }; \ + }; + + +#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \ \ - template \ + /* Note: second BOOST_PP_IF is necessary to avoid MSVC warning when */ \ + /* calling BOOST_FUSION_IGNORE_1 with no arguments. */ \ + NAME() \ + BOOST_PP_IF( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \ + BOOST_FUSION_IGNORE_1) \ + (BOOST_PP_IF( \ + ATTRIBUTES_SEQ_SIZE, \ + ATTRIBUTES_SEQ, \ + 0)) \ + { \ + } \ + \ + BOOST_PP_IF( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \ + BOOST_FUSION_IGNORE_2) \ + (NAME, ATTRIBUTES_SEQ) \ + \ + template \ + NAME(const boost_fusion_detail_Seq& rhs) \ + { \ + boost::fusion::copy(rhs, *this); \ + } \ + \ + template \ + NAME& operator=(const boost_fusion_detail_Seq& rhs) \ + { \ + boost::fusion::copy(rhs, *this); \ + return *this; \ + } \ + \ + template \ struct begin \ { \ - typedef NAME##_iterator type; \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME) \ + type; \ \ - static type call(boost_fusion_uglified_Sq& sq) \ + static type call(boost_fusion_detail_Sq& sq) \ { \ return type(sq); \ } \ }; \ \ - template \ + template \ struct end \ { \ - typedef NAME##_iterator< \ - boost_fusion_uglified_Sq, \ + typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \ + boost_fusion_detail_Sq, \ ATTRIBUTES_SEQ_SIZE \ > type; \ \ - static type call(boost_fusion_uglified_Sq& sq) \ + static type call(boost_fusion_detail_Sq& sq) \ { \ return type(sq); \ } \ }; \ \ - template \ + template \ struct size : boost::mpl::int_ \ { \ }; \ \ - template \ + template \ struct empty : boost::mpl::bool_ \ { \ }; \ \ template < \ - typename boost_fusion_uglified_Sq, \ - typename boost_fusion_uglified_N \ + typename boost_fusion_detail_Sq, \ + typename boost_fusion_detail_N \ > \ struct value_at : value_at< \ - boost_fusion_uglified_Sq, \ - boost::mpl::int_ \ + boost_fusion_detail_Sq, \ + boost::mpl::int_ \ > \ { \ }; \ @@ -353,12 +390,12 @@ ~) \ \ template < \ - typename boost_fusion_uglified_Sq, \ - typename boost_fusion_uglified_N \ + typename boost_fusion_detail_Sq, \ + typename boost_fusion_detail_N \ > \ struct at : at< \ - boost_fusion_uglified_Sq, \ - boost::mpl::int_ \ + boost_fusion_detail_Sq, \ + boost::mpl::int_ \ > \ { \ }; \ diff --git a/include/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp index d368338a..c89a7dda 100644 --- a/include/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp @@ -116,7 +116,7 @@ namespace boost { namespace fusion { template static Result - call(State const& state,It0 const& it0, F) + call(State const& state,It0 const&, F) { return static_cast(state); } diff --git a/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp b/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp index 71730abf..48a41344 100644 --- a/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp @@ -115,7 +115,7 @@ namespace boost { namespace fusion { template static Result - call(State const& state,It0 const& it0, F) + call(State const& state,It0 const&, F) { return static_cast(state); } diff --git a/include/boost/fusion/algorithm/query/detail/any.hpp b/include/boost/fusion/algorithm/query/detail/any.hpp index 42409d5a..5f6b8577 100644 --- a/include/boost/fusion/algorithm/query/detail/any.hpp +++ b/include/boost/fusion/algorithm/query/detail/any.hpp @@ -109,7 +109,7 @@ namespace detail struct unrolled_any<0> { template - static bool call(It const& it, F f) + static bool call(It const&, F) { return false; } diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 215981e4..56ae290e 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -11,24 +11,23 @@ #include /////////////////////////////////////////////////////////////////////////////// -// With no decltype and variadics, we will use the C++03 version +// With variadics, we will use the PP version version /////////////////////////////////////////////////////////////////////////////// -#if (defined(BOOST_NO_DECLTYPE) \ - || defined(BOOST_NO_VARIADIC_TEMPLATES) \ - || defined(BOOST_NO_RVALUE_REFERENCES)) -# include +#if defined(BOOST_NO_VARIADIC_TEMPLATES) +# include #else -# if !defined(BOOST_FUSION_HAS_CPP11_DEQUE) -# define BOOST_FUSION_HAS_CPP11_DEQUE +# if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +# define BOOST_FUSION_HAS_VARIADIC_DEQUE # endif /////////////////////////////////////////////////////////////////////////////// -// C++11 interface +// C++11 variadic interface /////////////////////////////////////////////////////////////////////////////// #include #include +#include #include -#include +#include #include #include #include @@ -36,8 +35,10 @@ #include #include #include +#include #include +#include #include #include @@ -48,6 +49,22 @@ namespace boost { namespace fusion template struct deque : detail::nil_keyed_element { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef mpl::int_<0> size; + typedef mpl::int_<0> next_up; + typedef mpl::int_<0> next_down; + typedef mpl::false_ is_view; + + template + deque(Sequence const&, + typename enable_if< + mpl::and_< + traits::is_sequence + , result_of::empty>>::type* /*dummy*/ = 0) + {} + + deque() {} }; template @@ -60,7 +77,7 @@ namespace boost { namespace fusion typedef typename detail::deque_keyed_values::type base; typedef mpl::int_<(sizeof ...(Tail) + 1)> size; typedef mpl::int_ next_up; - typedef mpl::int_::type::value> next_down; + typedef mpl::int_<((size::value == 0) ? 0 : -1)> next_down; typedef mpl::false_ is_view; deque() @@ -71,11 +88,45 @@ namespace boost { namespace fusion : base(seq) {} - explicit deque(typename detail::call_param::type head - , typename detail::call_param::type... tail) - : base(detail::deque_keyed_values::call(head, tail...)) + template + deque(deque& seq) + : base(seq) {} +#if !defined(BOOST_NO_RVALUE_REFERENCES) + template + deque(deque&& seq) + : base(std::forward>(seq)) + {} +#endif + + deque(deque const& seq) + : base(seq) + {} + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + deque(deque&& seq) + : base(std::forward(seq)) + {} +#endif + + explicit deque(Head const& head, Tail const&... tail) + : base(detail::deque_keyed_values::construct(head, tail...)) + {} + + template + explicit deque(Head_ const& head, Tail_ const&... tail) + : base(detail::deque_keyed_values::construct(head, tail...)) + {} + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + template + explicit deque(Head_&& head, Tail_&&... tail) + : base(detail::deque_keyed_values + ::forward_(std::forward(head), std::forward(tail)...)) + {} +#endif + template explicit deque(Sequence const& seq , typename disable_if >::type* /*dummy*/ = 0) @@ -95,6 +146,16 @@ namespace boost { namespace fusion base::operator=(rhs); return *this; } + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + template + deque& operator=(T&& rhs) + { + base::operator=(std::forward(rhs)); + return *this; + } +#endif + }; }} diff --git a/include/boost/fusion/container/deque/deque_fwd.hpp b/include/boost/fusion/container/deque/deque_fwd.hpp index 19ca8f8f..fc1f9cbd 100644 --- a/include/boost/fusion/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/container/deque/deque_fwd.hpp @@ -16,10 +16,10 @@ #if (defined(BOOST_NO_DECLTYPE) \ || defined(BOOST_NO_VARIADIC_TEMPLATES) \ || defined(BOOST_NO_RVALUE_REFERENCES)) -# include +# include #else -# if !defined(BOOST_FUSION_HAS_CPP11_DEQUE) -# define BOOST_FUSION_HAS_CPP11_DEQUE +# if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +# define BOOST_FUSION_HAS_VARIADIC_DEQUE # endif /////////////////////////////////////////////////////////////////////////////// diff --git a/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp b/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp index b76916eb..44d279f6 100644 --- a/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp +++ b/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp @@ -9,10 +9,12 @@ #if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212) #define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212 -#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) #error "C++03 only! This file should not have been included" #endif +#define FUSION_DEQUE_FORWARD_CTOR_FORWARD(z, n, _) std::forward(t##n) + #include #include #include @@ -22,14 +24,22 @@ #define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() +#undef FUSION_DEQUE_FORWARD_CTOR_FORWARD #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))) + : base(detail::deque_keyed_values::construct(BOOST_PP_ENUM_PARAMS(N, t))) {} +#if !defined(BOOST_NO_RVALUE_REFERENCES) +deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t)) + : base(detail::deque_keyed_values:: + forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _))) +{} +#endif + #undef N #endif diff --git a/include/boost/fusion/container/deque/detail/deque_initial_size.hpp b/include/boost/fusion/container/deque/detail/deque_initial_size.hpp index edb3c176..21075ef4 100644 --- a/include/boost/fusion/container/deque/detail/deque_initial_size.hpp +++ b/include/boost/fusion/container/deque/detail/deque_initial_size.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139) #define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139 -#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) #error "C++03 only! This file should not have been included" #endif diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp index f95960bc..d457516f 100644 --- a/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp +++ b/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp @@ -9,25 +9,30 @@ #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 -#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) #error "C++03 only! This file should not have been included" #endif #include #include +#include #include +#define FUSION_DEQUE_KEYED_VALUES_FORWARD(z, n, _) \ + std::forward(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 FUSION_DEQUE_KEYED_VALUES_FORWARD #endif #else #define N BOOST_PP_ITERATION() - static type call(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) + static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) { return type(t0, deque_keyed_values_impl< @@ -38,5 +43,16 @@ >::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t))); } + static type forward_(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t)) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + #if N > 1 + , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T) + #endif + >::forward_(BOOST_PP_ENUM_SHIFTED(N, FUSION_DEQUE_KEYED_VALUES_FORWARD, _))); + } + #undef N #endif diff --git a/include/boost/fusion/container/deque/detail/keyed_element.hpp b/include/boost/fusion/container/deque/detail/keyed_element.hpp index d1b219de..e5bdc2ab 100644 --- a/include/boost/fusion/container/deque/detail/keyed_element.hpp +++ b/include/boost/fusion/container/deque/detail/keyed_element.hpp @@ -47,16 +47,42 @@ namespace boost { namespace fusion { namespace detail *it, base::from_iterator(fusion::next(it))); } + keyed_element(keyed_element const& rhs) + : Rest(rhs.get_base()), value_(rhs.value_) + {} + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + keyed_element(keyed_element&& rhs) + : Rest(std::forward(rhs.forward_base())) + , value_(std::forward(rhs.value_)) + {} +#endif + template keyed_element(keyed_element const& rhs) : Rest(rhs.get_base()), value_(rhs.value_) {} - Rest const get_base() const +#if !defined(BOOST_NO_RVALUE_REFERENCES) +#endif + + Rest& get_base() { return *this; } + Rest const& get_base() const + { + return *this; + } + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + Rest&& forward_base() + { + return std::forward(*static_cast(this)); + } +#endif + typename cref_result::type get(Key) const { return value_; @@ -67,10 +93,19 @@ namespace boost { namespace fusion { namespace detail return value_; } - keyed_element(typename call_param::type value, Rest const& rest) + keyed_element( + typename detail::call_param::type value + , Rest const& rest) : Rest(rest), value_(value) {} +#if !defined(BOOST_NO_RVALUE_REFERENCES) + keyed_element(Value&& value, Rest&& rest) + : Rest(std::forward(rest)) + , value_(std::forward(value)) + {} +#endif + keyed_element() : Rest(), value_() {} @@ -90,6 +125,15 @@ namespace boost { namespace fusion { namespace detail return *this; } +#if !defined(BOOST_NO_RVALUE_REFERENCES) + keyed_element& operator=(keyed_element&& rhs) + { + base::operator=(std::forward(rhs)); + value_ = std::forward(rhs.value_); + return *this; + } +#endif + Value value_; }; diff --git a/include/boost/fusion/container/deque/detail/cpp03_deque.hpp b/include/boost/fusion/container/deque/detail/pp_deque.hpp similarity index 78% rename from include/boost/fusion/container/deque/detail/cpp03_deque.hpp rename to include/boost/fusion/container/deque/detail/pp_deque.hpp index 5804d890..7913b67b 100644 --- a/include/boost/fusion/container/deque/detail/cpp03_deque.hpp +++ b/include/boost/fusion/container/deque/detail/pp_deque.hpp @@ -5,17 +5,17 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_CPP03_FUSION_DEQUE_26112006_1649) -#define BOOST_CPP03_FUSION_DEQUE_26112006_1649 +#if !defined(BOOST_PP_FUSION_DEQUE_26112006_1649) +#define BOOST_PP_FUSION_DEQUE_26112006_1649 -#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) #error "C++03 only! This file should not have been included" #endif #include #include #include -#include +#include #include #include #include @@ -87,13 +87,34 @@ namespace boost { namespace fusion { : base(t0, detail::nil_keyed_element()) {} + explicit deque(deque const& rhs) + : base(rhs) + {} + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + explicit deque(T0&& t0) + : base(std::forward(t0), detail::nil_keyed_element()) + {} + + explicit deque(deque&& rhs) + : base(std::forward(rhs)) + {} +#endif + template - deque(deque const& seq) + deque(deque const& seq) : base(seq) {} +#if !defined(BOOST_NO_RVALUE_REFERENCES) + template + deque(deque&& seq) + : base(std::forward>(seq)) + {} +#endif + template - deque(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) + deque(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) : base(base::from_iterator(fusion::begin(seq))) {} @@ -113,6 +134,16 @@ namespace boost { namespace fusion { return *this; } +#if !defined(BOOST_NO_RVALUE_REFERENCES) + template + deque& + operator=(T&& rhs) + { + base::operator=(std::forward(rhs)); + return *this; + } +#endif + }; }} diff --git a/include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp b/include/boost/fusion/container/deque/detail/pp_deque_fwd.hpp similarity index 92% rename from include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp rename to include/boost/fusion/container/deque/detail/pp_deque_fwd.hpp index 3a74447b..354cfccd 100644 --- a/include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp +++ b/include/boost/fusion/container/deque/detail/pp_deque_fwd.hpp @@ -5,10 +5,10 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_CPP03_DEQUE_FORWARD_02092007_0749) -#define FUSION_CPP03_DEQUE_FORWARD_02092007_0749 +#if !defined(FUSION_PP_DEQUE_FORWARD_02092007_0749) +#define FUSION_PP_DEQUE_FORWARD_02092007_0749 -#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) #error "C++03 only! This file should not have been included" #endif diff --git a/include/boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp similarity index 96% rename from include/boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp rename to include/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp index 2fee4700..a7c4939a 100644 --- a/include/boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp +++ b/include/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330 -#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) #error "C++03 only! This file should not have been included" #endif @@ -72,6 +72,11 @@ namespace boost { namespace fusion { namespace detail { return type(); } + + static type forward_() + { + return type(); + } }; template diff --git a/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp similarity index 76% rename from include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp rename to include/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp index 43ed5360..aae26a5b 100644 --- a/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp +++ b/include/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp @@ -28,13 +28,23 @@ namespace boost { namespace fusion { namespace detail typedef typename deque_keyed_values_impl::type tail; typedef keyed_element type; - static type call( + static type construct( typename detail::call_param::type head , typename detail::call_param::type... tail) { return type( head - , deque_keyed_values_impl::call(tail...) + , deque_keyed_values_impl::construct(tail...) + ); + } + + template + static type forward_(Head_&& head, Tail_&&... tail) + { + return type( + std::forward(head) + , deque_keyed_values_impl:: + forward_(std::forward(tail)...) ); } }; @@ -45,7 +55,8 @@ namespace boost { namespace fusion { namespace detail struct deque_keyed_values_impl { typedef nil_keyed_element type; - static type call() { return type(); } + static type construct() { return type(); } + static type forward_() { return type(); } }; template diff --git a/include/boost/fusion/container/deque/limits.hpp b/include/boost/fusion/container/deque/limits.hpp index 2a7d219d..7892ba1a 100644 --- a/include/boost/fusion/container/deque/limits.hpp +++ b/include/boost/fusion/container/deque/limits.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_LIMITS_26112006_1737) #define BOOST_FUSION_DEQUE_LIMITS_26112006_1737 -#if defined(BOOST_FUSION_HAS_CPP11_DEQUE) +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) #error "C++03 only! This file should not have been included" #endif diff --git a/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp index 92f7aa6c..c41d5b29 100644 --- a/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp +++ b/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp @@ -12,11 +12,14 @@ #include #include +#define FUSION_FORWARD_CTOR_MOVE(z, n, _) std::move(_##n) + #define BOOST_PP_FILENAME_1 \ #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() +#undef FUSION_FORWARD_CTOR_MOVE #endif #else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// @@ -34,6 +37,14 @@ N, typename detail::call_param::type _)) : vec(BOOST_PP_ENUM_PARAMS(N, _)) {} +#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if N == 1 + explicit +#endif + vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) + : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_MOVE, _)) {} +#endif + #undef N #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp index 4e249c7f..539b47fa 100644 --- a/include/boost/fusion/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n.hpp @@ -9,24 +9,31 @@ #if !defined(FUSION_MACRO_05042005) #define FUSION_MACRO_05042005 -#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##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_VECTOR_MEMBER_MEMBER_DEFAULT_INIT(z, n, _) m##n() +#define FUSION_VECTOR_MEMBER_MEMBER_INIT(z, n, _) m##n(_##n) +#define FUSION_VECTOR_MEMBER_COPY_INIT(z, n, _) m##n(other.m##n) +#define FUSION_VECTOR_MEMBER_FWD(z, n, _) m##n(std::forward(other.m##n)) +#define FUSION_VECTOR_ARG_FWD(z, n, _) m##n(std::forward(_##n)) +#define FUSION_VECTOR_MEMBER_MEMBER_DECL(z, n, _) T##n m##n; +#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) std::forward(_##n) -#define FUSION_MEMBER_ASSIGN(z, n, _) \ +#define FUSION_VECTOR_MEMBER_MEMBER_ASSIGN(z, n, _) \ this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n); -#define FUSION_DEREF_MEMBER_ASSIGN(z, n, _) \ +#define FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN(z, n, _) \ this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n); -#define FUSION_AT_IMPL(z, n, _) \ +#define FUSION_VECTOR_MEMBER_MEMBER_FORWARD(z, n, _) \ + this->BOOST_PP_CAT(m, n) = std::forward< \ + BOOST_PP_CAT(T, n)>(vec.BOOST_PP_CAT(m, n)); + +#define FUSION_VECTOR_MEMBER_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, _) \ +#define FUSION_VECTOR_MEMBER_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) \ @@ -40,21 +47,32 @@ struct BOOST_PP_CAT(vector_data, N) { BOOST_PP_CAT(vector_data, N)() - : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {} + : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_MEMBER_DEFAULT_INIT, _) {} + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) + : BOOST_PP_ENUM(N, FUSION_VECTOR_ARG_FWD, _) {} +#endif 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_ENUM(N, FUSION_VECTOR_MEMBER_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_ENUM(N, FUSION_VECTOR_MEMBER_COPY_INIT, _) {} + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + BOOST_PP_CAT(vector_data, N)( + BOOST_PP_CAT(vector_data, N)&& other) + : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FWD, _) {} +#endif BOOST_PP_CAT(vector_data, N)& operator=(BOOST_PP_CAT(vector_data, N) const& vec) { - BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _) return *this; } @@ -64,7 +82,7 @@ { 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_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); } @@ -74,11 +92,11 @@ { 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_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); } - BOOST_PP_REPEAT(N, FUSION_MEMBER_DECL, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_DECL, _) }; template @@ -105,6 +123,19 @@ N, typename detail::call_param::type _)) : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} +#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if (N == 1) + explicit +#endif + BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) + : base_type(BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FORWARD, _)) {} +#endif + +#if !defined(BOOST_NO_RVALUE_REFERENCES) + BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs) + : base_type(std::forward(rhs)) {} +#endif + template BOOST_PP_CAT(vector, N)( BOOST_PP_CAT(vector, N) const& vec) @@ -132,7 +163,7 @@ BOOST_PP_CAT(vector, N)& operator=(BOOST_PP_CAT(vector, N) const& vec) { - BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _) return *this; } @@ -142,12 +173,21 @@ { 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, _) + BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN, _) return *this; } - BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _) +#if !defined(BOOST_NO_RVALUE_REFERENCES) + BOOST_PP_CAT(vector, N)& + operator=(BOOST_PP_CAT(vector, N)&& vec) + { + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_FORWARD, _) + return *this; + } +#endif + + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_AT_IMPL, _) template typename add_reference::type>::type @@ -166,3 +206,4 @@ #undef N + diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index 6563bc93..36c1b7ac 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -106,6 +106,11 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} +#if !defined(BOOST_NO_RVALUE_REFERENCES) + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} +#endif + template vector(Sequence const& rhs) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -135,6 +140,23 @@ namespace boost { namespace fusion return *this; } +#if !defined(BOOST_NO_RVALUE_REFERENCES) + vector& + operator=(vector&& rhs) + { + vec = std::forward(rhs.vec); + return *this; + } + + template + vector& + operator=(T&& rhs) + { + vec = std::forward(rhs); + return *this; + } +#endif + template typename add_reference< typename mpl::at_c::type diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index 085beb7e..1a491702 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -57,13 +57,13 @@ namespace boost { namespace fusion template struct invoke; } - template - inline typename result_of::invoke::type - invoke(Function, Sequence &); + //~ template + //~ inline typename result_of::invoke::type + //~ invoke(Function, Sequence &); - template - inline typename result_of::invoke::type - invoke(Function, Sequence const &); + //~ template + //~ inline typename result_of::invoke::type + //~ invoke(Function, Sequence const &); //----- ---- --- -- - - - - @@ -85,6 +85,9 @@ namespace boost { namespace fusion template struct invoke_data_member; + template + struct invoke_fn_ptr; + template struct invoke_mem_fn; @@ -95,10 +98,10 @@ namespace boost { namespace fusion template struct invoke_nonmember_builtin // use same implementation as for function objects but... - : invoke_impl< // ...work around boost::result_of bugs + : invoke_fn_ptr< // ...work around boost::result_of bugs typename mpl::eval_if< ft::is_function, boost::add_reference, boost::remove_cv >::type, - Sequence, N, false, RandomAccess > + Sequence, N, RandomAccess > { }; template @@ -199,6 +202,35 @@ namespace boost { namespace fusion Function(BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M +#if N > 0 + + template + static inline result_type + call(F & f, Sequence & s) + { +#define M(z,j,data) fusion::at_c(s) + return f( BOOST_PP_ENUM(N,M,~) ); + } + +#else + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + + }; + + template + struct invoke_fn_ptr + { + public: + + typedef typename ft::result_type::type result_type; + #if N > 0 template @@ -278,6 +310,39 @@ namespace boost { namespace fusion return f(); } +#endif + + }; + + template + struct invoke_fn_ptr + { + private: + typedef invoke_param_types seq; + public: + + typedef typename ft::result_type::type result_type; + +#if N > 0 + + template + static inline result_type + call(F & f, Sequence & s) + { + typename seq::I0 i0 = fusion::begin(s); + BOOST_PP_REPEAT_FROM_TO(1,N,M,~) + return f( BOOST_PP_ENUM_PARAMS(N,*i) ); + } + +#else + + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + #endif }; diff --git a/include/boost/fusion/iterator/iterator_adapter.hpp b/include/boost/fusion/iterator/iterator_adapter.hpp index 68056269..9077f8fa 100644 --- a/include/boost/fusion/iterator/iterator_adapter.hpp +++ b/include/boost/fusion/iterator/iterator_adapter.hpp @@ -23,8 +23,8 @@ namespace boost { namespace fusion iterator_base_type; iterator_base_type iterator_base; - iterator_adapter(iterator_base_type const& iterator_base) - : iterator_base(iterator_base) {} + iterator_adapter(iterator_base_type const& iterator_base_) + : iterator_base(iterator_base_) {} // default implementation template diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp index 1ff05bad..9e0969a9 100644 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -68,7 +68,7 @@ namespace boost { namespace fusion template inline typename result_of::has_key::type - has_key(Sequence const& seq) + has_key(Sequence const&) { typedef typename result_of::has_key::type result; return result(); From 66ddb762d3a16c92e8eaa593179271cf55db72f9 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Thu, 22 Aug 2013 19:45:30 +0000 Subject: [PATCH 67/82] merge [84937] from trunk, fixes #8759 [SVN r85426] --- .../boost/fusion/container/map/convert.hpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/include/boost/fusion/container/map/convert.hpp b/include/boost/fusion/container/map/convert.hpp index 5bb6fc9d..bc3fa053 100644 --- a/include/boost/fusion/container/map/convert.hpp +++ b/include/boost/fusion/container/map/convert.hpp @@ -42,6 +42,30 @@ namespace boost { namespace fusion typedef typename result_of::as_map::gen gen; return gen::call(fusion::begin(seq)); } + + namespace extension + { + template + struct convert_impl; + + template <> + struct convert_impl + { + template + struct apply + { + typedef typename + result_of::as_map::type + type; + + static type call(Sequence& seq) + { + typedef result_of::as_map gen; + return gen::call(fusion::begin(seq), fusion::end(seq)); + } + }; + }; + } }} #endif From 1f718e452093550c8ef1526af5a2870ef8aa6e3c Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Tue, 10 Sep 2013 12:47:28 +0000 Subject: [PATCH 68/82] Wave: Merging from trunk [SVN r85641] --- doc/tuple.qbk | 4 +- .../struct/detail/define_struct_inline.hpp | 133 ++++++++++++++++-- .../boost/fusion/container/deque/deque.hpp | 2 +- preprocess/preprocess.bat | 7 - preprocess/preprocess.cpp | 10 -- preprocess/wave.cfg | 14 -- 6 files changed, 125 insertions(+), 45 deletions(-) delete mode 100644 preprocess/preprocess.bat delete mode 100644 preprocess/preprocess.cpp delete mode 100644 preprocess/wave.cfg diff --git a/doc/tuple.qbk b/doc/tuple.qbk index 3be81bbe..5dd6be51 100644 --- a/doc/tuple.qbk +++ b/doc/tuple.qbk @@ -91,7 +91,7 @@ Where `Vi` is `X&` if the cv-unqualified type `Ti` is `reference_wrapper`, ot 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. +[*Returns]: tuple(t1, t2, ..., tN). When argument `ti` is `ignore`, assigning any value to the corresponding tuple element has no effect. [endsect] @@ -254,7 +254,7 @@ The __tr1__tuple__ interface is specified to provide uniform access to `std::pai [*Type]: `T2` -[*Value]: Returns thetype of the second element of the pair +[*Value]: Returns the type of the second element of the pair template P& get(std::pair& pr); diff --git a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp index 7bc5fe08..bc05e9a8 100644 --- a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp +++ b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP +#include #include #include #include @@ -25,8 +26,32 @@ #include #include #include +#include #include +// MSVC and GCC <= 4.4 have a bug that affects partial specializations of +// nested templates under some circumstances. This affects the implementation +// of BOOST_FUSION_DEFINE_STRUCT_INLINE, which uses such specializations for +// the iterator class's 'deref' and 'value_of' metafunctions. On these compilers +// an alternate implementation for these metafunctions is used that does not +// require such specializations. The alternate implementation takes longer +// to compile so its use is restricted to the offending compilers. +// For MSVC, the bug was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates +// For GCC, 4.4 and earlier are no longer maintained so there is no need +// to report a bug. +#if defined(BOOST_MSVC) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4))) + #define BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND +#endif + +#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND +#include +#include +#include +#include +#include +#endif + + #define BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY(R, DATA, N, ATTRIBUTE) \ BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)() @@ -148,6 +173,95 @@ #define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \ BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); +#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND + +#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTE_SEQ_SIZE) \ + template \ + struct value_of : boost::fusion::result_of::at_c< \ + ref_vec_t, \ + boost_fusion_detail_Iterator::index::value \ + > \ + { \ + }; + +#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ + template \ + struct deref \ + { \ + typedef typename boost::remove_const< \ + boost_fusion_detail_Iterator \ + >::type iterator_raw_type; \ + \ + static const int index = iterator_raw_type::index::value; \ + \ + typedef typename boost::fusion::result_of::at_c< \ + ref_vec_t, \ + index \ + >::type result_raw_type; \ + \ + typedef typename boost::mpl::if_< \ + boost::is_const, \ + typename boost::add_const::type, \ + result_raw_type \ + >::type type; \ + \ + static type call(iterator_raw_type const& iter) \ + { \ + return boost::fusion::at_c(iter.ref_vec); \ + } \ + }; + +#define BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME(R, DATA, N, ATTRIBUTE) \ + BOOST_PP_COMMA_IF(N) seq.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ) \ + , ref_vec(BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME, \ + ~, \ + BOOST_PP_SEQ_TAIL(ATTRIBUTES_SEQ))) + +#define BOOST_FUSION_MAKE_ITERATOR_WKND_REF(Z, N, DATA) \ + BOOST_PP_COMMA_IF(N) \ + typename boost::mpl::if_< \ + boost::is_const, \ + typename boost::add_const< \ + typename boost_fusion_detail_Seq::t##N##_type \ + >::type, \ + typename boost_fusion_detail_Seq::t##N##_type \ + >::type& + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \ + typedef boost::fusion::vector< \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_ITERATOR_WKND_REF, \ + ~) \ + > ref_vec_t; \ + \ + ref_vec_t ref_vec; + +#else + +#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \ + template struct value_of; \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ + NAME) + +#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ + template struct deref; \ + BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ + NAME, \ + ATTRIBUTES_SEQ) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) + +#endif // BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND + // Note: We can't nest the iterator inside the struct because we run into // a MSVC10 bug involving partial specializations of nested templates. @@ -219,21 +333,18 @@ typedef boost_fusion_detail_Seq sequence_type; \ \ BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \ - : seq_(seq) {} \ + : seq_(seq) \ + BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES( \ + (0)ATTRIBUTES_SEQ) \ + {} \ \ boost_fusion_detail_Seq& seq_; \ \ - template struct value_of; \ - BOOST_PP_REPEAT( \ - ATTRIBUTES_SEQ_SIZE, \ - BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ - NAME) \ + BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \ \ - template struct deref; \ - BOOST_PP_SEQ_FOR_EACH_I( \ - BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ - NAME, \ - ATTRIBUTES_SEQ) \ + BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \ + \ + BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ \ template \ struct next \ diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 56ae290e..057064a0 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -11,7 +11,7 @@ #include /////////////////////////////////////////////////////////////////////////////// -// With variadics, we will use the PP version version +// With variadics, we will use the PP version /////////////////////////////////////////////////////////////////////////////// #if defined(BOOST_NO_VARIADIC_TEMPLATES) # include diff --git a/preprocess/preprocess.bat b/preprocess/preprocess.bat deleted file mode 100644 index f5c94977..00000000 --- a/preprocess/preprocess.bat +++ /dev/null @@ -1,7 +0,0 @@ - - -wave @wave.cfg -DFUSION_MAX_VECTOR_SIZE=10 -DFUSION_MAX_LIST_SIZE=10 -DFUSION_MAX_ZIP_SEQUENCES=10 preprocess.cpp -wave @wave.cfg -DFUSION_MAX_VECTOR_SIZE=20 -DFUSION_MAX_LIST_SIZE=20 -DFUSION_MAX_ZIP_SEQUENCES=20 preprocess.cpp -wave @wave.cfg -DFUSION_MAX_VECTOR_SIZE=30 -DFUSION_MAX_LIST_SIZE=30 -DFUSION_MAX_ZIP_SEQUENCES=30 preprocess.cpp -wave @wave.cfg -DFUSION_MAX_VECTOR_SIZE=40 -DFUSION_MAX_LIST_SIZE=40 -DFUSION_MAX_ZIP_SEQUENCES=40 preprocess.cpp -wave @wave.cfg -DFUSION_MAX_VECTOR_SIZE=50 -DFUSION_MAX_LIST_SIZE=50 -DFUSION_MAX_ZIP_SEQUENCES=50 preprocess.cpp diff --git a/preprocess/preprocess.cpp b/preprocess/preprocess.cpp deleted file mode 100644 index 1cc59ef3..00000000 --- a/preprocess/preprocess.cpp +++ /dev/null @@ -1,10 +0,0 @@ -/*============================================================================= - Copyright (c) 2011 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 - diff --git a/preprocess/wave.cfg b/preprocess/wave.cfg deleted file mode 100644 index 6d13cf63..00000000 --- a/preprocess/wave.cfg +++ /dev/null @@ -1,14 +0,0 @@ --DBOOST_FUSION_DONT_USE_PREPROCESSED_FILES --DBOOST_FUSION_CREATE_PREPROCESSED_FILES --SC:/dev/boost --SC:/dev/tools/mingw/include --SC:/dev/tools/mingw/lib/gcc/mingw32/4.5.2/include --SC:/dev/tools/mingw/lib/gcc/mingw32/4.5.2/include/c++ --SC:/dev/tools/mingw/lib/gcc/mingw32/4.5.2/include/c++/mingw32 ---variadics --NBOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL --NBOOST_PROTO_USE_GET_POINTER --NBOOST_PROTO_GET_POINTER ---timer - - From 8aef19648b14a9ccb62faafdb193ac2869048807 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 15 Sep 2013 06:16:39 +0000 Subject: [PATCH 69/82] big merge from trunk [SVN r85668] --- doc/iterator.qbk | 2 +- test/sequence/define_struct_inline.cpp | 134 ++++++++++++++++++++ test/sequence/define_tpl_struct_inline.cpp | 137 +++++++++++++++++++++ 3 files changed, 272 insertions(+), 1 deletion(-) create mode 100644 test/sequence/define_struct_inline.cpp create mode 100644 test/sequence/define_tpl_struct_inline.cpp diff --git a/doc/iterator.qbk b/doc/iterator.qbk index ff768f92..e9d7d823 100644 --- a/doc/iterator.qbk +++ b/doc/iterator.qbk @@ -492,7 +492,7 @@ Deferences the data property associated with the element referenced by an associ template< typename I > - typename __result_of_deref_data__::type deref(I const& i); + typename __result_of_deref_data__::type deref_data(I const& i); [table Parameters [[Parameter] [Requirement] [Description]] diff --git a/test/sequence/define_struct_inline.cpp b/test/sequence/define_struct_inline.cpp new file mode 100644 index 00000000..9cbd8ea0 --- /dev/null +++ b/test/sequence/define_struct_inline.cpp @@ -0,0 +1,134 @@ +/*============================================================================= + Copyright (c) 2010, 2012 Christopher Schmidt, Nathan Ridge + + Distributed under the Boost Software Liceclse, Version 1.0. (See accompanying + file LICEclsE_1_0.txt or copy at http://www.boost.org/LICEclsE_1_0.txt) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct cls +{ + BOOST_FUSION_DEFINE_STRUCT_INLINE( + point, + (int, x) + (int, y) + ) +}; + +template +struct tpl_cls +{ + BOOST_FUSION_DEFINE_STRUCT_INLINE( + point, + (int, x) + (int, y) + ) +}; + +namespace ns +{ + BOOST_FUSION_DEFINE_STRUCT_INLINE(s, (int, m)) + + BOOST_FUSION_DEFINE_STRUCT_INLINE(empty_struct, ) +} + +template +void run_test() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_STATIC_ASSERT(boost::fusion::result_of::size::value == 0); + BOOST_STATIC_ASSERT(boost::fusion::result_of::empty::value); + } + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + 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(boost::fusion::result_of::size::value == 2); + BOOST_STATIC_ASSERT(!boost::fusion::result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + Point v2(5, 3); + 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 Point to vector + Point p(5, 3); + vector v(p); + v = p; + } + + { + // conversion from Point to list + Point p(5, 3); + list l(p); + l = p; + } + + { // begin/end + using namespace boost::fusion; + + typedef boost::fusion::result_of::begin::type b; + typedef boost::fusion::result_of::end::type e; + // this fails + BOOST_MPL_ASSERT((boost::is_same::type, e>)); + } + + { + Point p = make_list(5,3); + BOOST_TEST(p == make_vector(5,3)); + + p = make_list(3,5); + BOOST_TEST(p == make_vector(3,5)); + } +} + +int +main() +{ + run_test(); // test with non-template enclosing class + run_test::point>(); // test with template enclosing class + return boost::report_errors(); + +} + diff --git a/test/sequence/define_tpl_struct_inline.cpp b/test/sequence/define_tpl_struct_inline.cpp new file mode 100644 index 00000000..fad064f7 --- /dev/null +++ b/test/sequence/define_tpl_struct_inline.cpp @@ -0,0 +1,137 @@ +/*============================================================================= + Copyright (c) 2010, 2012 Christopher Schmidt, nathan Ridge + + Distributed under the Boost Software 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 cls +{ + BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE( + (X)(Y), + point, + (X, x) + (Y, y) + ) +}; + +template +struct tpl_cls +{ + BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE( + (X)(Y), + point, + (X, x) + (Y, y) + ) +}; + +namespace ns +{ + BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE((M), s, (M, m)) + + BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE((M), empty_struct, ) +} + +template +void run_test() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_STATIC_ASSERT(boost::fusion::result_of::size >::value == 0); + BOOST_STATIC_ASSERT(boost::fusion::result_of::empty >::value); + } + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + 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(boost::fusion::result_of::size::value == 2); + BOOST_STATIC_ASSERT(!boost::fusion::result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + Point v2(5, 3); + 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 Point to vector + Point p(5, 3); + vector v(p); + v = p; + } + + { + // conversion from Point to list + Point p(5, 3); + list l(p); + l = p; + } + + { // begin/end + using namespace boost::fusion; + + typedef boost::fusion::result_of::begin >::type b; + typedef boost::fusion::result_of::end >::type e; + // this fails + BOOST_MPL_ASSERT((boost::is_same::type, e>)); + } + + + { + Point p = make_list(5,3); + BOOST_TEST(p == make_vector(5,3)); + + p = make_list(3,5); + BOOST_TEST(p == make_vector(3,5)); + } +} + +int +main() +{ + run_test >(); // test non-template enclosing class + run_test::point >(); // test template enclosing class + + return boost::report_errors(); +} + From 93447d3382ba6ca4a6cc21dcc3b74427e966f9d4 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 12 Oct 2013 01:35:27 +0000 Subject: [PATCH 70/82] Merged 84441 to release [SVN r86251] --- .../fusion/sequence/intrinsic/detail/segmented_begin.hpp | 6 +++--- .../fusion/sequence/intrinsic/detail/segmented_end.hpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp b/include/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp index 7f337ce1..63d3edcf 100644 --- a/include/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp @@ -22,19 +22,19 @@ namespace boost { namespace fusion { namespace detail // return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) ); //} - template + template struct segmented_begin { typedef segmented_iterator< - typename segmented_begin_impl::type + typename segmented_begin_impl::type > type; static type call(Sequence& seq) { return type( - segmented_begin_impl::call(seq, Nil())); + segmented_begin_impl::call(seq, Nil_())); } }; diff --git a/include/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp b/include/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp index f62c97aa..32c01087 100644 --- a/include/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp +++ b/include/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp @@ -18,19 +18,19 @@ namespace boost { namespace fusion { namespace detail // return make_segmented_iterator( segmented_end_impl( seq ) ); //} - template + template struct segmented_end { typedef segmented_iterator< - typename segmented_end_impl::type + typename segmented_end_impl::type > type; static type call(Sequence & seq) { return type( - segmented_end_impl::call(seq, Nil())); + segmented_end_impl::call(seq, Nil_())); } }; From 14580550cf0940e12d3e71113201bf5a15405853 Mon Sep 17 00:00:00 2001 From: Michel Morin Date: Wed, 13 Nov 2013 03:22:55 +0000 Subject: [PATCH 71/82] Merge r86524 (Correct broken links to C++ standard papers); fixes #9212 [SVN r86673] --- doc/fusion.qbk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/fusion.qbk b/doc/fusion.qbk index ce4e5973..cc964690 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -30,7 +30,7 @@ [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 __tr1__tuple__ [@http://www.open-std.org/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]] From aa7802866204a6635651192397d680bf448865da Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 1 Sep 2012 02:12:46 +0000 Subject: [PATCH 72/82] Updated changelog removed unmaintained todo.txt [SVN r80347] --- todo.txt | 185 ------------------------------------------------------- 1 file changed, 185 deletions(-) delete mode 100644 todo.txt diff --git a/todo.txt b/todo.txt deleted file mode 100644 index 2add4cc8..00000000 --- a/todo.txt +++ /dev/null @@ -1,185 +0,0 @@ -=============================================================================== -Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, 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) -=============================================================================== - -* Document extension::struct_size, extension::struct_member and - extension::struct_assoc_member in extension section. - -* Document rationale behind at and value_at and how to choose which - to use. - -* Reinstate the function object algorithms - -* Break all dependency cycles if there are some more - -* Break the view<-->algorithm dependency cycle - -* Improve extension docs - -* Document sequence/convert - -* 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 - -* Improved motivation section - -* Expand details of view concept - -* Examples, examples, examples - -* 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() - -* mpl, fusion, container type preserving operations incompatible - -- 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? - Dan: done now! - -* 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. - -* Why do we need to set FUSION_MAX_VECTOR_SIZE when we set - FUSION_MAX_MAP_SIZE? Setting FUSION_MAX_MAP_SIZE should be enough. - -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... - -* 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): - -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. - - 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 - functionality. - From 0873af5d3cbcc1a7d3c0f51693062d7b4831ac31 Mon Sep 17 00:00:00 2001 From: wmamrak Date: Tue, 26 Aug 2014 14:23:32 +0200 Subject: [PATCH 73/82] Update according to ticket #10403. Someone more familiar with this formatting please verify my changes :) --- doc/container.qbk | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/doc/container.qbk b/doc/container.qbk index 69df6f8f..7c619bda 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -1468,13 +1468,17 @@ rules for __element_conversion__. Returns the result type of __make_map__. +The implementation depends on the support of variadic templates. + +When variadic templates are not supported, make_map is a metafunction of the form: + [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_MAP_SIZE` elements, where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that defaults to `10`. You may define the preprocessor constant @@ -1483,6 +1487,18 @@ default. Example: #define FUSION_MAX_MAP_SIZE 20 +When variadic templates are supported, make_map is a metafunction class of the form: + +[heading Synopsis] + + template < + typename K0, typename K1,... typename KN> + struct make_map + { + struct apply< + typename T0, typename T1,... typename TN> + }; + [heading Parameters] [table @@ -1493,9 +1509,16 @@ default. Example: [heading Expression Semantics] + #if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) resulf_of::make_map::type; + #else + resulf_of::make_map::apply::type; + #endif -[*Return type]: __result_of_make_map__`::type` +[*Return type]: __result_of_make_map__`::type` +when variadic templates are not supported, or +__result_of_make_map__`::apply::type` +when variadic templates are supported. [*Semantics]: A __map__ with __fusion_pair__ elements where the `second_type` is converted following the rules for __element_conversion__. @@ -1508,8 +1531,12 @@ default. Example: #include [heading Example] - + + #if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) result_of::make_map::type + #else + result_of::make_map::apply::type + #endif [heading See also] From 561b762f5713137d22b27f09bc79c84199b93149 Mon Sep 17 00:00:00 2001 From: Mathias Gaunard Date: Thu, 9 Oct 2014 14:17:17 +0200 Subject: [PATCH 74/82] avoid unused argument warning in map_impl --- include/boost/fusion/container/map/detail/map_impl.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/container/map/detail/map_impl.hpp b/include/boost/fusion/container/map/detail/map_impl.hpp index f70d1392..2e0f50cc 100644 --- a/include/boost/fusion/container/map/detail/map_impl.hpp +++ b/include/boost/fusion/container/map/detail/map_impl.hpp @@ -38,12 +38,12 @@ namespace boost { namespace fusion { namespace detail template BOOST_FUSION_GPU_ENABLED - map_impl(Iterator const& iter, map_impl_from_iterator) + map_impl(Iterator const&, map_impl_from_iterator) {} template BOOST_FUSION_GPU_ENABLED - void assign(Iterator const& iter, map_impl_from_iterator) + void assign(Iterator const&, map_impl_from_iterator) {} BOOST_FUSION_GPU_ENABLED From 1b2e62f4b9cf4bf0bde3a10f55294e5480bad1a2 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Fri, 17 Oct 2014 17:35:30 +0900 Subject: [PATCH 75/82] Fix include guard mismatch. Signed-off-by: Kohei Takahashi --- include/boost/fusion/view/repetitive_view/repetitive_view.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp index 89678755..ab0a3b18 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp @@ -5,7 +5,7 @@ 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) +#ifndef BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED #define BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED #include From c921b9ca99585797ef81b0af70cb4d249208b72b Mon Sep 17 00:00:00 2001 From: Klemens Baum Date: Mon, 20 Oct 2014 11:48:42 +0200 Subject: [PATCH 76/82] Avoid unused parameter warning in BOOST_FUSION_DEFINE_STRUCT_INLINE --- .../fusion/adapted/struct/detail/define_struct_inline.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp index 87ab09fa..d720fcf8 100644 --- a/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp +++ b/include/boost/fusion/adapted/struct/detail/define_struct_inline.hpp @@ -392,9 +392,9 @@ typename boost_fusion_detail_It1::index \ >::type type; \ \ - BOOST_FUSION_GPU_ENABLED \ - static type call(boost_fusion_detail_It1 const& it1, \ - boost_fusion_detail_It2 const& it2) \ + BOOST_FUSION_GPU_ENABLED \ + static type call(boost_fusion_detail_It1 const& /* it1 */, \ + boost_fusion_detail_It2 const& /* it2 */) \ { \ return type(); \ } \ From cdfb1a46b332c4a6c0f845124ebb0d6b0ff81c96 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Mon, 27 Oct 2014 08:55:25 -0400 Subject: [PATCH 77/82] Improve support for constexpr in fusion::nil and its iterators. --- .../fusion/container/list/cons_iterator.hpp | 20 +++++++-------- include/boost/fusion/container/list/nil.hpp | 4 +-- test/Jamfile | 1 + test/sequence/nil.cpp | 25 +++++++++++++++++++ 4 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 test/sequence/nil.cpp diff --git a/include/boost/fusion/container/list/cons_iterator.hpp b/include/boost/fusion/container/list/cons_iterator.hpp index 42c023c1..da694756 100644 --- a/include/boost/fusion/container/list/cons_iterator.hpp +++ b/include/boost/fusion/container/list/cons_iterator.hpp @@ -55,45 +55,45 @@ namespace boost { namespace fusion typedef cons_iterator_identity< add_const::type> identity; - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED nil_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit nil_iterator(nil_ const&) {} }; template <> struct cons_iterator : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator > : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator const> : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; }} diff --git a/include/boost/fusion/container/list/nil.hpp b/include/boost/fusion/container/list/nil.hpp index c94186da..ef909c97 100644 --- a/include/boost/fusion/container/list/nil.hpp +++ b/include/boost/fusion/container/list/nil.hpp @@ -31,11 +31,11 @@ namespace boost { namespace fusion typedef void_ car_type; typedef void_ cdr_type; - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED nil_() {} template - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) {} diff --git a/test/Jamfile b/test/Jamfile index 1c84637d..63d674ae 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -97,6 +97,7 @@ project [ run sequence/map_move.cpp : : : : ] [ run sequence/map_mutate.cpp : : : : ] [ run sequence/map_tie.cpp : : : : ] + [ run sequence/nil.cpp : : : : ] [ run sequence/nview.cpp : : : : ] [ run sequence/reverse_view.cpp : : : : ] [ run sequence/segmented_iterator_range.cpp : : : : ] diff --git a/test/sequence/nil.cpp b/test/sequence/nil.cpp new file mode 100644 index 00000000..bdc8c352 --- /dev/null +++ b/test/sequence/nil.cpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2014 Louis Dionne + + Distributed under the Boost Software 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; + + // nil should be constexpr constructible + { + BOOST_CONSTEXPR nil x1 = nil(); + BOOST_CONSTEXPR nil x2 = nil(nil_iterator(), boost::mpl::true_()); + (void)x1; (void)x2; + } + + return boost::report_errors(); +} From f73b5362c5a662a1d79b1bd63bab75faf1fb3889 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sat, 1 Nov 2014 16:53:37 +0900 Subject: [PATCH 78/82] Fix test error with C++03 mode, due to C++11 using-declaration. --- test/algorithm/fold.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 2df01adf..510c845d 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -132,7 +132,7 @@ struct functor struct visitor { - using result_type = int; + typedef int result_type; int operator()(int sum, long&) { From 4c110d9a880dd1f6b64a669fa9dcd032dd8d3b08 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sat, 1 Nov 2014 20:50:11 +0900 Subject: [PATCH 79/82] Regen preprocessed headers. --- .../algorithm/iteration/detail/preprocessed/iter_fold.hpp | 4 ++-- .../algorithm/iteration/detail/preprocessed/reverse_fold.hpp | 4 ++-- .../iteration/detail/preprocessed/reverse_iter_fold.hpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp b/include/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp index b86847ee..1d294a87 100644 --- a/include/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion { template struct iter_fold_lvalue_state - : boost::result_of< + : fusion::detail::result_of_with_decltype< F( typename add_reference::type>::type, It&) @@ -272,7 +272,7 @@ namespace boost { namespace fusion { typedef typename result_of_unrolled_iter_fold< - typename boost::result_of< + typename fusion::detail::result_of_with_decltype< F( StateRef, It0 const& diff --git a/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp b/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp index 95122c8e..94789782 100644 --- a/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion { template struct reverse_fold_lvalue_state - : boost::result_of< + : fusion::detail::result_of_with_decltype< F( typename add_reference::type>::type, typename fusion::result_of::deref::type) @@ -272,7 +272,7 @@ namespace boost { namespace fusion { typedef typename result_of_unrolled_reverse_fold< - typename boost::result_of< + typename fusion::detail::result_of_with_decltype< F( StateRef, typename fusion::result_of::deref< It0 const>::type diff --git a/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp b/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp index 3dc434fc..bf1edca5 100644 --- a/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion { template struct reverse_iter_fold_lvalue_state - : boost::result_of< + : fusion::detail::result_of_with_decltype< F( typename add_reference::type>::type, It&) @@ -272,7 +272,7 @@ namespace boost { namespace fusion { typedef typename result_of_unrolled_reverse_iter_fold< - typename boost::result_of< + typename fusion::detail::result_of_with_decltype< F( StateRef, It0 const& From 1b4acaa1b0cdd0f25dfc0a5f84380e4f18f8b030 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sat, 1 Nov 2014 21:16:26 +0900 Subject: [PATCH 80/82] Fix unexpected lookup failure with GCC < 4.5. --- .../container/deque/detail/cpp03/as_deque.hpp | 7 +++++ .../detail/cpp03/preprocessed/as_deque10.hpp | 2 ++ .../detail/cpp03/preprocessed/as_deque20.hpp | 2 ++ .../detail/cpp03/preprocessed/as_deque30.hpp | 2 ++ .../detail/cpp03/preprocessed/as_deque40.hpp | 2 ++ .../detail/cpp03/preprocessed/as_deque50.hpp | 2 ++ .../container/map/detail/cpp03/as_map.hpp | 7 +++++ .../detail/cpp03/preprocessed/as_map10.hpp | 2 ++ .../detail/cpp03/preprocessed/as_map20.hpp | 2 ++ .../detail/cpp03/preprocessed/as_map30.hpp | 2 ++ .../detail/cpp03/preprocessed/as_map40.hpp | 2 ++ .../detail/cpp03/preprocessed/as_map50.hpp | 2 ++ .../fusion/container/set/detail/as_set.hpp | 7 +++++ .../set/detail/preprocessed/as_set10.hpp | 2 ++ .../set/detail/preprocessed/as_set20.hpp | 2 ++ .../set/detail/preprocessed/as_set30.hpp | 2 ++ .../set/detail/preprocessed/as_set40.hpp | 2 ++ .../set/detail/preprocessed/as_set50.hpp | 2 ++ .../container/vector/detail/as_vector.hpp | 6 +++++ .../detail/preprocessed/as_vector10.hpp | 2 ++ .../detail/preprocessed/as_vector20.hpp | 2 ++ .../detail/preprocessed/as_vector30.hpp | 2 ++ .../detail/preprocessed/as_vector40.hpp | 2 ++ .../detail/preprocessed/as_vector50.hpp | 2 ++ include/boost/fusion/support/config.hpp | 26 +++++++++++++++++++ preprocess/wave.cfg | 2 ++ 26 files changed, 95 insertions(+) diff --git a/include/boost/fusion/container/deque/detail/cpp03/as_deque.hpp b/include/boost/fusion/container/deque/detail/cpp03/as_deque.hpp index 650cd704..173a4924 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/as_deque.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/as_deque.hpp @@ -23,6 +23,8 @@ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN + template struct as_deque; @@ -43,6 +45,8 @@ namespace boost { namespace fusion { namespace detail return deque<>(); } }; + +BOOST_FUSION_BARRIER_END }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) @@ -67,6 +71,8 @@ namespace boost { namespace fusion { namespace detail namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN + #define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ typedef typename fusion::result_of::next::type \ BOOST_PP_CAT(I, BOOST_PP_INC(n)); @@ -87,6 +93,7 @@ namespace boost { namespace fusion { namespace detail #undef BOOST_FUSION_NEXT_CALL_ITERATOR #undef BOOST_FUSION_VALUE_OF_ITERATOR +BOOST_FUSION_BARRIER_END }}} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp index e573efb7..159995e9 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_deque<1> { @@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp index b3b7f158..abdbd8ca 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_deque<1> { @@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp index 18b4662c..b85f3beb 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_deque<1> { @@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp index ec44a2b0..eab845f1 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_deque<1> { @@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp index 6c83aed4..e3c8376e 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_deque<1> { @@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/map/detail/cpp03/as_map.hpp b/include/boost/fusion/container/map/detail/cpp03/as_map.hpp index 62748be1..4af79522 100644 --- a/include/boost/fusion/container/map/detail/cpp03/as_map.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/as_map.hpp @@ -22,6 +22,8 @@ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN + template struct as_map; @@ -42,6 +44,8 @@ namespace boost { namespace fusion { namespace detail return map<>(); } }; + +BOOST_FUSION_BARRIER_END }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) @@ -66,6 +70,8 @@ namespace boost { namespace fusion { namespace detail namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN + #define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ typedef typename fusion::result_of::next::type \ BOOST_PP_CAT(I, BOOST_PP_INC(n)); @@ -90,6 +96,7 @@ namespace boost { namespace fusion { namespace detail #undef BOOST_FUSION_PAIR_FROM_ITERATOR #undef BOOST_FUSION_DREF_CALL_ITERATOR +BOOST_FUSION_BARRIER_END }}} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp index c5273214..d39a27be 100644 --- a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template struct as_map<1, is_assoc> { @@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9)); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp index b62cf675..9caafd34 100644 --- a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template struct as_map<1, is_assoc> { @@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19)); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp index bb2c6d53..7c96b271 100644 --- a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template struct as_map<1, is_assoc> { @@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29)); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp index 1c4d7c60..ec5c3d64 100644 --- a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template struct as_map<1, is_assoc> { @@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39)); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp index e9cec05b..3f347b03 100644 --- a/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template struct as_map<1, is_assoc> { @@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44) , gen::D45::call(i45) , gen::D46::call(i46) , gen::D47::call(i47) , gen::D48::call(i48) , gen::D49::call(i49)); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/set/detail/as_set.hpp b/include/boost/fusion/container/set/detail/as_set.hpp index 26a719e3..a1e8cb7b 100644 --- a/include/boost/fusion/container/set/detail/as_set.hpp +++ b/include/boost/fusion/container/set/detail/as_set.hpp @@ -22,6 +22,8 @@ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN + template struct as_set; @@ -42,6 +44,8 @@ namespace boost { namespace fusion { namespace detail return set<>(); } }; + +BOOST_FUSION_BARRIER_END }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) @@ -66,6 +70,8 @@ namespace boost { namespace fusion { namespace detail namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN + #define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ typedef typename fusion::result_of::next::type \ BOOST_PP_CAT(I, BOOST_PP_INC(n)); @@ -86,6 +92,7 @@ namespace boost { namespace fusion { namespace detail #undef BOOST_FUSION_NEXT_CALL_ITERATOR #undef BOOST_FUSION_VALUE_OF_ITERATOR +BOOST_FUSION_BARRIER_END }}} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp b/include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp index f285cd5a..dda71499 100644 --- a/include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp +++ b/include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_set<1> { @@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp b/include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp index b7ad7fa3..8ecb2b7f 100644 --- a/include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp +++ b/include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_set<1> { @@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp b/include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp index 7a97a8e5..d91566d0 100644 --- a/include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp +++ b/include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_set<1> { @@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp b/include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp index 8e98f68a..1facc1d3 100644 --- a/include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp +++ b/include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_set<1> { @@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp b/include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp index 6cefd9a1..fd0848a3 100644 --- a/include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp +++ b/include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_set<1> { @@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/vector/detail/as_vector.hpp b/include/boost/fusion/container/vector/detail/as_vector.hpp index 2224fcc6..368557d0 100644 --- a/include/boost/fusion/container/vector/detail/as_vector.hpp +++ b/include/boost/fusion/container/vector/detail/as_vector.hpp @@ -22,6 +22,8 @@ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN + template struct as_vector; @@ -42,6 +44,8 @@ namespace boost { namespace fusion { namespace detail return vector0<>(); } }; + +BOOST_FUSION_BARRIER_END }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) @@ -66,6 +70,7 @@ namespace boost { namespace fusion { namespace detail namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN #define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ typedef typename fusion::result_of::next::type \ @@ -87,6 +92,7 @@ namespace boost { namespace fusion { namespace detail #undef BOOST_FUSION_NEXT_CALL_ITERATOR #undef BOOST_FUSION_VALUE_OF_ITERATOR +BOOST_FUSION_BARRIER_END }}} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp b/include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp index 8a48beda..53f2f164 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_vector<1> { @@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp b/include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp index 63bb0d58..c42a60cc 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_vector<1> { @@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp b/include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp index 8888b2d8..fd94d1f3 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_vector<1> { @@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp b/include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp index cfd7b055..8a712cf8 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_vector<1> { @@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp b/include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp index ea42ba2f..761ca9cc 100644 --- a/include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp +++ b/include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp @@ -8,6 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { +BOOST_FUSION_BARRIER_BEGIN template <> struct as_vector<1> { @@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49); } }; +BOOST_FUSION_BARRIER_END }}} diff --git a/include/boost/fusion/support/config.hpp b/include/boost/fusion/support/config.hpp index 16e38f95..5bee7df8 100644 --- a/include/boost/fusion/support/config.hpp +++ b/include/boost/fusion/support/config.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2014 Eric Niebler + Copyright (c) 2014 Kohei Takahashi Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -13,4 +14,29 @@ #define BOOST_FUSION_GPU_ENABLED BOOST_GPU_ENABLED #endif +// Enclose with inline namespace because unqualified lookup of GCC < 4.5 is broken. +// +// namespace detail { +// struct foo; +// struct X { }; +// } +// +// template void foo(T) { } +// +// int main() +// { +// foo(detail::X()); +// // prog.cc: In function 'int main()': +// // prog.cc:2: error: 'struct detail::foo' is not a function, +// // prog.cc:6: error: conflict with 'template void foo(T)' +// // prog.cc:10: error: in call to 'foo' +// } +namespace boost { namespace fusion { namespace detail +{ + namespace barrier { } + using namespace barrier; +}}} +#define BOOST_FUSION_BARRIER_BEGIN namespace barrier { +#define BOOST_FUSION_BARRIER_END } + #endif diff --git a/preprocess/wave.cfg b/preprocess/wave.cfg index d6744de0..3fd87116 100644 --- a/preprocess/wave.cfg +++ b/preprocess/wave.cfg @@ -21,6 +21,8 @@ -NBOOST_FUSION_HAS_VARIADIC_MAP -NBOOST_FUSION_VECTOR_COPY_INIT -NBOOST_FUSION_VECTOR_CTOR_HELPER +-NBOOST_FUSION_BARRIER_BEGIN +-NBOOST_FUSION_BARRIER_END -S..\include -S..\..\.. -S"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE" From 7ef4b03249108d48fe7aa9d4d50302f0e8a6eb96 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sat, 1 Nov 2014 22:12:11 +0900 Subject: [PATCH 81/82] Fix typo/missing copyright notice, reported by Boost Inspection Report. --- test/sequence/define_struct_inline.cpp | 4 ++-- test/sequence/std_tuple_auto_conv.cpp | 6 ++++++ test/sequence/test_deduce_sequence.cpp | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/sequence/define_struct_inline.cpp b/test/sequence/define_struct_inline.cpp index 9cbd8ea0..e849ce9b 100644 --- a/test/sequence/define_struct_inline.cpp +++ b/test/sequence/define_struct_inline.cpp @@ -1,8 +1,8 @@ /*============================================================================= Copyright (c) 2010, 2012 Christopher Schmidt, Nathan Ridge - Distributed under the Boost Software Liceclse, Version 1.0. (See accompanying - file LICEclsE_1_0.txt or copy at http://www.boost.org/LICEclsE_1_0.txt) + Distributed under the Boost 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/std_tuple_auto_conv.cpp b/test/sequence/std_tuple_auto_conv.cpp index ebd83910..a297e2b5 100644 --- a/test/sequence/std_tuple_auto_conv.cpp +++ b/test/sequence/std_tuple_auto_conv.cpp @@ -1,3 +1,9 @@ +/*============================================================================= + Copyright (c) 2008 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 #if !defined(BOOST_NO_CXX11_HDR_TUPLE) && \ diff --git a/test/sequence/test_deduce_sequence.cpp b/test/sequence/test_deduce_sequence.cpp index d137cd30..d7a3b813 100644 --- a/test/sequence/test_deduce_sequence.cpp +++ b/test/sequence/test_deduce_sequence.cpp @@ -1,3 +1,9 @@ +/*============================================================================= + Copyright (c) 2009 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 From 0a13aa5ee41e8353039e77ca975fd7cd3c2e91a3 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 2 Nov 2014 02:55:26 +0900 Subject: [PATCH 82/82] Change the result_of behaviour with BOOST_RESULT_OF_USE_DECLTYPE to make consistency between boost::result_of. --- include/boost/fusion/support/detail/result_of.hpp | 14 ++++++++++---- test/algorithm/fold.cpp | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/boost/fusion/support/detail/result_of.hpp b/include/boost/fusion/support/detail/result_of.hpp index ff48dac9..e53ea9e3 100644 --- a/include/boost/fusion/support/detail/result_of.hpp +++ b/include/boost/fusion/support/detail/result_of.hpp @@ -7,8 +7,14 @@ #if !defined(FUSION_RESULT_OF_10272014_0654) #define FUSION_RESULT_OF_10272014_0654 +#include #include -#if !(defined(BOOST_NO_CXX11_DECLTYPE) || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)) + +#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) +#define BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF +#endif + +#if !defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF) #include #include #include @@ -21,12 +27,12 @@ namespace boost { namespace fusion { namespace detail // low level code. So far this is used only in the fold algorithm. This will // be removed once we overhaul fold. -#if defined(BOOST_NO_CXX11_DECLTYPE) || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) +#if defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF) template struct result_of_with_decltype : boost::tr1_result_of {}; -#else +#else // defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF) BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type) BOOST_MPL_HAS_XXX_TEMPLATE_DEF(result) @@ -40,7 +46,7 @@ namespace boost { namespace fusion { namespace detail boost::tr1_result_of, boost::detail::cpp0x_result_of >::type {}; -#endif +#endif // defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF) }}} diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 510c845d..249f1bb3 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -238,7 +238,7 @@ main() } { -#if !defined(BOOST_NO_CXX11_DECLTYPE) +#if !defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF) { boost::fusion::vector container{1, 2, 3}; functor f;