Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r64648 - in sandbox/statistics/support/libs/assign/v2: . doc doc/html example src test test/anon test/chain test/detail test/put test/put_range test/ref test/type_traits test/unit_testing
From: erwann.rogard_at_[hidden]
Date: 2010-08-06 15:12:09


Author: e_r
Date: 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
New Revision: 64648
URL: http://svn.boost.org/trac/boost/changeset/64648

Log:
adding /libs/assign/v2
Added:
   sandbox/statistics/support/libs/assign/v2/
   sandbox/statistics/support/libs/assign/v2/doc/
   sandbox/statistics/support/libs/assign/v2/doc/Jamfile.v2 (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/doc/boost_assign_v2.qbk (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/doc/html/
   sandbox/statistics/support/libs/assign/v2/doc/html/index.html (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/example/
   sandbox/statistics/support/libs/assign/v2/example/tutorial.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/example/tutorial.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/src/
   sandbox/statistics/support/libs/assign/v2/src/main.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/
   sandbox/statistics/support/libs/assign/v2/test/anon/
   sandbox/statistics/support/libs/assign/v2/test/anon/anon.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/anon/anon.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/chain/
   sandbox/statistics/support/libs/assign/v2/test/chain/chain.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/chain/chain.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/chain/convert.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/chain/convert.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/detail/
   sandbox/statistics/support/libs/assign/v2/test/detail/functor.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/detail/functor.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/put/
   sandbox/statistics/support/libs/assign/v2/test/put/modifier.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/put/modifier.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/put/put_wrapper.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/put/put_wrapper.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/put_range/
   sandbox/statistics/support/libs/assign/v2/test/put_range/convert.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/put_range/convert.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/
   sandbox/statistics/support/libs/assign/v2/test/ref/anon.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/anon.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/convert_traits.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/convert_traits.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/csv_anon.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/csv_anon.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/fusion_list.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/fusion_list.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/generic_anon.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/generic_anon.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/wrapper.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/ref/wrapper.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/type_traits/
   sandbox/statistics/support/libs/assign/v2/test/type_traits/has_push.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/type_traits/has_push.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/type_traits/has_static_size.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/type_traits/has_static_size.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/type_traits/has_value_type.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/type_traits/has_value_type.h (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/Jamfile.v2 (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/anon.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/chain.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/detail.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/put.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/put_range.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/ref.cpp (contents, props changed)
   sandbox/statistics/support/libs/assign/v2/test/unit_testing/type_traits.cpp (contents, props changed)

Added: sandbox/statistics/support/libs/assign/v2/doc/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/doc/Jamfile.v2 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,14 @@
+
+import boostbook : boostbook ;
+using quickbook ;
+
+boostbook boost_assign_v2
+ :
+ boost_assign_v2.qbk
+ :
+ <xsl:param>boost.max.id.length=1024
+ <xsl:param>toc.max.depth=4
+ <xsl:param>toc.section.depth=4
+ <xsl:param>chunk.section.depth=2
+ <xsl:param>html.stylesheet="/usr/local/trunk/libs/non_parametric/doc/boostbook.css"
+ ;

Added: sandbox/statistics/support/libs/assign/v2/doc/boost_assign_v2.qbk
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/doc/boost_assign_v2.qbk 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,1700 @@
+[library Boost.Assign
+ [quickbook 1.5]
+ [version 2.0]
+ [authors [Thorsten, Ottosen],[Rogard, Erwann]]
+ [copyright 2003-2004 Thorsten Ottosen, 2010 Erwann Rogard]
+ [dirname /libs/assign/v2/doc/]
+ [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])
+ ]
+ [id boost_assign_v2]
+]
+
+[/ External]
+
+[def __boost__ [@http://www.boost.org Boost]]
+[def __mpl__ [@http://www.boost.org/libs/mpl/index.html MPL]]
+[def __stl__ [@http://en.wikipedia.org/wiki/Standard_Template_Library STL]]
+[def __user_mailing_list__ [@http://www.boost.org/community/groups.html#users Boost Users Mailing List]]
+
+[def __concept_range__ [@http://www.boost.org/doc/libs/1_35_0/libs/range/doc/range.html Range]]
+[def __header_range__ [@http://www.boost.org/doc/libs/1_35_0/libs/range/doc/range.html #include <boost/range.hpp>]]
+
+[def __boost_lambda__ [@http://www.boost.org/doc/libs/release/libs/lambda boost::lambda]]
+
+[def __header_typeof__ [@http://www.boost.org/doc/libs/1_36_0/doc/html/typeof.html #include <boost/typeof/typeof.hpp>] ]
+[def __header_assert__ [@http://www.boost.org/doc/libs/release/libs/utility/assert.html #include <boost/assert.hpp>] ]
+
+[def __mpl_empty_base__ mpl::empty_base]
+[def __use_default__ use_default]
+
+[/ Internal]
+
+[def __boost_assign_v2__ Boost.Assign v2]
+
+[def __lvalue__ lvalue]
+[def __unspecified__ /unspecified/]
+[def __implementation_defined__ '''<replaceable>implementation-defined</replaceable>''']
+
+[def __TO__ [@http://www.boost.org/users/people/thorsten_ottosen.html TO]]
+[def __ER__ [@mailto:er.ci.2020_at_[hidden] ER]]
+
+[def __local_boost_dir__ boost/assign/v2]
+[def __local_libs_dir__ libs/assign/v2]
+[def __local_ns__ boost::assign::v2]
+
+[/ Templates]
+[def __type_ext__ _]
+[template tpl_join[a b][a][b]]
+[template tpl_typeof[object][tpl_join [object]..__type_ext__]]
+
+[/Use In principle use like this:
+inlined : tpl_typeof[`object`]
+code block: ``tpl_typeof[object]`` <--- TODO causes line breaks!!!
+but in practice define: [def __value___ [tpl_typeof __value__]] and use __value___
+]
+
+[template tpl_seq[index first last] [index] = [first], ..., [last]]
+[template tpl_sub[var index] [var]\[[index]\] ]
+[template tpl_sub_sub[var index1 index2] [var]\[[index1],[index2]\]]
+
+[/ This doc]
+
+[template tpl_sec_reference [var] [link boost_assign_v2._.reference [var]]]
+[template tpl_sec_class [var] [link boost_assign_v2._.reference.class [var]]]
+[template tpl_sec_concept [var] [link boost_assign_v2._.reference.concept [var]]]
+[template tpl_sec_configuration [var] [link boost_assign_v2._.reference.configuration [var]]]
+[template tpl_sec_function [var] [link boost_assign_v2._.reference.function [var]]]
+[template tpl_sec_keyword [var] [link boost_assign_v2._.reference.keyword [var]]]
+
+[template tpl_sec_ref_assign_semantics[var] [link boost_assign_v2._.reference.concept.ref_assign [var]]]
+[template tpl_sec_concept_fun_syntax[var] [link boost_assign_v2._.reference.concept.fun_syntax [var]]]
+
+[/ Pertain to input --> fun --> output ]
+
+[def __container__ v]
+[def __container___ [tpl_typeof __container__]]
+[def __value__ t]
+[def __value___ [tpl_typeof __value__]]
+[def __f__ f]
+[def __f___ [tpl_typeof __f__]]
+[def __object__ object]
+[def __object___ [tpl_typeof __object__]]
+[def __range__ r]
+[def __range___ [tpl_typeof __range__]]
+[def __param__ p]
+[def __param___ [tpl_typeof __param__]]
+
+[def __arg__ x]
+[def __arg_0__ a]
+[def __arg_1__ b]
+[def __arg_2__ c]
+
+[/ Containers]
+[def __array__ [@http://www.boost.org/doc/html/array/reference.html array]]
+[def __array___ [tpl_typeof __array__]]
+[def __deque__ [@http://www.sgi.com/tech/stl/Deque.html deque]]
+[def __deque___ [tpl_typeof __deque__]]
+[def __list__ [@http://www.sgi.com/tech/stl/List.html list]]
+[def __list___ [tpl_typeof __list__]]
+[def __map__ [@http://www.sgi.com/tech/stl/Map.html map]]
+[def __map___ [tpl_typeof __map__]]
+[def __queue__ [@http://www.sgi.com/tech/stl/queue.html queue]]
+[def __queue___ [tpl_typeof __queue__]]
+[def __set__ [@http://www.sgi.com/tech/stl/set.html set]]
+[def __set___ [tpl_typeof __set__]]
+[def __stack__ [@http://www.sgi.com/tech/stl/stack.html stack]]
+[def __stack___ [tpl_typeof __stack__]]
+[def __tuple__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html tuple]]
+[def __tuple___ [tpl_typeof __tuple__]]
+[def __vec__ [@http://www.sgi.com/tech/stl/Vector.html vector]]
+[def __vec___ [tpl_typeof __vec__]]
+
+[/ References]
+
+[def __ref_wrapper__ w]
+[def __ref_wrapper___ [tpl_typeof __ref_wrapper__]]
+
+[/Indexes]
+[def __i__ i]
+[def __n__ n]
+[def __j__ j]
+[def __k__ k]
+
+[/ ---- Library components ---- ]
+
+[/ Concept ]
+
+[def __concept_k_ary__ [link boost_assign_v2._.reference.concept.fun_syntax K-Ary]]
+[def __concept_unary__ [link boost_assign_v2._.reference.concept.fun_syntax Unary]]
+[def __concept_csv__ [link boost_assign_v2._.reference.concept.fun_syntax Csv]]
+[def __concept_assigncopy__ [link boost_assign_v2._.reference.concept.ref_assign AssignCopy]]
+[def __concept_assignrebind__ [link boost_assign_v2._.reference.concept.ref_assign AssignRebind]]
+[def __concept_containerconvertible__ [link boost_assign_v2._.reference.concept.container_convertible ContainerConvertible]]
+
+[def __concept_rangelvalue__ RangeLvalue]
+[def __link_concept_rangelvalue__ [link boost_assign_v2._.reference.concept.range_lvalue RangeLvalue]]
+
+[/ PP constants]
+
+[def __pp_arity_bound__ [tpl_sec_configuration BOOST_ASSIGN_V2_ARITY_BOUND]]
+[def __pp_lvalue_const_arity_bound__ [tpl_sec_configuration BOOST_ASSIGN_V2_LVALUE_CONST_ARITY_BOUND]]
+[def __pp_csv_arity_bound__ [tpl_sec_configuration BOOST_ASSIGN_V2_CSV_ARITY_BOUND]]
+
+[/ Headers ]
+
+[def __header_tutorial__ #include <libs/assign/v2/example/tutorial.h>]
+[def __source_tutorial__ #include <libs/assign/v2/example/tutorial.cpp>]
+
+[def __header_anon__ #include <__local_boost_dir__/anon/anon.hpp>]
+[def __header_chain__ #include <__local_boost_dir__/chain/chain.hpp>]
+[def __header_arity_bound__ #include <boost/assign/v2/detail/config/arity_bound.hpp>]
+[def __header_functor_crtp__ #include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>]
+[def __header_put__ #include <__local_boost_dir__/put/put.hpp>]
+[def __header_put_range__ #include <__local_boost_dir__/put/range.hpp>]
+[def __header_ref__ #include <__local_boost_dir__/ref/ref.hpp>]
+[def __header_keywords__ #include <__local_boost_dir__/detail/keywords/keywords.hpp>]
+
+[def __header_constructor__ #include <boost/assign/v2/detail/functor/constructor.hpp>]
+
+[/ Tags ]
+
+[def __put_tag__ '''<replaceable>put-tag</replaceable>''']
+[def __ref_assign_tag__ '''<replaceable>ref-assign-tag</replaceable>''']
+[def __link_ref_assign_tag__ [link boost_assign_v2._.reference.concept.ref_assign '''<replaceable>ref-assign-tag</replaceable>''']]
+[def __ref_fast_alloc_tag__ alloc_tag::fast_alloc]
+[def __ref_lazy_alloc_tag__ alloc_tag::lazy_alloc]
+
+[/ Namespace]
+
+[def __ns_aux__ [~some_aux_ns]]
+[def __ns_adaptor__ adaptor]
+[def __ns_ref__ ref]
+[def __ns_ref_assign_copy__ assign_copy]
+[def __ns_ref_assign_rebind__ assign_rebind]
+[def __ns_ref_assign_tag__ assign_tag]
+[def __ns_put_tag__ put_tag]
+
+[/ Functions ]
+
+[def __csv_mf__ csv]
+
+[def __constructor__ constructor]
+[def __link_constructor__ [link boost_assign_v2._.reference.function.constructor constructor]]
+
+[def __anon__ anon]
+[def __link_anon__ [link boost_assign_v2._.reference.function.anon anon]]
+
+[def __chain__ chain] [/used for __result_of__::__chain__]
+[def __link_chain__ [link boost_assign_v2._.reference.function.chain chain]]
+[def __chain_kwd__ _chain]
+[def __link_chain_kwd__ [link boost_assign_v2._.reference.function.chain _chain]]
+[def __chain_op__ &&]
+[def __link_chain_op__ [link boost_assign_v2._.reference.function.chain &&]]
+
+[def __convert__ convert]
+[def __link_convert__ [link boost_assign_v2._.reference.function.convert convert]]
+
+[def __convert_mf__ convert]
+[def __link_convert_mf__ [link boost_assign_v2._.reference.concept.container_convertible convert]]
+
+[def __put_range__ put_range]
+[def __link_put_range__ [link boost_assign_v2._.reference.function.put_range put_range]]
+
+[def __put__ put]
+[def __link_put__ [link boost_assign_v2._.reference.function.put put]]
+
+[def __ref_anon__ anon]
+[def __link_ref_anon__ [link boost_assign_v2._.reference.function.ref_anon anon]]
+[def __ref_anon_nil__ anon_nil]
+[def __link_ref_anon_nil__ [link boost_assign_v2._.reference.function.ref_anon anon_nil]]
+
+[def __ref_csv_anon_nil__ csv_anon]
+[def __link_ref_csv_anon_nil__ [link boost_assign_v2._.reference.function.ref_anon csv_anon]]
+[def __ref_csv_anon__ csv_anon]
+[def __link_ref_csv_anon__ [link boost_assign_v2._.reference.function.ref_anon csv_anon]]
+
+[/ Classes ]
+
+[def __anon_aux_cont__ anon_aux::cont]
+[def __link_anon_aux_cont__ [link boost_assign_v2._.reference.class.anon_cont anon_aux::cont]]
+
+[def __put_aux_put_wrapper__ put_aux::put_wrapper]
+[def __link_put_aux_put_wrapper__ [link boost_assign_v2._.reference.class.put_wrapper put_aux::put_wrapper]]
+
+[def __ref_anon_aux_cont__ anon_aux::cont]
+[def __link_ref_anon_aux_cont__ [link boost_assign_v2._.reference.class.ref_anon_cont anon_aux::cont]]
+
+[def __ref_anon_aux_fast_alloc__ anon_aux::fast_alloc]
+[def __link_ref_anon_aux_fast_alloc__ [link boost_assign_v2._.reference.class.ref_fast_alloc anon_aux::fast_alloc]]
+
+[def __ref_anon_aux_interface__ anon_aux::interface]
+[def __link_ref_anon_aux_interface__ [link boost_assign_v2._.reference.class.ref_interface anon_aux::interface]]
+
+[/ Metafunctions]
+
+[def __result_of__ result_of]
+[def __nth_result_of__ nth_result_of]
+
+[/ Keywords]
+[def __nil__ _nil]
+[def __link_nil__ [link boost_assign_v2._.reference.keyword.nil _nil]]
+[def __incr_lookup__ _incr_lookup]
+[def __link_incr_lookup__ [link boost_assign_v2._.reference.keyword.incr_lookup _incr_lookup]]
+[def __repeat__ _repeat]
+[def __link_repeat__ [link boost_assign_v2._.reference.keyword.repeat _repeat]]
+[def __put_kwd__ _put_tag]
+[def __link_put_kwd__ [link boost_assign_v2._.reference.keyword.put_kwd _put]]
+[def __unwrap__ _unwrap]
+[def __link_unwrap__ [link boost_assign_v2._.reference.keyword.unwrap _unwrap]]
+[def __deduce__ _deduce]
+[def __link_deduce__ [link boost_assign_v2._.reference.keyword.deduce _deduce]]
+[def __fun__ _fun]
+[def __link_fun__ [link boost_assign_v2._.reference.keyword.fun _fun]]
+
+[section _] [/ TODO remove this. For now, the formatting is messy w/o it]
+[section Introduction]
+
+This library offers a uniform interface for initializing or assigning containers, and working with
+collections of references. The relevant directory structure is rooted [^boost/assign/v2]. Each
+directory in this structure contains an [^.hpp] file by the same name which includes all its relevant files.
+We assume, throughout this documentation, that
+
+ __header_assert__
+ __header_range__
+ #include <__local_boost_dir__/v2.hpp>
+ using namespace __local_ns__;
+
+precedes all C++ statements.
+
+[endsect] [/Introduction]
+[section Notation]
+
+To represent an `__object__` and its type, we use the convention that is implicit below:
+
+ __object___ __object__;
+
+[table Symbols
+ [[Symbol][Description]]
+ [
+ [`__container__`]
+ [ A container of unspecified type]
+ ]
+ [
+ [`__value__`]
+ [ Element in a container]
+ ]
+ [
+ [`__f__`]
+ [ A function ]
+ ]
+ [
+ [`__object__`]
+ [ An object returned by a function ]
+ ]
+ [
+ [`__param__`]
+ [ A parameter to an object ]
+ ]
+ [
+ [`__arg__`]
+ [ An argument to a function ]
+ ]
+ [
+ [`__arg_0__`]
+ [Argument in the first call to a function ]
+ ]
+ [
+ [`__arg_1__`]
+ [Argument in the second call to a function ]]
+ [
+ [`__arg_2__`]
+ [Argument in the third call to a function ]
+ ]
+]
+
+[table Expressions
+ [
+ [ Expression ]
+ [ Description]
+ ]
+ [
+ [ [^[tpl_seq __i__..0..__n__-1]] ]
+ [Indexes a sequences of `__value__`'s]
+ ]
+ [
+ [ [^[tpl_seq __j__..0..__k__-1]] ]
+ [Indexes arguments in a function call]
+ ]
+ [
+ [ [^[tpl_sub __k__..__i__]] ]
+ [Number of arguments of the __i__ th functional call]
+ ]
+ [
+ [ [^[tpl_sub_sub `__arg__`..__i__..__j__]] ]
+ [__j__ th argument of the __i__ th functional call]
+ ]
+ [
+ [ [^[tpl_sub `__arg_0__`..__j__]] ]
+ [ [^[tpl_sub_sub `__arg__`..0..__j__]] ]
+ ]
+ [
+ [ [^[tpl_sub `__arg_1__`..__j__]] ]
+ [ [^[tpl_sub_sub `__arg__`..1..__j__]] ]
+ ]
+ [
+ [ [^[tpl_sub `__arg_2__`..__j__]] ]
+ [ [^[tpl_sub_sub `__arg__`..2..__j__]] ]
+ ]
+]
+
+[note If [^__k__ = 0], in the context of a function call, it means that `f()` is called. In
+the context of constructing `__value__`, `__value___()` is called. ]
+
+[endsect] [/Notation]
+[section Tutorial]
+
+[section Putting elements into to a container]
+All three expressions in each row have the same side effect:
+[table Elementwise
+ [
+ [Expression1]
+ [Expression2]
+ [Expression3]
+ ]
+ [
+ [``
+ __queue__.push(__arg_0__);
+ __queue__.push( __value___() );
+ __queue__.push( __value__( __arg_2__[0], __arg_2__[1] ) );
+ ``]
+ [``
+ __link_put__( __queue__ )
+ .__csv_mf__( __arg_0__ )( __value___() )( __value__( __arg_2__[0], __arg_2__[1] ) )
+ ``]
+ [``
+ __link_put__( __queue__ )
+ ( __arg_0__ )()( __arg_2__[0], __arg_2__[1] );
+ ``]
+ ]
+ [
+ [``
+ __map__[ __arg_0__ ] +=2 ;
+ ++__map__[ __arg_1__ ];
+ ``]
+ [``
+ ( __link_put__( __map__ ) % __link_incr_lookup__)
+ .__csv_mf__( __arg_0__, __arg_1__, __arg_0__ );
+ ``]
+ [``
+ ( __link_put__( __map__ )
+ ( __arg_1__ ) % __link_incr_lookup__ % ( __link_repeat__ = 2 ) )( __arg_0__ );
+ ``]
+ ]
+ [
+ [``
+ __deque__.push_back( __tuple___( __arg_0__[0], __arg_0__[1] ) );
+ __deque__.push_back( __tuple___( __arg_1__[0], __arg_0__[1] ) );
+ __deque__.push_back( __tuple___( __arg_2__[0], __arg_0__[1]) );
+ ``]
+ [``
+ using namespace __boost_lambda__;
+ ( __link_put__( __deque__ ) % ( _fun = bind<__tuple___>(
+ __link_constructor__<__tuple___>(), _1, __arg_0__[1] )
+ ) )( __arg_0__[0] )( __arg_1__[0] )( __arg_2__[0] );
+ ``]
+ [ __unspecified__ ]
+ ]
+]
+
+[important Elements are passed by [tpl_sec_concept_fun_syntax reference]. In the example involving a `__tuple__`, it may have,
+for example, an __lvalue__ and a `const` reference as its elements.]
+
+To pass a `__concept_range__`, `from`, to an arbitrary container, `to`,
+``
+ __link_put_range__( from, to );
+``
+To assign a `__concept_range__` to a container,
+``
+ to = __link_convert__<To>( from );
+``
+
+[endsect] [/ Putting elements]
+[section Anonymous container (of values) ]
+
+An anonymous container is created by using the same interface as that of `__link_put__` and
+has most of the functionality of `__deque___` plus the conversion capability (See
+`__concept_containerconvertible__`). For assignment,
+``
+ to = __link_anon__( __arg_0__ )( __arg_1__ )( __arg_2__ );
+``
+To copy-construct `to`,
+``
+ To to = __link_anon__( __arg_0__ )( __arg_1__ )( __arg_2__ ).__link_convert_mf__<To>();
+``
+To be able to use `operator%`,
+``
+ ( __link_anon__<__value___>( __nil__ ) % (__repeat__ = n ) )( a )( b )( c );
+``
+[endsect][/Anon]
+[section Anonymous container of references]
+
+The `__array__` returned by
+``
+ using namespace __ns_ref__;
+ __link_anon__<__link_ref_assign_tag__>( __arg_0__ )( __arg_1__ )( __arg_2__ );
+``
+dereferences to `__arg_0__`, `__arg_1__`, and `__arg_2__`, respectively. Clearly only [tpl_sec_concept_fun_syntax unary
+function] calls are allowed, but there is a [tpl_sec_concept_fun_syntax csv counterpart] as well (see below).
+The template argument `__ref_assign_tag__` specifies [tpl_sec_ref_assign_semantics reference
+assign semantics]. Rather than specifying `__link_ref_assign_tag__`, it is equivalent to use a dedicated
+`namespace`. For [tpl_sec_ref_assign_semantics copy semantics],
+
+``
+ using namespace __ns_ref__;
+ using namespace __ns_ref_assign_copy__;
+ boost::copy( __container__ , boost::begin( __link_ref_anon__( __arg_0__ )( __arg_1__ )( __arg_2__ ) ) );
+ BOOST_ASSERT( __arg_0__ == __container__[0] );
+ BOOST_ASSERT( __arg_2__ == __container__[2] );
+``
+For [tpl_sec_ref_assign_semantics rebind semantics],
+``
+ __header_typeof__
+ using namespace __ns_ref__;
+ using namespace __ns_ref_assign_rebind__;
+ BOOST_AUTO( tmp, __link_ref_csv_anon__( __arg_0__ , __arg_1__ ) );
+ tmp.assign( __arg_2__ );
+ BOOST_ASSERT( &tmp[ 0 ] == &__arg_2__ );
+ BOOST_ASSERT( &tmp[ 1 ] == &__arg_2__ );
+``
+[endsect][/ Anon refs]
+[section Chaining ranges]
+To assign from chained ranges:
+``
+ to = (r1 __link_chain_op__ r2 __link_chain_op__ r3).__link_convert_mf__<To>();
+``
+Chaining is elementwise-__lvalue__ preserving:
+``
+ __header_typeof__
+ using namespace __ns_ref__;
+ using namespace __ns_ref_assign_copy__;
+ BOOST_AUTO( tmp, __ref_anon__( __arg_0__ )( __arg_1__ ) );
+ copy( v , boost::begin( tmp __link_chain_op__ __link_anon__( __arg_2__ ) ) );
+ BOOST_ASSERT( __arg_0__ == __container__[0] );
+ BOOST_ASSERT( __arg_1__ == __container__[1] );
+ BOOST_ASSERT( __arg_2__ == __container__[2] );
+``
+The fact that `__link_ref_anon__( __arg_2__ )`, above, returns an rvalue should underscore the significance of ['elementwise]
+in our previous statement. See `__link_concept_rangelvalue__`. Continuing our example,
+
+``
+ tmp.__link_convert_mf__<__container___>();
+``
+
+[endsect] [/chain]
+[section Running the code]
+
+The file below contains similar material,
+
+``
+ __source_tutorial__
+``
+
+and is be executed like this:
+
+``
+ __header_tutorial__
+ int main()
+ {
+ using namespace example_assign_v2;
+ xxx_tutorial::run();
+ return 0;
+ }
+``
+[endsect] [/Run]
+[endsect] [/Tutorial]
+[section Library interface and design]
+
+Functions are the primary interface by which the user interacts with the library. From
+an implementation standpoint, however, it is the object that they return that are responsible for
+performing the desired task. This relationship is formalized as follows:
+
+[table
+ [
+ [Interface]
+ [Implementation]
+ ]
+ [
+ [``
+ fun( __arg_0__ )( __arg_1__ )( __arg_2__ );
+ ``]
+ [``
+ result_of::fun_nil<__value___>::type __object__ = fun<__value___>( __nil__ );
+ __object__( __arg_0__ )( __arg_1__ )( __arg_2__ );
+ ``]
+ ]
+]
+
+To avoid passing to functions many, in fact any, parameters that would confuse the user and cause
+the developer a headache, the library usually deduces the parameters from its input using traits.
+Considering, for example, the `__link_put__()` functionality, the library, by default,
+
+* For creating each element, calls a functor, `__link_constructor__<__value__>()`, overloaded
+on the number and __lvalue__/`const`-ness of its arguments (see `__concept_k_ary__`).
+* A traits decides which modifier (such as `push_back()`) to use given certain properties
+of the container. For example, if the container has `push()` it takes precedence over `push_back()`.
+
+For example, the side effect of
+``
+ put( map )( key1, a )( key2, b )( key3, c )
+``
+is identical to that of
+``
+ map.insert( make_pair( key1, a ) );
+ map.insert( make_pair( key2, b ) );
+ map.insert( make_pair( key3, c ) );
+``
+
+The deduced parameters that we have just discussed can be selectively overriden with `operator%`
+taking as its first argument the result of the function, and a ['keyword]. A keyword is a `const`
+object defined in an anonymous namespace whose identifier has prefix `_`. Here's the generic form
+``
+ __object__ % _keyword;
+``
+or
+``
+ __object__ % (_keyword = __param__);
+``
+Operators are usually composable e.g.
+``
+ object % _keyword1 % (_keyword2 = __param__);
+``
+In each case, the operation may return a reference to the same `__object__`, but with a different state,
+or a new object of a different type altogether, thereby modifying the semantics of
+subequent calls to the object. For example,
+``
+ (__link_put__( __map__ ) % __incr_lookup__)( __arg_0__ )( __arg_1__ )( __arg_2__ )
+``
+
+is equivalent to
+
+``
+ ++ __map__ [ __arg_0__ ]; ++ __map__ [ __arg_1__ ]; ++ __map__ [ __arg_2__ ];
+``
+[endsect][/ Library interface and design]
+
+[section Reference]
+[section Concept]
+[section:ref_assign Reference assignment]
+
+Let a reference wrapper, `__ref_wrapper__`, binding to some reference `y1` of type `__value__`. Consider assigning it as follows:
+``
+ __ref_wrapper__ = y2;
+``
+where `y2` is also of type `__value__`. There are two possible semantics which are captured
+by the concepts below:
+
+[table
+ [[Name][Requirement][Description]]
+ [[[^__concept_assigncopy__]][ `y1 == y2;` ][The bound reference is assigned a new value]]
+ [[[^__concept_assignrebind__]][ `&__ref_wrapper__ == &y2;` ][The reference wrapper binds to a new reference]]
+]
+
+[endsect] [/Assign semantics]
+[section:container_convertible [^ContainerConvertible]]
+
+[table
+ [[Expression][Requirement]]
+ [[ `__object__.__convert_mf__<To>();` ][Returns an object of type `To`, initialized with the same elements ]]
+ [[ `To to; to = __object__ ` ][Assigns `to` with the elements of `__object__`]]
+]
+
+[endsect] [/ ContainerConvertible']
+[section:fun_syntax Function syntax]
+
+In each case below, arguments are passed by reference to `__f__`.
+
+[table
+ [
+ [ Syntax ]
+ [ Arity ]
+ [ Concept ]
+ ]
+ [
+ [``
+ __f__( __arg__[0,0], ..., __arg__[0,__k__(0)-1] ) ... ( __arg__[__n__-1,0], ..., __arg__[__n__-1,__k__(__n__-1)-1] )
+ ``]
+ [ [^ __k__ \[ __i__ \] - 1 < __pp_arity_bound__ ] ]
+ [ __concept_k_ary__ ]
+ ]
+ [
+ [``
+ __f__( __arg__[0] ) ... ( __arg__[__n__-1] )
+ ``]
+ [ [^ __j__\[__i__\] =1] ]
+ [ __concept_unary__ ]
+ ]
+ [
+ [``
+ f( __arg__[0], ..., __arg__[__n__-1] )
+ ``]
+ [ [^ __n__ - 1 < __pp_csv_arity_bound__ ]]
+ [ __concept_csv__ ]
+ ]
+]
+
+[table Preservation of lvalue
+ [
+ [ Concept ]
+ [ Argument ]
+ [ Condition ]
+ ]
+ [
+ [ [^__concept_k_ary__] ]
+ [ [^ __arg__ \[ __i__, __j__ \] ] ]
+ [ [^ __k__\[ __i__ \] - 1 < __pp_lvalue_const_arity_bound__ ] or [^ __arg__ \[ __i__, __j__ \]] is __lvalue__ for all [^__j__ = 0, ..., __k__\[ __i__ \] - 1 ] ]
+ ]
+ [
+ [ [^__concept_unary__] and [^__concept_csv__] ]
+ [ [^ __arg__ \[ __i__ \] ] ]
+ [ [^ __arg__ \[ __i__ \] ] is __lvalue__ for all [^__i__ = 0, ..., __n__ - 1 ] ]
+ ]
+]
+
+[endsect] [/ Function syntax ]
+[section:range_lvalue `__concept_rangelvalue__`]
+
+An function taking as inputs `__concept_range__` s and returning a `__concept_range__` models `__concept_rangelvalue__`
+if, in case the dereference of each input is __lvalue__, then so is that of the returned range.
+
+[endsect] [/ range_lvalue]
+[endsect] [/ Concept]
+[section Configuration]
+
+[table Preprocessor constants
+ [
+ [ Constant ]
+ [Override-able]
+ [Header]
+ ]
+ [
+ [ [^__pp_arity_bound__] ]
+ [Yes]
+ [`__header_arity_bound__`]
+ ]
+ [
+ [ [^__pp_csv_arity_bound__] ]
+ [ No ]
+ [`__header_arity_bound__`]
+ ]
+ [
+ [ [^__pp_lvalue_const_arity_bound__] ]
+ [Yes]
+ [`__header_functor_crtp__`]
+ ]
+]
+
+[endsect] [/ Configuration]
+[section Class]
+
+[section:anon_cont `__anon_aux_cont__`]
+
+[heading Description]
+
+An anynymous container.
+
+[heading Model of]
+
+`__concept_containerconvertible__`, `__concept_k_ary__`, `__concept_csv__` with
+respect to member function `__csv_mf__()`.
+
+[heading Parameters]
+
+[table
+ [[Parameter][Description]]
+ [[`T`][ Value ]]
+ [[`F`][ A functor that returns `T`]]
+ [[`Tag`][ A `__put_tag__`]]
+]
+
+[heading Header]
+
+TODO
+
+[endsect]
+
+[section:put_wrapper `__put_aux_put_wrapper__`]
+
+[heading Description]
+
+An object that modifies a container by putting elements into it.
+
+[heading Model of]
+
+`__concept_k_ary__`, `__concept_csv__` with respect to member function `__csv_mf__()`.
+
+[heading Parameters]
+
+[table
+ [[Parameter][Description]]
+ [[`V`][ Container ]]
+ [[`F`][ A functor that returns the value type of `V`]]
+ [[`Tag`][ A `__put_tag__`]]
+]
+
+[heading Header]
+
+TODO
+
+[endsect] [/ put_wrapper]
+
+[section:ref_anon_cont `__ns_ref__::__ref_anon_aux_cont__`]
+
+[heading Description]
+
+A container of references.
+
+[heading Parameters]
+
+[table
+ [
+ [Parameter]
+ [Description]
+ ]
+ [
+ [ [^N] ]
+ [ Size ]
+ ]
+ [
+ [ [^L] ]
+ [ __unspecified__ ]
+ ]
+ [
+ [ [^Tag1] ]
+ [ Controls the [tpl_sec_ref_assign_semantics reference assign semantics] ]
+ ]
+ [
+ [ [^Tag2] ]
+ [ A parameter for a base class ]
+ ]
+]
+
+[table Base
+ [[if [^Tag2] equals][ evaluates to ]]
+ [[`__ref_lazy_alloc_tag__`][ `__link_ref_anon_aux_interface__` ]]
+]
+
+[heading Model of]
+
+`__concept_unary__`
+
+[note Make sure to look at those of the interface (see above) as well. ]
+
+[heading Header]
+
+TODO
+
+[endsect][/ ref_anon_cont]
+[section:ref_fast_alloc `__ns_ref__::__ref_anon_aux_fast_alloc__`]
+
+[heading Description]
+
+An interface for an array or references.
+
+[heading Parameters]
+
+[table
+ [
+ [Parameter]
+ [Description]
+ ]
+ [
+ [ [^N] ]
+ [ static size ]
+ ]
+ [
+ [ [^Tag1] ]
+ [ Controls the [tpl_sec_ref_assign_semantics reference assign semantics]]
+ ]
+ [
+ [[^T]]
+ [ Value ]
+ ]
+]
+
+[heading Derived of]
+
+`__link_ref_anon_aux_interface__<>`
+
+[heading Model of]
+
+See the base.
+
+[heading Header]
+
+TODO
+
+[endsect] [/ ref_fast_alloc]
+[section:ref_interface `__ns_ref__::__ref_anon_aux_interface__`]
+
+[heading Description]
+
+An array or references.
+
+[heading Parameters]
+
+[table
+ [
+ [Parameter]
+ [Description]
+ ]
+ [
+ [[^N]]
+ [ Size ]
+ ]
+ [
+ [[^Tag1]]
+ [ Controls the [tpl_sec_ref_assign_semantics reference assign semantics] ]
+ ]
+ [
+ [[^T]]
+ [ Value ]
+ ]
+ [
+ [[^D]]
+ [ Derived type ]
+ ]
+]
+
+[heading Model of]
+
+`__array__`, `__concept_containerconvertible__`
+
+
+[heading Header]
+
+TODO
+
+[endsect] [/ ref_interface]
+[endsect] [/ Class]
+[section Function]
+[section:anon `__anon__`]
+
+[heading Description]
+
+Returns an object of type `__link_anon_aux_cont__<>`.
+
+[heading Synopsis]
+
+[table
+ [[Syntax][Designation]]
+ [
+ [``
+ template<typename T>
+ typename __result_of__::__anon__<T>::type
+ __anon__( __unspecified__ const& );
+ ``]
+ [ ['(1)] ]
+ ]
+ [
+ [``
+
+ template<typename T>
+ typename __result_of__::__anon__<T>::type
+ __anon__( T& );
+ ``]
+ [ ['(2)] ]
+ ]
+ [
+ [``
+
+ template<typename T>
+ typename __result_of__::__anon__<T const>::type
+ __anon__( T const& );
+ ``]
+ [ ['(3)] ]
+ ]
+]
+
+[heading Parameters]
+
+[table
+ [[Parameter] [Requirement] [Description]]
+ [[T] [__unspecified__] [Value to be held by the container returned by `__anon__`]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression][Designation]]
+ [
+ [``
+ __anon__<T>( __nil__ );
+ ``]
+ [ ['(1) ] ]
+ ]
+ [
+ [``
+ __anon__( __value__ );
+ ``]
+ [ ['(2)] and ['(3)] ]
+ ]
+]
+
+[*Return type]: `__result_of__::__anon__<T>::type` for each ['(1)], ['(2)] and ['(3)]
+
+[*Semantics]: TODO
+
+[heading Header]
+
+ __header_anon__
+
+[heading Example]
+
+[table
+ [[Expression][Designation]]
+ [
+ [``
+ __anon__<int>( __nil__ );
+ ``]
+ [ ['(1) ] ]
+ ]
+ [
+ [``
+ int __arg_0__; __anon__( __arg_0__ );
+ ``]
+ [ ['(2)] ]
+ ]
+ [
+ [``
+ __anon__( 1 );
+ ``]
+ [ ['(3)] ]
+ ]
+]
+
+[endsect] [/ anon]
+[section:chain `__chain_kwd__`]
+
+[/ The result of __chain_kwd__ is a functor, so the kwd may be treated as a function.]
+
+[heading Description]
+
+Takes two `__concept_range__`, and returns an object modeling `__concept_range__` and
+`__concept_containerconvertible__`, and `__link_concept_rangelvalue__`.
+
+[heading Synopsis]
+
+``
+ template<typename R1,typename U2>
+ typename __implementation_defined__<R1, R2>::type
+ operator|( U1& r1, __unspecified__<U2, __use_default__> );
+``
+
+[note `U1` = `R1` or `R1 const` and likewise for `U2`. ]
+[note `__unspecified__` is the result of calling `__chain_kwd__( r2 )`. ]
+
+[heading Parameters]
+
+[table
+ [[Parameter] [Requirement] [Description]]
+ [[`R1`] [models __concept_range__] [Range to be chained]]
+ [[`R2`] [models __concept_range__] [Range to chain to]]
+]
+
+[heading Expression Semantics]
+
+``
+ r1 | __link_chain_kwd__( r2 );
+``
+
+[*Return type]: `__result_of__::__chain__<U1,U2>::type`
+
+[*Semantics]: TODO
+
+[heading Header]
+``
+ __header_chain__
+``
+
+[heading Example]
+``
+ std::__vec__<int> __container__( 2, -1 );
+ boost::__array__<int,2> __array__; __array__.assign( 1 );
+ __container__ | __chain_kwd__( __array__ );
+``
+
+[heading Alternative syntax]
+
+[table
+ [[Expression 1][Expression 2]]
+ [
+ [``
+ r1 | __chain_kwd__( r2 );
+ ``]
+ [``
+ r1 __chain_op__ r2;
+ ``]
+ ]
+]
+
+[endsect] [/ chain]
+[section:convert `__convert__`]
+
+[heading Description]
+
+Converts a __concept_range__ to an arbitrary container.
+
+[heading Synopsis]
+
+ template<typename To, typename From>
+ To __convert__( From const& from);
+
+[heading Parameters]
+
+[table
+ [[Parameter] [Requirement] [Description]]
+ [[`From`] [models [^__concept_range__]] [The argument to `__convert__()`]]
+ [[`To`] [__unspecified__] [The return type of `__convert__()`]]
+]
+
+[heading Expression Semantics]
+
+``
+ __convert__<To>( from );
+``
+
+[*Return type]: To
+
+[*Semantics]: Creates a container of type `To` with the elements of `from`
+
+[heading Header]
+
+ __header_put_range__
+
+[heading Example]
+
+``
+ std::__vec__<int> from; from.push_back( -1 ); from.push_back( 0 );
+ typedef std::__queue__<int> to_;
+ to_ to = from.__convert__<to_>();
+``
+
+[endsect] [/ convert]
+[section:constructor `__constructor__`]
+
+[heading Description]
+
+Returns a constructor;
+
+[heading Syntax]
+``
+ template<typename T>
+ typename __result_of__::__constructor__<T>::type
+ __constructor__();
+``
+
+[heading Parameters]
+
+[table
+ [[Parameter][Description]]
+ [[[^T]][Type to construct]]
+]
+
+[heading Expression Semantics]
+
+``
+ __constructor__<T>();
+``
+
+[*Return type]: `__result_of__::__constructor__<T>::type`
+
+[*Semantics]: Returns a constructor modeling `__concept_k_ary__`.
+
+[heading Header]
+``
+ __header_constructor__
+``
+
+[heading Example]
+
+``
+ construct<__tuple__<int&,int&> >();
+``
+
+
+[endsect] [/construct]
+[section:put_range `__put_range__`]
+
+[heading Description]
+
+Puts the elements of a __concept_range__ into an arbitrary container.
+
+[heading Synopsis]
+
+``
+ template<typename From,typename To>
+ To& __put_range__( From const&, To& to );
+``
+
+[heading Parameters]
+
+[table
+ [[Parameter] [Requirement] [Description]]
+ [[From] [models __concept_range__] [The first argument to `__put_range__`]]
+ [[To] [__unspecified__] [The second argument to `__put_range__`]]
+]
+
+[heading Expression Semantics]
+
+``
+ __put_range__( from, to );
+``
+
+[*Return type]: To&
+
+[*Semantics]: Puts the elements in `from` into `to`.
+
+[heading Header]
+
+ __header_put_range__
+
+[heading Example]
+
+ std::__vec__<int> from; from.push_back( -1 ); from.push_back( 0 );
+ std::__queue__<int> to;
+ __put_range__( from, to );
+
+[endsect] [/ put_range]
+[section:put `__put__`]
+[heading Description]
+
+Returns an object of type `__link_put_aux_put_wrapper__<>`.
+
+[heading Synopsis]
+
+ template<typename V>
+ typename __result_of__::__put__<V>::type
+ __put__( V& __container__ );
+
+[heading Parameters]
+
+[table
+ [[Parameter] [Requirement] [Description]]
+ [[V] [__unspecified__] [The argument to `__put__`]]
+]
+
+[heading Expression Semantics]
+
+ __put__( v );
+
+[*Return type]: `__result_of__::__put__<V>::type`
+
+[*Semantics]: TODO
+
+[heading Header]
+
+ __header_put__
+
+[heading Example]
+
+ std::__vec__<int> __container__;
+ __put__( __container__ );
+
+[endsect] [/ put]
+[section:ref_anon `__ns_ref__::__ref_anon__`]
+
+[heading Description]
+
+Returns an object of type `__ns_ref__::__link_ref_anon_aux_cont__<>`
+with `Tag2 = __ns_ref__::__ref_lazy_alloc_tag__`.
+
+[heading Synopsis]
+
+[table
+ [ [Syntax] [Designation]]
+ [
+ [``
+ template<typename Tag1, typename T>
+ typename __ns_ref__::result_of::__ref_anon_nil__<Tag1, T>::type __ref_anon__( __unspecified__ );
+ ``]
+ [ ['(1)] ]
+ ]
+ [
+ [``
+ template<typename Tag1,typename T>
+ typename result_of::__ns_ref__::__ref_anon__<Tag1, T>::type __ns_ref__::__ref_anon__( T& __value__ );
+ ``]
+ [ ['(2)] ]
+ ]
+ [
+ [``
+ template<typename Tag1,typename T> typename __ns_ref__::result_of::__ref_anon__<Tag1, T const>::type
+ __ns_ref__::__ref_anon__( T const & __value__ );
+ ``]
+ [ ['(3)] ]
+ ]
+]
+
+[heading Parameters]
+
+[table
+ [ [ Parameter] [Requirement] [Description] ]
+ [ [ [^Tag1] ] [__unspecified__] [Controls the [tpl_sec_ref_assign_semantics reference assign semantics] ] ]
+ [ [ [^T] ] [__unspecified__] [Value of the element(s) to reference to] ]
+]
+
+[heading Expression Semantics]
+
+[table
+ [ [Expression] [Designation]]
+ [
+ [`__ns_ref__::__ref_anon__<__ref_assign_tag__>( __nil__ );` ]
+ [ ['(1)] ]
+ ]
+ [
+ [`__ns_ref__::__ref_anon__<__ref_assign_tag__>( __value__ );`]
+ [ ['(2)] and ['(3)] ]
+ ]
+]
+
+[*Return type]:
+
+[table
+
+ [ [Expression][Designation]]
+ [
+ [`__ns_ref__::__result_of__::__ref_anon_nil__<__link_ref_assign_tag__,T>::type`]
+ [ ['(1)] ]
+ ]
+ [
+ [`__ns_ref__::__result_of__::__ref_anon__<__link_ref_assign_tag__,T>::type`]
+ [ ['(2)] ]
+ ]
+ [
+ [`__ns_ref__::__result_of__::__ref_anon__<__link_ref_assign_tag__,T const>::type`]
+ [ ['(3)] ]
+ ]
+]
+
+[*Semantics]: TODO
+
+[heading Header]
+
+ __header_ref__
+
+[heading Alternative syntax]
+
+[table
+ [ [Expression1] [Expression2]]
+ [
+ [``
+ __ns_ref__::__ref_anon__<__ns_ref__::__ref_assign_tag__::copy>( __value__ );
+ ``]
+ [``
+ __ns_ref__::__ns_ref_assign_copy__::__ref_anon__( __value__ );
+ ``]
+ ]
+ [
+ [``
+ __ns_ref__::__ref_anon__<__ns_ref__::__ref_assign_tag__::assign>( __value__ );
+ ``]
+ [``
+ __ns_ref__::__ns_ref_assign_rebind__::__ref_anon__( __value__ );
+ ``]
+ ]
+]
+
+[heading Example]
+
+[table
+ [ [Expression] [Designation]]
+ [
+ [ `__ns_ref__::__ref_anon__<int const>( __nil__ )( 1 )( 2 )( 3 );` ]
+ [ ['(1)] ]
+ ]
+ [
+ [``
+ int __arg_0__, __arg_1__, __arg_2__;
+ __ns_ref__::__ref_anon__( __arg_0__ )( __arg_1__ )( __arg_2__ );
+ ``]
+ [ ['(2)] ]
+ ]
+ [
+ [ `__ns_ref__::__ref_anon__( 1 )( 2 )( 3 )` ]
+ [ ['(3)] ]
+ ]
+]
+
+[endsect] [/ ref::__anon__]
+[section:ref_csv_anon `__ns_ref__::__ref_csv_anon__`]
+
+[heading Description]
+
+Returns an object of type `__ns_ref__::__link_ref_anon_aux_fast_alloc__<>`.
+
+[heading Synopsis]
+
+[table
+ [ [Syntax] [Designation]]
+ [
+ [``
+ template<typename Tag1, typename T>
+ typename __ns_ref__::result_of::__ref_csv_anon_nil__<Tag1, T>::type __ref_csv_anon__( __unspecified__ );
+ ``]
+ [ ['(1)] ]
+ ]
+ [
+ [``
+ template<typename Tag1,typename T>
+ typename result_of::__ns_ref__::__ref_csv_anon__<Tag1, T>::type __ns_ref__::__ref_csv_anon__( T& __value__ );
+ ``]
+ [ ['(2)] ]
+ ]
+ [
+ [``
+ template<typename Tag1,typename T> typename __ns_ref__::result_of::__ref_csv_anon__<Tag1, T const>::type
+ __ns_ref__::__ref_csv_anon__( T const & __value__ );
+ ``]
+ [ ['(3)] ]
+ ]
+]
+
+[heading Parameters]
+
+[table
+ [ [ Parameter] [Requirement] [Description] ]
+ [ [ [^Tag1] ] [__unspecified__] [Controls the [tpl_sec_ref_assign_semantics reference assign semantics] ] ]
+ [ [ [^T] ] [__unspecified__] [Value of the element(s) to reference to] ]
+]
+
+[heading Expression Semantics]
+
+[table
+ [ [Expression] [Designation]]
+ [
+ [`__ns_ref__::__ref_csv_anon__<__ref_assign_tag__>( __nil__ );` ]
+ [ ['(1)] ]
+ ]
+ [
+ [`__ns_ref__::__ref_csv_anon__<__ref_assign_tag__>( __value__ );`]
+ [ ['(2)] and ['(3)] ]
+ ]
+]
+
+[*Return type]:
+
+[table
+
+ [ [Expression][Designation]]
+ [
+ [`__ns_ref__::__result_of__::__ref_csv_anon_nil__<__link_ref_assign_tag__,T>::type`]
+ [ ['(1)] ]
+ ]
+ [
+ [`__ns_ref__::__result_of__::__ref_csv_anon__<__link_ref_assign_tag__,T>::type`]
+ [ ['(2)] ]
+ ]
+ [
+ [`__ns_ref__::__result_of__::__ref_csv_anon__<__link_ref_assign_tag__,T const>::type`]
+ [ ['(3)] ]
+ ]
+]
+
+[*Semantics]: TODO
+
+[heading Header]
+
+ __header_ref__
+
+[heading Alternative syntax]
+
+[table
+ [ [Expression1] [Expression2]]
+ [
+ [``
+ __ns_ref__::__ref_csv_anon__<__ns_ref__::__ref_assign_tag__::copy>( __value__ );
+ ``]
+ [``
+ __ns_ref__::__ns_ref_assign_copy__::__ref_csv_anon__( __value__ );
+ ``]
+ ]
+ [
+ [``
+ __ns_ref__::__ref_anon__<__ns_ref__::__ref_assign_tag__::assign>( __value__ );
+ ``]
+ [``
+ __ns_ref__::__ns_ref_assign_rebind__::__ref_csv_anon__( __value__ );
+ ``]
+ ]
+]
+
+[heading Model of]
+
+`__concept_csv__`
+
+[heading Design]
+
+Recall that `__link_ref_anon__` returns an object with a dual syntax: `__concept_k_ary__` and
+`__concept_csv__`. In the `__ns_ref__` framework, `_ns_ref__::__link_ref_anon__` returns a `__concept_unary__`
+object and `__ns_ref__::__link_ref_csv_anon__`, itself modeling `__concept_csv__`, returns an `__array__` of
+references. This separation of interface achieves better speed in constructing the objects.
+
+[heading Example]
+
+[table
+ [ [Expression] [Designation]]
+ [
+ [ `__ns_ref__::__ref_csv_anon__<int const>( __nil__ )( 1 )( 2 )( 3 );` ]
+ [ ['(1)] ]
+ ]
+ [
+ [``
+ int __arg_0__, __arg_1__, __arg_2__;
+ __ns_ref__::__ref_csv_anon__( __arg_0__ )( __arg_1__ )( __arg_2__ );
+ ``]
+ [ ['(2)] ]
+ ]
+ [
+ [ `__ns_ref__::__ref_csv_anon__( 1 )( 2 )( 3 )` ]
+ [ ['(3)] ]
+ ]
+]
+
+[endsect] [/ ref::__csv_anon__]
+[endsect] [/ Function]
+[section Keyword]
+[section:deduce `__deduce__`]
+[heading Expression Semantics]
+``
+ __object__ % __deduce__;
+``
+[*Return type] __implementation_defined__
+
+[*Semantics] __unspecified__
+
+[heading Header]
+``
+ __header_keywords__
+``
+[endsect] [/deduce]
+[section:fun `__fun__`]
+[heading Expression Semantics]
+``
+ __object__ % ( __fun__ = f);
+``
+
+[*Return type] __implementation_defined__
+
+[*Semantics] __unspecified__
+
+[heading Header]
+``
+ __header_keywords__
+``
+[endsect] [/fun]
+[section:nil `__nil__`]
+[heading Expression Semantics]
+``
+ f( __nil__ );
+``
+
+[*Return type] __implementation_defined__
+
+[*Semantics] __unspecified__
+
+[heading Header]
+``
+ __header_keywords__
+``
+[endsect] [/nil ]
+[section:unwrap `__unwrap__`]
+[heading Expression Semantics]
+``
+ __unspecified__
+``
+
+[*Return type] __implementation_defined__
+
+[*Semantics] __unspecified__
+
+[heading Header]
+``
+ __header_keywords__
+``
+[endsect] [/unwrap ]
+[section:incr_lookup `__incr_lookup__`]
+[heading Expression Semantics]
+``
+ __unspecified__
+``
+[*Return type] __implementation_defined__
+
+[*Semantics] __unspecified__
+
+[heading Header]
+``
+ __header_keywords__
+``
+[endsect][/incr_lookup ]
+[section:repeat `__repeat__`]
+[heading Expression Semantics]
+``
+ __object__ % ( __repeat__ = n);
+``
+
+[*Return type] __implementation_defined__
+
+[*Semantics] __unspecified__
+
+[heading Header]
+``
+ __header_keywords__
+``
+[endsect] [/repeat ]
+[section:put_kwd `__put_kwd__`]
+[heading Expression Semantics]
+``
+ __object__ % (__put_kwd__ = __put_tag__());
+``
+
+[*Return type] __implementation_defined__
+
+[*Semantics] Selects a container modifier.
+
+[table Candidate tags.
+ [[Name]]
+ [[`__ns_put_tag__::at_next`]]
+ [[`__ns_put_tag__::insert`]]
+ [[`__ns_put_tag__::push`]]
+ [[`__ns_put_tag__::push_back`]]
+]
+
+[heading Header]
+``
+ __header_put__
+``
+
+[heading Example]
+``
+ __object__ % ( __put_kwd__ = __ns_put_tag__::push() );
+``
+[endsect] [/ put_tag ]
+[endsect] [/ Keyword]
+[endsect] [/ Reference]
+[section Portability ]
+
+[heading Methodology]
+
+For each of a set of containers (see below), ensure
+
+* At compile time, that the method deduced for modifying the container agrees with one that
+ is explicitly specified. For example, it verifies that `push()` is the method used for
+ `std::__queue__<>`.
+
+* At runtime time, that the container returned by
+``
+ __link_convert__<To>( from );
+``
+has the same elements as that of `from`, where `To` is the type of the container being tested.
+
+[heading Containers tested]
+
+[table
+ [[Container]]
+ [[`boost::__array__<>`]]
+ [[`std::__deque__<>`]]
+ [[`std::__list__<>`]]
+ [[`std::__queue__<>`]]
+ [[`std::__set__<>`]]
+ [[`std::__stack__<>`]]
+ [[`std::__vec__<>`]]
+]
+
+[heading Test results]
+
+[table
+ [[OS][Compiler][__boost__ version][Date ][Result]]
+ [[Mac OS X v10.6][GCC 4.2][[^1.41]][August 2nd, 2010][Passed]]
+]
+
+[heading Dependencies]
+
+A previously avalaible set of files in the Vault, for chaining, by RangeEx, are made
+temporarily available [@http://svn.boost.org/svn/boost/sandbox/statistics/support/boost/range/ here]
+and need to be in the search path.
+
+[endsect] [/ Portability]
+[section Bug]
+
+* Copying to `__link_chain__`\ ed ranges of [tpl_sec_ref_assign_semantics references] works with `__array__<>` as input, but not, for example,
+ `__vec__<>`.
+
+[endsect] [/ Bug]
+[section Feature request]
+
+* Pointers
+* [@http://old.nabble.com/Re%3A--mini-review--Update-of-Boost.Assign-%2813th-19th-of-June%29-p28899870.html Perfect forwarding]
+
+[endsect] [/ Feature request ]
+[section Change log]
+
+[heading Upgrading from Boost. v['1.4x]]
+
+* This upgrade to __boost_assign_v2__ represents a complete overhaul and is completely independent
+from the previous version. The new features are in __local_boost_dir__, and accordingly, a new
+namespace was created:
+
+``
+ using namespace boost::assign::v2;
+``
+
+* The latest version prior to __boost_assign_v2__ will continue to be supported in __boost__
+for backward compatibility purposes, and also because Boost.Assign v2 still needs to be developed
+in some areas such as pointers.
+
+* The change to __boost_assign_v2__ comes about with the proposal for the addition of two new features,
+namely chaining ranges and (more advanced) anonymous containers of references. However, it came to
+light during the [@http://lists.boost.org/Archives/boost/2010/06/168028.php mini-review],
+that the new and existing features seemed redundant or lacked homogeneity in their interface
+and therefore called for a little more than a tune up.
+
+[endsect][/Change log]
+[section Support]
+For questions or feature request, post to the __user_mailing_list__, but also make sure to reach
+__TO__ and __ER__ by CCing them.
+[endsect]
+[section History and acknowledgement]
+
+The idea for an assignment/initialization library is not new. The functionality of this library
+resembles Leor Zolman's STL Container Initialization Library a great deal, but it does not rely on
+string parsing to achieve its goals.
+
+Special thanks go to
+
+* Leor Zolman for our many discussion that eventually led to this library.
+* Tom Brinkman for being review manager.
+* Joaquín Muñoz for vc6/vc7 portability.
+* Pavel Vozenilek for his countless suggestions, improvements and portability fixes.
+* Rene Rivera for Code Warrior portability.
+* Manuel Peinado Gallego for identifying the need for anonymous container of references,
+ his valuable advice throughout their development, and proposing a [@http://gist.github.com/287791 design]
+ that laid the foundation for chaining. Both features were introduced with Boost.Assign v2.
+
+[endsect] [/Ackowledgement]
+[section Bibliography]
+
+* Scott. Meyers, "More Effective C++", Item 7, Addison Wesley, 1996
+* K. Czarnecki and U.W. Eisenecker, "Generative programming", Addison-Wesley, 2000
+* [@http://www.oonumerics.org/blitz/ http://www.oonumerics.org/blitz/]
+* Gabriel Dos Reis and Bjarne Stroustrup,
+ [@http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1509.pdf Generalized Initializer Lists], 2003
+* Abrahams, David and Gurtovoy, Aleksey,
+ [@http://portal.acm.org/citation.cfm?id=1044941#
+ C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)],
+ 2004, Addison-Wesley Professional.
+
+[endsect] [/ Bibliography]
+[endsect] [/ dummy encloser]

Added: sandbox/statistics/support/libs/assign/v2/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/doc/html/index.html 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,4300 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter&#160;1.&#160;Boost.Assign 2.0</title>
+<link rel="stylesheet" href="/usr/local/trunk/libs/non_parametric/doc/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Chapter&#160;1.&#160;Boost.Assign 2.0">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"></div>
+<div class="chapter" title="Chapter&#160;1.&#160;Boost.Assign 2.0">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost_assign_v2"></a>Chapter&#160;1.&#160;Boost.Assign 2.0</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Ottosen</span> <span class="surname">Thorsten</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Erwann</span> <span class="surname">Rogard</span>
+</h3></div></div>
+<div><p class="copyright">Copyright &#169; 2003 -2004 Thorsten Ottosen, 2010 Erwann Rogard</p></div>
+<div><div class="legalnotice" title="Legal Notice">
+<a name="id36154309"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">_</span></dt>
+<dd><dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Notation</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.putting_elements_into_to_a_container">Putting
+ elements into to a container</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.anonymous_container__of_values__">Anonymous
+ container (of values) </a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.anonymous_container_of_references">Anonymous
+ container of references</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.chaining_ranges">Chaining
+ ranges</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.running_the_code">Running
+ the code</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.library_interface_and_design">Library
+ interface and design</a></span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Concept</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.ref_assign">
+ Reference assignment</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.container_convertible">
+ <code class="literal">ContainerConvertible</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.fun_syntax">
+ Function syntax</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.range_lvalue">
+ <code class="computeroutput">RangeLvalue</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Configuration</span></dt>
+<dt><span class="section">Class</span></dt>
+<dd><dl>
+<dt><span class="section"> anon_aux::cont</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.put_wrapper">
+ <code class="computeroutput">put_aux::put_wrapper</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_anon_cont">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::cont</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::fast_alloc</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_interface">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::interface</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Function</span></dt>
+<dd><dl>
+<dt><span class="section"> anon</span></dt>
+<dt><span class="section"> _chain</span></dt>
+<dt><span class="section"> convert</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.constructor">
+ <code class="computeroutput">constructor</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.put_range">
+ <code class="computeroutput">put_range</code></a></span></dt>
+<dt><span class="section"> put</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_anon">
+ <code class="computeroutput">ref<span class="special">::</span>anon</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_csv_anon">
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Keyword</span></dt>
+<dd><dl>
+<dt><span class="section"> _deduce</span></dt>
+<dt><span class="section"> _fun</span></dt>
+<dt><span class="section"> _nil</span></dt>
+<dt><span class="section"> _unwrap</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.keyword.incr_lookup">
+ <code class="computeroutput">_incr_lookup</code></a></span></dt>
+<dt><span class="section"> _repeat</span></dt>
+<dt><span class="section"> _put_tag</span></dt>
+</dl></dd>
+</dl></dd>
+<dt><span class="section">Portability </span></dt>
+<dt><span class="section">Bug</span></dt>
+<dt><span class="section">Feature request</span></dt>
+<dt><span class="section">Change log</span></dt>
+<dt><span class="section">Support</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.history_and_acknowledgement">History
+ and acknowledgement</a></span></dt>
+<dt><span class="section">Bibliography</span></dt>
+</dl></dd>
+</dl>
+</div>
+<div class="section" title="_">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_assign_v2._"></a><a class="link" href="index.html#boost_assign_v2._" title="_">_</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Notation</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.putting_elements_into_to_a_container">Putting
+ elements into to a container</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.anonymous_container__of_values__">Anonymous
+ container (of values) </a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.anonymous_container_of_references">Anonymous
+ container of references</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.chaining_ranges">Chaining
+ ranges</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.running_the_code">Running
+ the code</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.library_interface_and_design">Library
+ interface and design</a></span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Concept</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.ref_assign">
+ Reference assignment</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.container_convertible">
+ <code class="literal">ContainerConvertible</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.fun_syntax">
+ Function syntax</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.range_lvalue">
+ <code class="computeroutput">RangeLvalue</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Configuration</span></dt>
+<dt><span class="section">Class</span></dt>
+<dd><dl>
+<dt><span class="section"> anon_aux::cont</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.put_wrapper">
+ <code class="computeroutput">put_aux::put_wrapper</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_anon_cont">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::cont</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::fast_alloc</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_interface">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::interface</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Function</span></dt>
+<dd><dl>
+<dt><span class="section"> anon</span></dt>
+<dt><span class="section"> _chain</span></dt>
+<dt><span class="section"> convert</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.constructor">
+ <code class="computeroutput">constructor</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.put_range">
+ <code class="computeroutput">put_range</code></a></span></dt>
+<dt><span class="section"> put</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_anon">
+ <code class="computeroutput">ref<span class="special">::</span>anon</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_csv_anon">
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Keyword</span></dt>
+<dd><dl>
+<dt><span class="section"> _deduce</span></dt>
+<dt><span class="section"> _fun</span></dt>
+<dt><span class="section"> _nil</span></dt>
+<dt><span class="section"> _unwrap</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.keyword.incr_lookup">
+ <code class="computeroutput">_incr_lookup</code></a></span></dt>
+<dt><span class="section"> _repeat</span></dt>
+<dt><span class="section"> _put_tag</span></dt>
+</dl></dd>
+</dl></dd>
+<dt><span class="section">Portability </span></dt>
+<dt><span class="section">Bug</span></dt>
+<dt><span class="section">Feature request</span></dt>
+<dt><span class="section">Change log</span></dt>
+<dt><span class="section">Support</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.history_and_acknowledgement">History
+ and acknowledgement</a></span></dt>
+<dt><span class="section">Bibliography</span></dt>
+</dl></div>
+<div class="section" title="Introduction">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.introduction"></a><a class="link" href="index.html#boost_assign_v2._.introduction" title="Introduction">Introduction</a>
+</h3></div></div></div>
+<p>
+ This library offers a uniform interface for initializing or assigning containers,
+ and working with collections of references. The relevant directory structure
+ is rooted <code class="literal">boost/assign/v2</code>. Each directory in this structure
+ contains an <code class="literal">.hpp</code> file by the same name which includes
+ all its relevant files. We assume, throughout this documentation, that
+ </p>
+<pre class="programlisting">#include <boost/assert.hpp>
+#include <boost/range.hpp>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/assign/v2<span class="special">/</span><span class="identifier">v2</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> boost::assign::v2<span class="special">;</span>
+</pre>
+<p>
+ precedes all C++ statements.
+ </p>
+</div>
+<div class="section" title="Notation">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.notation"></a><a class="link" href="index.html#boost_assign_v2._.notation" title="Notation">Notation</a>
+</h3></div></div></div>
+<p>
+ To represent an <code class="computeroutput">object</code> and its type, we use the convention that
+ is implicit below:
+ </p>
+<pre class="programlisting">object_ object<span class="special">;</span>
+</pre>
+<div class="table">
+<a name="boost_assign_v2._.notation.symbols"></a><p class="title"><b>Table&#160;1.1.&#160;Symbols</b></p>
+<div class="table-contents"><table class="table" summary="Symbols">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Symbol
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">v</code>
+ </p>
+ </td>
+<td>
+ <p>
+ A container of unspecified type
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">t</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Element in a container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">f</code>
+ </p>
+ </td>
+<td>
+ <p>
+ A function
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">object</code>
+ </p>
+ </td>
+<td>
+ <p>
+ An object returned by a function
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">p</code>
+ </p>
+ </td>
+<td>
+ <p>
+ A parameter to an object
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">x</code>
+ </p>
+ </td>
+<td>
+ <p>
+ An argument to a function
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">a</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Argument in the first call to a function
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">b</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Argument in the second call to a function
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">c</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Argument in the third call to a function
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_assign_v2._.notation.expressions"></a><p class="title"><b>Table&#160;1.2.&#160;Expressions</b></p>
+<div class="table-contents"><table class="table" summary="Expressions">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"> i = 0, ..., n-1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Indexes a sequences of <code class="computeroutput">t</code>'s
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> j = 0, ..., k-1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Indexes arguments in a function call
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> k[i] </code>
+ </p>
+ </td>
+<td>
+ <p>
+ Number of arguments of the i th functional call
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> <code class="computeroutput">x</code>[i,j]</code>
+ </p>
+ </td>
+<td>
+ <p>
+ j th argument of the i th functional call
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> <code class="computeroutput">a</code>[j] </code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"> <code class="computeroutput">x</code>[0,j]</code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> <code class="computeroutput">b</code>[j] </code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"> <code class="computeroutput">x</code>[1,j]</code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> <code class="computeroutput">c</code>[j] </code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"> <code class="computeroutput">x</code>[2,j]</code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If <code class="literal">k = 0</code>, in the context of a function call, it means
+ that <code class="computeroutput"><span class="identifier">f</span><span class="special">()</span></code>
+ is called. In the context of constructing <code class="computeroutput">t</code>, <code class="computeroutput">t_<span class="special">()</span></code> is called.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section" title="Tutorial">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.tutorial"></a><a class="link" href="index.html#boost_assign_v2._.tutorial" title="Tutorial">Tutorial</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.putting_elements_into_to_a_container">Putting
+ elements into to a container</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.anonymous_container__of_values__">Anonymous
+ container (of values) </a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.anonymous_container_of_references">Anonymous
+ container of references</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.chaining_ranges">Chaining
+ ranges</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.tutorial.running_the_code">Running
+ the code</a></span></dt>
+</dl></div>
+<div class="section" title="Putting elements into to a container">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.tutorial.putting_elements_into_to_a_container"></a><a class="link" href="index.html#boost_assign_v2._.tutorial.putting_elements_into_to_a_container" title="Putting elements into to a container">Putting
+ elements into to a container</a>
+</h4></div></div></div>
+<p>
+ All three expressions in each row have the same side effect:
+ </p>
+<div class="table">
+<a name="boost_assign_v2._.tutorial.putting_elements_into_to_a_container.elementwise"></a><p class="title"><b>Table&#160;1.3.&#160;Elementwise</b></p>
+<div class="table-contents"><table class="table" summary="Elementwise">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression1
+ </p>
+ </th>
+<th>
+ <p>
+ Expression2
+ </p>
+ </th>
+<th>
+ <p>
+ Expression3
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting">queue<span class="special">.</span><span class="identifier">push</span><span class="special">(</span>a<span class="special">);</span>
+queue<span class="special">.</span><span class="identifier">push</span><span class="special">(</span> t_<span class="special">()</span> <span class="special">);</span>
+queue<span class="special">.</span><span class="identifier">push</span><span class="special">(</span> t<span class="special">(</span> c<span class="special">[</span><span class="number">0</span><span class="special">],</span> c<span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting"><a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a><span class="special">(</span> queue <span class="special">)</span>
+ <span class="special">.</span>csv<span class="special">(</span> a <span class="special">)(</span> t_<span class="special">()</span> <span class="special">)(</span> t<span class="special">(</span> c<span class="special">[</span><span class="number">0</span><span class="special">],</span> c<span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span> <span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting"><a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a><span class="special">(</span> queue <span class="special">)</span>
+ <span class="special">(</span> a <span class="special">)()(</span> c<span class="special">[</span><span class="number">0</span><span class="special">],</span> c<span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting">map<span class="special">[</span> a <span class="special">]</span> <span class="special">+=</span><span class="number">2</span> <span class="special">;</span>
+<span class="special">++</span>map<span class="special">[</span> b <span class="special">];</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting"><span class="special">(</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a><span class="special">(</span> map <span class="special">)</span> <span class="special">%</span> <a class="link" href="index.html#boost_assign_v2._.reference.keyword.incr_lookup" title="_incr_lookup">_incr_lookup</a><span class="special">)</span>
+ <span class="special">.</span>csv<span class="special">(</span> a<span class="special">,</span> b<span class="special">,</span> a <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting"><span class="special">(</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a><span class="special">(</span> map <span class="special">)</span>
+ <span class="special">(</span> b <span class="special">)</span> <span class="special">%</span> <a class="link" href="index.html#boost_assign_v2._.reference.keyword.incr_lookup" title="_incr_lookup">_incr_lookup</a> <span class="special">%</span> <span class="special">(</span> <a class="link" href="index.html#boost_assign_v2._.reference.keyword.repeat" title="_repeat">_repeat</a> <span class="special">=</span> <span class="number">2</span> <span class="special">)</span> <span class="special">)(</span> a <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting">deque<span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> tuple_<span class="special">(</span> a<span class="special">[</span><span class="number">0</span><span class="special">],</span> a<span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span> <span class="special">);</span>
+deque<span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> tuple_<span class="special">(</span> b<span class="special">[</span><span class="number">0</span><span class="special">],</span> a<span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span> <span class="special">);</span>
+deque<span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> tuple_<span class="special">(</span> c<span class="special">[</span><span class="number">0</span><span class="special">],</span> a<span class="special">[</span><span class="number">1</span><span class="special">])</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> boost::lambda<span class="special">;</span>
+<span class="special">(</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a><span class="special">(</span> deque <span class="special">)</span> <span class="special">%</span> <span class="special">(</span> <span class="identifier">_fun</span> <span class="special">=</span> <span class="identifier">bind</span><span class="special">&lt;</span>tuple_<span class="special">&gt;(</span>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.constructor" title="constructor">constructor</a><span class="special">&lt;</span>tuple_<span class="special">&gt;(),</span> <span class="identifier">_1</span><span class="special">,</span> a<span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span>
+<span class="special">)</span> <span class="special">)(</span> a<span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">)(</span> b<span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">)(</span> c<span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Elements are passed by <a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">reference</a>.
+ In the example involving a <code class="computeroutput">tuple</code>,
+ it may have, for example, an lvalue and a <code class="computeroutput"><span class="keyword">const</span></code>
+ reference as its elements.
+ </p></td></tr>
+</table></div>
+<p>
+ To pass a <code class="computeroutput">Range</code>,
+ <code class="computeroutput"><span class="identifier">from</span></code>, to an arbitrary container,
+ <code class="computeroutput"><span class="identifier">to</span></code>,
+</p>
+<pre class="programlisting"><a class="link" href="index.html#boost_assign_v2._.reference.function.put_range" title="put_range">put_range</a><span class="special">(</span> <span class="identifier">from</span><span class="special">,</span> <span class="identifier">to</span> <span class="special">);</span>
+</pre>
+<p>
+ To assign a <code class="computeroutput">Range</code>
+ to a container,
+</p>
+<pre class="programlisting"><span class="identifier">to</span> <span class="special">=</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.convert" title="convert">convert</a><span class="special">&lt;</span><span class="identifier">To</span><span class="special">&gt;(</span> <span class="identifier">from</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="Anonymous container (of values)">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.tutorial.anonymous_container__of_values__"></a><a class="link" href="index.html#boost_assign_v2._.tutorial.anonymous_container__of_values__" title="Anonymous container (of values)">Anonymous
+ container (of values) </a>
+</h4></div></div></div>
+<p>
+ An anonymous container is created by using the same interface as that of
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a></code>
+ and has most of the functionality of <code class="computeroutput">deque_</code>
+ plus the conversion capability (See <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">ContainerConvertible</a></code>).
+ For assignment,
+</p>
+<pre class="programlisting"><span class="identifier">to</span> <span class="special">=</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.anon" title="anon">anon</a><span class="special">(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">);</span>
+</pre>
+<p>
+ To copy-construct <code class="computeroutput"><span class="identifier">to</span></code>,
+</p>
+<pre class="programlisting"><span class="identifier">To</span> <span class="identifier">to</span> <span class="special">=</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.anon" title="anon">anon</a><span class="special">(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">).</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">convert</a><span class="special">&lt;</span><span class="identifier">To</span><span class="special">&gt;();</span>
+</pre>
+<p>
+ To be able to use <code class="computeroutput"><span class="keyword">operator</span><span class="special">%</span></code>,
+</p>
+<pre class="programlisting"><span class="special">(</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.anon" title="anon">anon</a><span class="special">&lt;</span>t_<span class="special">&gt;(</span> _nil <span class="special">)</span> <span class="special">%</span> <span class="special">(</span>_repeat <span class="special">=</span> <span class="identifier">n</span> <span class="special">)</span> <span class="special">)(</span> <span class="identifier">a</span> <span class="special">)(</span> <span class="identifier">b</span> <span class="special">)(</span> <span class="identifier">c</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="Anonymous container of references">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.tutorial.anonymous_container_of_references"></a><a class="link" href="index.html#boost_assign_v2._.tutorial.anonymous_container_of_references" title="Anonymous container of references">Anonymous
+ container of references</a>
+</h4></div></div></div>
+<p>
+ The <code class="computeroutput">array</code>
+ returned by
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> ref<span class="special">;</span>
+<a class="link" href="index.html#boost_assign_v2._.reference.function.anon" title="anon">anon</a><span class="special">&lt;</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a><span class="special">&gt;(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">);</span>
+</pre>
+<p>
+ dereferences to <code class="computeroutput">a</code>, <code class="computeroutput">b</code>, and <code class="computeroutput">c</code>, respectively.
+ Clearly only <a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">unary
+ function</a> calls are allowed, but there is a <a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">csv
+ counterpart</a> as well (see below). The template argument <code class="computeroutput"><em class="replaceable"><code>ref-assign-tag</code></em></code>
+ specifies <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">reference
+ assign semantics</a>. Rather than specifying <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a></code>,
+ it is equivalent to use a dedicated <code class="computeroutput"><span class="keyword">namespace</span></code>.
+ For <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">copy
+ semantics</a>,
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> ref<span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> assign_copy<span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span> v <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon" title="ref::anon">anon</a><span class="special">(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">)</span> <span class="special">)</span> <span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span> a <span class="special">==</span> v<span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span> c <span class="special">==</span> v<span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">);</span>
+</pre>
+<p>
+ For <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">rebind
+ semantics</a>,
+</p>
+<pre class="programlisting">#include <boost/typeof/typeof.hpp>
+<span class="keyword">using</span> <span class="keyword">namespace</span> ref<span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> assign_rebind<span class="special">;</span>
+<span class="identifier">BOOST_AUTO</span><span class="special">(</span> <span class="identifier">tmp</span><span class="special">,</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon" title="ref::anon">csv_anon</a><span class="special">(</span> a <span class="special">,</span> b <span class="special">)</span> <span class="special">);</span>
+<span class="identifier">tmp</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span> c <span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span> <span class="special">&amp;</span><span class="identifier">tmp</span><span class="special">[</span> <span class="number">0</span> <span class="special">]</span> <span class="special">==</span> <span class="special">&amp;</span>c <span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span> <span class="special">&amp;</span><span class="identifier">tmp</span><span class="special">[</span> <span class="number">1</span> <span class="special">]</span> <span class="special">==</span> <span class="special">&amp;</span>c <span class="special">);</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="Chaining ranges">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.tutorial.chaining_ranges"></a><a class="link" href="index.html#boost_assign_v2._.tutorial.chaining_ranges" title="Chaining ranges">Chaining
+ ranges</a>
+</h4></div></div></div>
+<p>
+ To assign from chained ranges:
+</p>
+<pre class="programlisting"><span class="identifier">to</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">r1</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.chain" title="_chain">&amp;&amp;</a> <span class="identifier">r2</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.chain" title="_chain">&amp;&amp;</a> <span class="identifier">r3</span><span class="special">).</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">convert</a><span class="special">&lt;</span><span class="identifier">To</span><span class="special">&gt;();</span>
+</pre>
+<p>
+ Chaining is elementwise-lvalue preserving:
+</p>
+<pre class="programlisting">#include <boost/typeof/typeof.hpp>
+<span class="keyword">using</span> <span class="keyword">namespace</span> ref<span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> assign_copy<span class="special">;</span>
+<span class="identifier">BOOST_AUTO</span><span class="special">(</span> <span class="identifier">tmp</span><span class="special">,</span> anon<span class="special">(</span> a <span class="special">)(</span> b <span class="special">)</span> <span class="special">);</span>
+<span class="identifier">copy</span><span class="special">(</span> <span class="identifier">v</span> <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span> <span class="identifier">tmp</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.chain" title="_chain">&amp;&amp;</a> <a class="link" href="index.html#boost_assign_v2._.reference.function.anon" title="anon">anon</a><span class="special">(</span> c <span class="special">)</span> <span class="special">)</span> <span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span> a <span class="special">==</span> v<span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span> b <span class="special">==</span> v<span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span> c <span class="special">==</span> v<span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">);</span>
+</pre>
+<p>
+ The fact that <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon" title="ref::anon">anon</a><span class="special">(</span> c <span class="special">)</span></code>, above,
+ returns an rvalue should underscore the significance of <span class="emphasis"><em>elementwise</em></span>
+ in our previous statement. See <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.range_lvalue" title="RangeLvalue">RangeLvalue</a></code>.
+ Continuing our example,
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">tmp</span><span class="special">.</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">convert</a><span class="special">&lt;</span>v_<span class="special">&gt;();</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="Running the code">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.tutorial.running_the_code"></a><a class="link" href="index.html#boost_assign_v2._.tutorial.running_the_code" title="Running the code">Running
+ the code</a>
+</h4></div></div></div>
+<p>
+ The file below contains similar material,
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;libs/assign/v2/example/tutorial.cpp&gt;
+</pre>
+<p>
+ </p>
+<p>
+ and is be executed like this:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;libs/assign/v2/example/tutorial.h&gt;
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">example_assign_v2</span><span class="special">;</span>
+ <span class="identifier">xxx_tutorial</span><span class="special">::</span><span class="identifier">run</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<div class="section" title="Library interface and design">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.library_interface_and_design"></a><a class="link" href="index.html#boost_assign_v2._.library_interface_and_design" title="Library interface and design">Library
+ interface and design</a>
+</h3></div></div></div>
+<p>
+ Functions are the primary interface by which the user interacts with the
+ library. From an implementation standpoint, however, it is the object that
+ they return that are responsible for performing the desired task. This relationship
+ is formalized as follows:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Interface
+ </p>
+ </th>
+<th>
+ <p>
+ Implementation
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">fun</span><span class="special">(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">fun_nil</span><span class="special">&lt;</span>t_<span class="special">&gt;::</span><span class="identifier">type</span> object <span class="special">=</span> <span class="identifier">fun</span><span class="special">&lt;</span>t_<span class="special">&gt;(</span> _nil <span class="special">);</span>
+object<span class="special">(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<p>
+ To avoid passing to functions many, in fact any, parameters that would confuse
+ the user and cause the developer a headache, the library usually deduces
+ the parameters from its input using traits. Considering, for example, the
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a><span class="special">()</span></code> functionality, the library, by default,
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ For creating each element, calls a functor, <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.function.constructor" title="constructor">constructor</a><span class="special">&lt;</span>t<span class="special">&gt;()</span></code>,
+ overloaded on the number and lvalue/<code class="computeroutput"><span class="keyword">const</span></code>-ness
+ of its arguments (see <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">K-Ary</a></code>).
+ </li>
+<li class="listitem">
+ A traits decides which modifier (such as <code class="computeroutput"><span class="identifier">push_back</span><span class="special">()</span></code>) to use given certain properties of the
+ container. For example, if the container has <code class="computeroutput"><span class="identifier">push</span><span class="special">()</span></code> it takes precedence over <code class="computeroutput"><span class="identifier">push_back</span><span class="special">()</span></code>.
+ </li>
+</ul></div>
+<p>
+ For example, the side effect of
+</p>
+<pre class="programlisting"><span class="identifier">put</span><span class="special">(</span> <span class="identifier">map</span> <span class="special">)(</span> <span class="identifier">key1</span><span class="special">,</span> <span class="identifier">a</span> <span class="special">)(</span> <span class="identifier">key2</span><span class="special">,</span> <span class="identifier">b</span> <span class="special">)(</span> <span class="identifier">key3</span><span class="special">,</span> <span class="identifier">c</span> <span class="special">)</span>
+</pre>
+<p>
+ is identical to that of
+</p>
+<pre class="programlisting"><span class="identifier">map</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span> <span class="identifier">make_pair</span><span class="special">(</span> <span class="identifier">key1</span><span class="special">,</span> <span class="identifier">a</span> <span class="special">)</span> <span class="special">);</span>
+<span class="identifier">map</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span> <span class="identifier">make_pair</span><span class="special">(</span> <span class="identifier">key2</span><span class="special">,</span> <span class="identifier">b</span> <span class="special">)</span> <span class="special">);</span>
+<span class="identifier">map</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span> <span class="identifier">make_pair</span><span class="special">(</span> <span class="identifier">key3</span><span class="special">,</span> <span class="identifier">c</span> <span class="special">)</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ The deduced parameters that we have just discussed can be selectively overriden
+ with <code class="computeroutput"><span class="keyword">operator</span><span class="special">%</span></code>
+ taking as its first argument the result of the function, and a <span class="emphasis"><em>keyword</em></span>.
+ A keyword is a <code class="computeroutput"><span class="keyword">const</span></code> object
+ defined in an anonymous namespace whose identifier has prefix <code class="computeroutput"><span class="identifier">_</span></code>. Here's the generic form
+</p>
+<pre class="programlisting">object <span class="special">%</span> <span class="identifier">_keyword</span><span class="special">;</span>
+</pre>
+<p>
+ or
+</p>
+<pre class="programlisting">object <span class="special">%</span> <span class="special">(</span><span class="identifier">_keyword</span> <span class="special">=</span> p<span class="special">);</span>
+</pre>
+<p>
+ Operators are usually composable e.g.
+</p>
+<pre class="programlisting"><span class="identifier">object</span> <span class="special">%</span> <span class="identifier">_keyword1</span> <span class="special">%</span> <span class="special">(</span><span class="identifier">_keyword2</span> <span class="special">=</span> p<span class="special">);</span>
+</pre>
+<p>
+ In each case, the operation may return a reference to the same <code class="computeroutput">object</code>,
+ but with a different state, or a new object of a different type altogether,
+ thereby modifying the semantics of subequent calls to the object. For example,
+
+</p>
+<pre class="programlisting"><span class="special">(</span><a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put">put</a><span class="special">(</span> map <span class="special">)</span> <span class="special">%</span> _incr_lookup<span class="special">)(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">)</span>
+</pre>
+<p>
+ </p>
+<p>
+ is equivalent to
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="special">++</span> map <span class="special">[</span> a <span class="special">];</span> <span class="special">++</span> map <span class="special">[</span> b <span class="special">];</span> <span class="special">++</span> map <span class="special">[</span> c <span class="special">];</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="Reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.reference"></a><a class="link" href="index.html#boost_assign_v2._.reference" title="Reference">Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Concept</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.ref_assign">
+ Reference assignment</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.container_convertible">
+ <code class="literal">ContainerConvertible</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.fun_syntax">
+ Function syntax</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.range_lvalue">
+ <code class="computeroutput">RangeLvalue</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Configuration</span></dt>
+<dt><span class="section">Class</span></dt>
+<dd><dl>
+<dt><span class="section"> anon_aux::cont</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.put_wrapper">
+ <code class="computeroutput">put_aux::put_wrapper</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_anon_cont">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::cont</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::fast_alloc</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_interface">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::interface</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Function</span></dt>
+<dd><dl>
+<dt><span class="section"> anon</span></dt>
+<dt><span class="section"> _chain</span></dt>
+<dt><span class="section"> convert</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.constructor">
+ <code class="computeroutput">constructor</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.put_range">
+ <code class="computeroutput">put_range</code></a></span></dt>
+<dt><span class="section"> put</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_anon">
+ <code class="computeroutput">ref<span class="special">::</span>anon</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_csv_anon">
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon</code></a></span></dt>
+</dl></dd>
+<dt><span class="section">Keyword</span></dt>
+<dd><dl>
+<dt><span class="section"> _deduce</span></dt>
+<dt><span class="section"> _fun</span></dt>
+<dt><span class="section"> _nil</span></dt>
+<dt><span class="section"> _unwrap</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.keyword.incr_lookup">
+ <code class="computeroutput">_incr_lookup</code></a></span></dt>
+<dt><span class="section"> _repeat</span></dt>
+<dt><span class="section"> _put_tag</span></dt>
+</dl></dd>
+</dl></div>
+<div class="section" title="Concept">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.reference.concept"></a><a class="link" href="index.html#boost_assign_v2._.reference.concept" title="Concept">Concept</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.ref_assign">
+ Reference assignment</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.container_convertible">
+ <code class="literal">ContainerConvertible</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.fun_syntax">
+ Function syntax</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.concept.range_lvalue">
+ <code class="computeroutput">RangeLvalue</code></a></span></dt>
+</dl></div>
+<div class="section" title="Reference assignment">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.concept.ref_assign"></a><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">
+ Reference assignment</a>
+</h5></div></div></div>
+<p>
+ Let a reference wrapper, <code class="computeroutput">w</code>, binding to some reference <code class="computeroutput"><span class="identifier">y1</span></code> of type <code class="computeroutput">t</code>. Consider
+ assigning it as follows:
+</p>
+<pre class="programlisting">w <span class="special">=</span> <span class="identifier">y2</span><span class="special">;</span>
+</pre>
+<p>
+ where <code class="computeroutput"><span class="identifier">y2</span></code> is also of type
+ <code class="computeroutput">t</code>. There are two possible semantics which are captured by
+ the concepts below:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">AssignCopy</a></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">y1</span> <span class="special">==</span>
+ <span class="identifier">y2</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The bound reference is assigned a new value
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">AssignRebind</a></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special">&amp;</span>w <span class="special">==</span>
+ <span class="special">&amp;</span><span class="identifier">y2</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The reference wrapper binds to a new reference
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" title="ContainerConvertible">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.concept.container_convertible"></a><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">
+ <code class="literal">ContainerConvertible</code></a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">object<span class="special">.</span>convert<span class="special">&lt;</span><span class="identifier">To</span><span class="special">&gt;();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an object of type <code class="computeroutput"><span class="identifier">To</span></code>,
+ initialized with the same elements
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">To</span> <span class="identifier">to</span><span class="special">;</span> <span class="identifier">to</span>
+ <span class="special">=</span> object </code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assigns <code class="computeroutput"><span class="identifier">to</span></code>
+ with the elements of <code class="computeroutput">object</code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" title="Function syntax">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.concept.fun_syntax"></a><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">
+ Function syntax</a>
+</h5></div></div></div>
+<p>
+ In each case below, arguments are passed by reference to <code class="computeroutput">f</code>.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Syntax
+ </p>
+ </th>
+<th>
+ <p>
+ Arity
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">f<span class="special">(</span> x<span class="special">[</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">],</span> <span class="special">...,</span> x<span class="special">[</span><span class="number">0</span><span class="special">,</span>k<span class="special">(</span><span class="number">0</span><span class="special">)-</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span> <span class="special">...</span> <span class="special">(</span> x<span class="special">[</span>n<span class="special">-</span><span class="number">1</span><span class="special">,</span><span class="number">0</span><span class="special">],</span> <span class="special">...,</span> x<span class="special">[</span>n<span class="special">-</span><span class="number">1</span><span class="special">,</span>k<span class="special">(</span>
n<span class="special">-</span><span class="number">1</span><span class="special">)-</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">k [ i ] - 1 &lt; <a class="link" href="index.html#boost_assign_v2._.reference.configuration" title="Configuration">BOOST_ASSIGN_V2_ARITY_BOUND</a>
+ </code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">K-Ary</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">f<span class="special">(</span> x<span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">)</span> <span class="special">...</span> <span class="special">(</span> x<span class="special">[</span>n<span class="special">-</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">j[i] =1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Unary</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">f</span><span class="special">(</span> x<span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="special">...,</span> x<span class="special">[</span>n<span class="special">-</span><span class="number">1</span><span class="special">]</span> <span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">n - 1 &lt; <a class="link" href="index.html#boost_assign_v2._.reference.configuration" title="Configuration">BOOST_ASSIGN_V2_CSV_ARITY_BOUND</a>
+ </code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Csv</a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<div class="table">
+<a name="boost_assign_v2._.reference.concept.fun_syntax.preservation_of_lvalue"></a><p class="title"><b>Table&#160;1.4.&#160;Preservation of lvalue</b></p>
+<div class="table-contents"><table class="table" summary="Preservation of lvalue">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Argument
+ </p>
+ </th>
+<th>
+ <p>
+ Condition
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">K-Ary</a></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">x [ i, j ] </code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">k[ i ] - 1 &lt; <a class="link" href="index.html#boost_assign_v2._.reference.configuration" title="Configuration">BOOST_ASSIGN_V2_LVALUE_CONST_ARITY_BOUND</a>
+ </code> or <code class="literal">x [ i, j ]</code> is lvalue for all
+ <code class="literal">j = 0, ..., k[ i ] - 1 </code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Unary</a></code>
+ and <code class="literal"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Csv</a></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">x [ i ] </code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">x [ i ] </code> is lvalue for all <code class="literal">i =
+ 0, ..., n - 1 </code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section" title="RangeLvalue">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.concept.range_lvalue"></a><a class="link" href="index.html#boost_assign_v2._.reference.concept.range_lvalue" title="RangeLvalue">
+ <code class="computeroutput">RangeLvalue</code></a>
+</h5></div></div></div>
+<p>
+ An function taking as inputs <code class="computeroutput">Range</code>
+ s and returning a <code class="computeroutput">Range</code>
+ models <code class="computeroutput">RangeLvalue</code> if, in case the dereference of each input
+ is lvalue, then so is that of the returned range.
+ </p>
+</div>
+</div>
+<div class="section" title="Configuration">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.reference.configuration"></a><a class="link" href="index.html#boost_assign_v2._.reference.configuration" title="Configuration">Configuration</a>
+</h4></div></div></div>
+<div class="table">
+<a name="boost_assign_v2._.reference.configuration.preprocessor_constants"></a><p class="title"><b>Table&#160;1.5.&#160;Preprocessor constants</b></p>
+<div class="table-contents"><table class="table" summary="Preprocessor constants">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Constant
+ </p>
+ </th>
+<th>
+ <p>
+ Override-able
+ </p>
+ </th>
+<th>
+ <p>
+ Header
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"> <a class="link" href="index.html#boost_assign_v2._.reference.configuration" title="Configuration">BOOST_ASSIGN_V2_ARITY_BOUND</a></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput">#include &lt;boost/assign/v2/detail/config/arity_bound.hpp&gt;</code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> <a class="link" href="index.html#boost_assign_v2._.reference.configuration" title="Configuration">BOOST_ASSIGN_V2_CSV_ARITY_BOUND</a></code>
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput">#include &lt;boost/assign/v2/detail/config/arity_bound.hpp&gt;</code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"> <a class="link" href="index.html#boost_assign_v2._.reference.configuration" title="Configuration">BOOST_ASSIGN_V2_LVALUE_CONST_ARITY_BOUND</a></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput">#include &lt;boost/assign/v2/detail/functor/crtp_unary_and_up.hpp&gt;</code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section" title="Class">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.reference.class"></a><a class="link" href="index.html#boost_assign_v2._.reference.class" title="Class">Class</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> anon_aux::cont</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.put_wrapper">
+ <code class="computeroutput">put_aux::put_wrapper</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_anon_cont">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::cont</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::fast_alloc</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.class.ref_interface">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::interface</code></a></span></dt>
+</dl></div>
+<div class="section" title="anon_aux::cont">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.class.anon_cont"></a><a class="link" href="index.html#boost_assign_v2._.reference.class.anon_cont" title="anon_aux::cont"> <code class="computeroutput">anon_aux::cont</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.class.anon_cont.description"></a><h6>
+<a name="id36159532"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.anon_cont.description">Description</a>
+ </h6>
+<p>
+ An anynymous container.
+ </p>
+<a name="boost_assign_v2._.reference.class.anon_cont.model_of"></a><h6>
+<a name="id36159552"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.anon_cont.model_of">Model
+ of</a>
+ </h6>
+<p>
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">ContainerConvertible</a></code>,
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">K-Ary</a></code>,
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Csv</a></code>
+ with respect to member function <code class="computeroutput">csv<span class="special">()</span></code>.
+ </p>
+<a name="boost_assign_v2._.reference.class.anon_cont.parameters"></a><h6>
+<a name="id36159605"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.anon_cont.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Value
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">F</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A functor that returns <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Tag</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <code class="computeroutput"><em class="replaceable"><code>put-tag</code></em></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.class.anon_cont.header"></a><h6>
+<a name="id36159742"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.anon_cont.header">Header</a>
+ </h6>
+<p>
+ TODO
+ </p>
+</div>
+<div class="section" title="put_aux::put_wrapper">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.class.put_wrapper"></a><a class="link" href="index.html#boost_assign_v2._.reference.class.put_wrapper" title="put_aux::put_wrapper">
+ <code class="computeroutput">put_aux::put_wrapper</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.class.put_wrapper.description"></a><h6>
+<a name="id36159777"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.put_wrapper.description">Description</a>
+ </h6>
+<p>
+ An object that modifies a container by putting elements into it.
+ </p>
+<a name="boost_assign_v2._.reference.class.put_wrapper.model_of"></a><h6>
+<a name="id36159797"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.put_wrapper.model_of">Model
+ of</a>
+ </h6>
+<p>
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">K-Ary</a></code>,
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Csv</a></code>
+ with respect to member function <code class="computeroutput">csv<span class="special">()</span></code>.
+ </p>
+<a name="boost_assign_v2._.reference.class.put_wrapper.parameters"></a><h6>
+<a name="id36159841"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.put_wrapper.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">V</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">F</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A functor that returns the value type of <code class="computeroutput"><span class="identifier">V</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Tag</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <code class="computeroutput"><em class="replaceable"><code>put-tag</code></em></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.class.put_wrapper.header"></a><h6>
+<a name="id36159979"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.put_wrapper.header">Header</a>
+ </h6>
+<p>
+ TODO
+ </p>
+</div>
+<div class="section" title="ref::anon_aux::cont">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.class.ref_anon_cont"></a><a class="link" href="index.html#boost_assign_v2._.reference.class.ref_anon_cont" title="ref::anon_aux::cont">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::cont</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.class.ref_anon_cont.description"></a><h6>
+<a name="id36160018"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_anon_cont.description">Description</a>
+ </h6>
+<p>
+ A container of references.
+ </p>
+<a name="boost_assign_v2._.reference.class.ref_anon_cont.parameters"></a><h6>
+<a name="id36160038"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_anon_cont.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal">N</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Size
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">L</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">Tag1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Controls the <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">reference
+ assign semantics</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">Tag2</code>
+ </p>
+ </td>
+<td>
+ <p>
+ A parameter for a base class
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<div class="table">
+<a name="boost_assign_v2._.reference.class.ref_anon_cont.base"></a><p class="title"><b>Table&#160;1.6.&#160;Base</b></p>
+<div class="table-contents"><table class="table" summary="Base">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ if <code class="literal">Tag2</code> equals
+ </p>
+ </th>
+<th>
+ <p>
+ evaluates to
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput">alloc_tag::lazy_alloc</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.class.ref_interface" title="ref::anon_aux::interface">anon_aux::interface</a></code>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<br class="table-break"><a name="boost_assign_v2._.reference.class.ref_anon_cont.model_of"></a><h6>
+<a name="id36160256"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_anon_cont.model_of">Model
+ of</a>
+ </h6>
+<p>
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Unary</a></code>
+ </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Make sure to look at those of the interface (see above) as well.
+ </p></td></tr>
+</table></div>
+<a name="boost_assign_v2._.reference.class.ref_anon_cont.header"></a><h6>
+<a name="id36160290"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_anon_cont.header">Header</a>
+ </h6>
+<p>
+ TODO
+ </p>
+</div>
+<div class="section" title="ref::anon_aux::fast_alloc">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.class.ref_fast_alloc"></a><a class="link" href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc" title="ref::anon_aux::fast_alloc">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::fast_alloc</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.class.ref_fast_alloc.description"></a><h6>
+<a name="id36160332"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc.description">Description</a>
+ </h6>
+<p>
+ An interface for an array or references.
+ </p>
+<a name="boost_assign_v2._.reference.class.ref_fast_alloc.parameters"></a><h6>
+<a name="id36160352"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal">N</code>
+ </p>
+ </td>
+<td>
+ <p>
+ static size
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">Tag1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Controls the <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">reference
+ assign semantics</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">T</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Value
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.class.ref_fast_alloc.derived_of"></a><h6>
+<a name="id36160472"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc.derived_of">Derived
+ of</a>
+ </h6>
+<p>
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.class.ref_interface" title="ref::anon_aux::interface">anon_aux::interface</a><span class="special">&lt;&gt;</span></code>
+ </p>
+<a name="boost_assign_v2._.reference.class.ref_fast_alloc.model_of"></a><h6>
+<a name="id36160504"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc.model_of">Model
+ of</a>
+ </h6>
+<p>
+ See the base.
+ </p>
+<a name="boost_assign_v2._.reference.class.ref_fast_alloc.header"></a><h6>
+<a name="id36160523"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc.header">Header</a>
+ </h6>
+<p>
+ TODO
+ </p>
+</div>
+<div class="section" title="ref::anon_aux::interface">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.class.ref_interface"></a><a class="link" href="index.html#boost_assign_v2._.reference.class.ref_interface" title="ref::anon_aux::interface">
+ <code class="computeroutput">ref<span class="special">::</span>anon_aux::interface</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.class.ref_interface.description"></a><h6>
+<a name="id36160563"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_interface.description">Description</a>
+ </h6>
+<p>
+ An array or references.
+ </p>
+<a name="boost_assign_v2._.reference.class.ref_interface.parameters"></a><h6>
+<a name="id36160582"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_interface.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal">N</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Size
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">Tag1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Controls the <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">reference
+ assign semantics</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">T</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Value
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">D</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Derived type
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.class.ref_interface.model_of"></a><h6>
+<a name="id36160724"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_interface.model_of">Model
+ of</a>
+ </h6>
+<p>
+ <code class="computeroutput">array</code>,
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">ContainerConvertible</a></code>
+ </p>
+<a name="boost_assign_v2._.reference.class.ref_interface.header"></a><h6>
+<a name="id36160761"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.class.ref_interface.header">Header</a>
+ </h6>
+<p>
+ TODO
+ </p>
+</div>
+</div>
+<div class="section" title="Function">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.reference.function"></a><a class="link" href="index.html#boost_assign_v2._.reference.function" title="Function">Function</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> anon</span></dt>
+<dt><span class="section"> _chain</span></dt>
+<dt><span class="section"> convert</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.constructor">
+ <code class="computeroutput">constructor</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.put_range">
+ <code class="computeroutput">put_range</code></a></span></dt>
+<dt><span class="section"> put</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_anon">
+ <code class="computeroutput">ref<span class="special">::</span>anon</code></a></span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.function.ref_csv_anon">
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon</code></a></span></dt>
+</dl></div>
+<div class="section" title="anon">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.anon"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.anon" title="anon"> <code class="computeroutput">anon</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.anon.description"></a><h6>
+<a name="id36160807"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.anon.description">Description</a>
+ </h6>
+<p>
+ Returns an object of type <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.class.anon_cont" title="anon_aux::cont">anon_aux::cont</a><span class="special">&lt;&gt;</span></code>.
+ </p>
+<a name="boost_assign_v2._.reference.function.anon.synopsis"></a><h6>
+<a name="id36160838"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.anon.synopsis">Synopsis</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Syntax
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> result_of<span class="special">::</span>anon<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span>
+anon<span class="special">(</span> <span class="emphasis"><em>unspecified</em></span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> result_of<span class="special">::</span>anon<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span>
+anon<span class="special">(</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> result_of<span class="special">::</span>anon<span class="special">&lt;</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span>
+anon<span class="special">(</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.anon.parameters"></a><h6>
+<a name="id36161176"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.anon.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ T
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Value to be held by the container returned by <code class="computeroutput">anon</code>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.anon.expression_semantics"></a><h6>
+<a name="id36161265"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.anon.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">anon<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span> _nil <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1) </em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">anon<span class="special">(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span> and <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ <span class="bold"><strong>Return type</strong></span>: <code class="computeroutput">result_of<span class="special">::</span>anon<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code> for each <span class="emphasis"><em>(1)</em></span>,
+ <span class="emphasis"><em>(2)</em></span> and <span class="emphasis"><em>(3)</em></span>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: TODO
+ </p>
+<a name="boost_assign_v2._.reference.function.anon.header"></a><h6>
+<a name="id36161447"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.anon.header">Header</a>
+ </h6>
+<pre class="programlisting">#include &lt;boost/assign/v2/anon/anon.hpp&gt;
+</pre>
+<a name="boost_assign_v2._.reference.function.anon.example"></a><h6>
+<a name="id36161469"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.anon.example">Example</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">anon<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span> _nil <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1) </em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> a<span class="special">;</span> anon<span class="special">(</span> a <span class="special">);</span>
+ </pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">anon<span class="special">(</span> <span class="number">1</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" title="_chain">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.chain"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.chain" title="_chain"> <code class="computeroutput">_chain</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.chain.description"></a><h6>
+<a name="id36161659"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.chain.description">Description</a>
+ </h6>
+<p>
+ Takes two <code class="computeroutput">Range</code>,
+ and returns an object modeling <code class="computeroutput">Range</code>
+ and <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.container_convertible" title="ContainerConvertible">ContainerConvertible</a></code>,
+ and <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.range_lvalue" title="RangeLvalue">RangeLvalue</a></code>.
+ </p>
+<a name="boost_assign_v2._.reference.function.chain.synopsis"></a><h6>
+<a name="id36161714"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.chain.synopsis">Synopsis</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">R1</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">U2</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> <em class="replaceable"><code>implementation-defined</code></em><span class="special">&lt;</span><span class="identifier">R1</span><span class="special">,</span> <span class="identifier">R2</span><span class="special">&gt;::</span><span class="identifier">type</span>
+<span class="keyword">operator</span><span class="special">|(</span> <span class="identifier">U1</span><span class="special">&amp;</span> <span class="identifier">r1</span><span class="special">,</span> <span class="emphasis"><em>unspecified</em></span><span class="special">&lt;</span><span class="identifier">U2</span><span class="special">,</span> use_default<span class="special">&gt;</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <code class="computeroutput"><span class="identifier">U1</span></code> = <code class="computeroutput"><span class="identifier">R1</span></code> or <code class="computeroutput"><span class="identifier">R1</span>
+ <span class="keyword">const</span></code> and likewise for <code class="computeroutput"><span class="identifier">U2</span></code>.
+ </p></td></tr>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <code class="computeroutput"><span class="emphasis"><em>unspecified</em></span></code> is the result of calling
+ <code class="computeroutput">_chain<span class="special">(</span> <span class="identifier">r2</span>
+ <span class="special">)</span></code>.
+ </p></td></tr>
+</table></div>
+<a name="boost_assign_v2._.reference.function.chain.parameters"></a><h6>
+<a name="id36161934"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.chain.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">R1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ models Range
+ </p>
+ </td>
+<td>
+ <p>
+ Range to be chained
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">R2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ models Range
+ </p>
+ </td>
+<td>
+ <p>
+ Range to chain to
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.chain.expression_semantics"></a><h6>
+<a name="id36162064"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.chain.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">r1</span> <span class="special">|</span> <a class="link" href="index.html#boost_assign_v2._.reference.function.chain" title="_chain">_chain</a><span class="special">(</span> <span class="identifier">r2</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span>: <code class="computeroutput">result_of<span class="special">::</span>chain<span class="special">&lt;</span><span class="identifier">U1</span><span class="special">,</span><span class="identifier">U2</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: TODO
+ </p>
+<a name="boost_assign_v2._.reference.function.chain.header"></a><h6>
+<a name="id36162167"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.chain.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/chain/chain.hpp&gt;
+</pre>
+<p>
+ </p>
+<a name="boost_assign_v2._.reference.function.chain.example"></a><h6>
+<a name="id36162193"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.chain.example">Example</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span>vector<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> v<span class="special">(</span> <span class="number">2</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span> <span class="special">);</span>
+<span class="identifier">boost</span><span class="special">::</span>array<span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span><span class="number">2</span><span class="special">&gt;</span> array<span class="special">;</span> array<span class="special">.</span><span class="identifier">assign</span><span class="special">(</span> <span class="number">1</span> <span class="special">);</span>
+v <span class="special">|</span> _chain<span class="special">(</span> array <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<a name="boost_assign_v2._.reference.function.chain.alternative_syntax"></a><h6>
+<a name="id36162361"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.chain.alternative_syntax">Alternative
+ syntax</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression 1
+ </p>
+ </th>
+<th>
+ <p>
+ Expression 2
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">r1</span> <span class="special">|</span> _chain<span class="special">(</span> <span class="identifier">r2</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">r1</span> &amp;&amp; <span class="identifier">r2</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section" title="convert">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.convert"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.convert" title="convert"> <code class="computeroutput">convert</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.convert.description"></a><h6>
+<a name="id36162490"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.convert.description">Description</a>
+ </h6>
+<p>
+ Converts a Range
+ to an arbitrary container.
+ </p>
+<a name="boost_assign_v2._.reference.function.convert.synopsis"></a><h6>
+<a name="id36162515"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.convert.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">To</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">From</span><span class="special">&gt;</span>
+<span class="identifier">To</span> convert<span class="special">(</span> <span class="identifier">From</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">from</span><span class="special">);</span>
+</pre>
+<a name="boost_assign_v2._.reference.function.convert.parameters"></a><h6>
+<a name="id36162605"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.convert.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">From</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ models <code class="literal">Range</code>
+ </p>
+ </td>
+<td>
+ <p>
+ The argument to <code class="computeroutput">convert<span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">To</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ The return type of <code class="computeroutput">convert<span class="special">()</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.convert.expression_semantics"></a><h6>
+<a name="id36162753"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.convert.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">convert<span class="special">&lt;</span><span class="identifier">To</span><span class="special">&gt;(</span> <span class="identifier">from</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span>: To
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: Creates a container of type
+ <code class="computeroutput"><span class="identifier">To</span></code> with the elements
+ of <code class="computeroutput"><span class="identifier">from</span></code>
+ </p>
+<a name="boost_assign_v2._.reference.function.convert.header"></a><h6>
+<a name="id36162834"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.convert.header">Header</a>
+ </h6>
+<pre class="programlisting">#include &lt;boost/assign/v2/put/range.hpp&gt;
+</pre>
+<a name="boost_assign_v2._.reference.function.convert.example"></a><h6>
+<a name="id36162856"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.convert.example">Example</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span>vector<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">from</span><span class="special">;</span> <span class="identifier">from</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> <span class="special">-</span><span class="number">1</span> <span class="special">);</span> <span class="identifier">from</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> <span class="number">0</span> <span class="special">);</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span>queue<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">to_</span><span class="special">;</span>
+<span class="identifier">to_</span> <span class="identifier">to</span> <span class="special">=</span> <span class="identifier">from</span><span class="special">.</span>convert<span class="special">&lt;</span><span class="identifier">to_</span><span class="special">&gt;();</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="constructor">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.constructor"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.constructor" title="constructor">
+ <code class="computeroutput">constructor</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.constructor.description"></a><h6>
+<a name="id36163066"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.constructor.description">Description</a>
+ </h6>
+<p>
+ Returns a constructor;
+ </p>
+<a name="boost_assign_v2._.reference.function.constructor.syntax"></a><h6>
+<a name="id36163085"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.constructor.syntax">Syntax</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> result_of<span class="special">::</span>constructor<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ constructor<span class="special">();</span>
+</pre>
+<p>
+ </p>
+<a name="boost_assign_v2._.reference.function.constructor.parameters"></a><h6>
+<a name="id36163163"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.constructor.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal">T</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Type to construct
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.constructor.expression_semantics"></a><h6>
+<a name="id36163235"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.constructor.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">constructor<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;();</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span>: <code class="computeroutput">result_of<span class="special">::</span>constructor<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: Returns a constructor modeling
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">K-Ary</a></code>.
+ </p>
+<a name="boost_assign_v2._.reference.function.constructor.header"></a><h6>
+<a name="id36163323"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.constructor.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/detail/functor/constructor.hpp&gt;
+</pre>
+<p>
+ </p>
+<a name="boost_assign_v2._.reference.function.constructor.example"></a><h6>
+<a name="id36163349"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.constructor.example">Example</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">construct</span><span class="special">&lt;</span>tuple<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span><span class="keyword">int</span><span class="special">&amp;&gt;</span> <span class="special">&gt;();</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="put_range">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.put_range"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.put_range" title="put_range">
+ <code class="computeroutput">put_range</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.put_range.description"></a><h6>
+<a name="id36163426"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put_range.description">Description</a>
+ </h6>
+<p>
+ Puts the elements of a Range
+ into an arbitrary container.
+ </p>
+<a name="boost_assign_v2._.reference.function.put_range.synopsis"></a><h6>
+<a name="id36163452"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put_range.synopsis">Synopsis</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">From</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">To</span><span class="special">&gt;</span>
+<span class="identifier">To</span><span class="special">&amp;</span> put_range<span class="special">(</span> <span class="identifier">From</span> <span class="keyword">const</span><span class="special">&amp;,</span> <span class="identifier">To</span><span class="special">&amp;</span> <span class="identifier">to</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<a name="boost_assign_v2._.reference.function.put_range.parameters"></a><h6>
+<a name="id36163558"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put_range.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ From
+ </p>
+ </td>
+<td>
+ <p>
+ models Range
+ </p>
+ </td>
+<td>
+ <p>
+ The first argument to <code class="computeroutput">put_range</code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ To
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ The second argument to <code class="computeroutput">put_range</code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.put_range.expression_semantics"></a><h6>
+<a name="id36163680"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put_range.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">put_range<span class="special">(</span> <span class="identifier">from</span><span class="special">,</span> <span class="identifier">to</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span>: To&amp;
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: Puts the elements in <code class="computeroutput"><span class="identifier">from</span></code> into <code class="computeroutput"><span class="identifier">to</span></code>.
+ </p>
+<a name="boost_assign_v2._.reference.function.put_range.header"></a><h6>
+<a name="id36163761"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put_range.header">Header</a>
+ </h6>
+<pre class="programlisting">#include &lt;boost/assign/v2/put/range.hpp&gt;
+</pre>
+<a name="boost_assign_v2._.reference.function.put_range.example"></a><h6>
+<a name="id36163784"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put_range.example">Example</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span>vector<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">from</span><span class="special">;</span> <span class="identifier">from</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> <span class="special">-</span><span class="number">1</span> <span class="special">);</span> <span class="identifier">from</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> <span class="number">0</span> <span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span>queue<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">to</span><span class="special">;</span>
+put_range<span class="special">(</span> <span class="identifier">from</span><span class="special">,</span> <span class="identifier">to</span> <span class="special">);</span>
+</pre>
+</div>
+<div class="section" title="put">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.put"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.put" title="put"> <code class="computeroutput">put</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.put.description"></a><h6>
+<a name="id36163970"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put.description">Description</a>
+ </h6>
+<p>
+ Returns an object of type <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.class.put_wrapper" title="put_aux::put_wrapper">put_aux::put_wrapper</a><span class="special">&lt;&gt;</span></code>.
+ </p>
+<a name="boost_assign_v2._.reference.function.put.synopsis"></a><h6>
+<a name="id36164001"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">V</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> result_of<span class="special">::</span>put<span class="special">&lt;</span><span class="identifier">V</span><span class="special">&gt;::</span><span class="identifier">type</span>
+put<span class="special">(</span> <span class="identifier">V</span><span class="special">&amp;</span> v <span class="special">);</span>
+</pre>
+<a name="boost_assign_v2._.reference.function.put.parameters"></a><h6>
+<a name="id36164090"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ V
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ The argument to <code class="computeroutput">put</code>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.put.expression_semantics"></a><h6>
+<a name="id36164178"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<pre class="programlisting">put<span class="special">(</span> <span class="identifier">v</span> <span class="special">);</span>
+</pre>
+<p>
+ <span class="bold"><strong>Return type</strong></span>: <code class="computeroutput">result_of<span class="special">::</span>put<span class="special">&lt;</span><span class="identifier">V</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: TODO
+ </p>
+<a name="boost_assign_v2._.reference.function.put.header"></a><h6>
+<a name="id36164256"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put.header">Header</a>
+ </h6>
+<pre class="programlisting">#include &lt;boost/assign/v2/put/put.hpp&gt;
+</pre>
+<a name="boost_assign_v2._.reference.function.put.example"></a><h6>
+<a name="id36164277"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.put.example">Example</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span>vector<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> v<span class="special">;</span>
+put<span class="special">(</span> v <span class="special">);</span>
+</pre>
+</div>
+<div class="section" title="ref::anon">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.ref_anon"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon" title="ref::anon">
+ <code class="computeroutput">ref<span class="special">::</span>anon</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.ref_anon.description"></a><h6>
+<a name="id36164358"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon.description">Description</a>
+ </h6>
+<p>
+ Returns an object of type <code class="computeroutput">ref<span class="special">::</span><a class="link" href="index.html#boost_assign_v2._.reference.class.ref_anon_cont" title="ref::anon_aux::cont">anon_aux::cont</a><span class="special">&lt;&gt;</span></code> with <code class="computeroutput"><span class="identifier">Tag2</span>
+ <span class="special">=</span> ref<span class="special">::</span>alloc_tag::lazy_alloc</code>.
+ </p>
+<a name="boost_assign_v2._.reference.function.ref_anon.synopsis"></a><h6>
+<a name="id36164414"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon.synopsis">Synopsis</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Syntax
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> ref<span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span>anon_nil<span class="special">&lt;</span><span class="identifier">Tag1</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span> anon<span class="special">(</span> <span class="emphasis"><em>unspecified</em></span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag1</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span>ref<span class="special">::</span>anon<span class="special">&lt;</span><span class="identifier">Tag1</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span> ref<span class="special">::</span>anon<span class="special">(</span> <span class="identifier">T</span><span class="special">&amp;</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag1</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">typename</span> ref<span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span>anon<span class="special">&lt;</span><span class="identifier">Tag1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ref<span class="special">::</span>anon<span class="special">(</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.ref_anon.parameters"></a><h6>
+<a name="id36164847"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal">Tag1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Controls the <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">reference
+ assign semantics</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">T</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Value of the element(s) to reference to
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.ref_anon.expression_semantics"></a><h6>
+<a name="id36164972"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>anon<span class="special">&lt;</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">&gt;(</span> _nil <span class="special">);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>anon<span class="special">&lt;</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">&gt;(</span> t <span class="special">);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span> and <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ <span class="bold"><strong>Return type</strong></span>:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>result_of<span class="special">::</span>anon_nil<span class="special">&lt;</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>result_of<span class="special">::</span>anon<span class="special">&lt;</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>result_of<span class="special">::</span>anon<span class="special">&lt;</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a><span class="special">,</span><span class="identifier">T</span>
+ <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: TODO
+ </p>
+<a name="boost_assign_v2._.reference.function.ref_anon.header"></a><h6>
+<a name="id36165348"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon.header">Header</a>
+ </h6>
+<pre class="programlisting">#include &lt;boost/assign/v2/ref/ref.hpp&gt;
+</pre>
+<a name="boost_assign_v2._.reference.function.ref_anon.alternative_syntax"></a><h6>
+<a name="id36165371"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon.alternative_syntax">Alternative
+ syntax</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression1
+ </p>
+ </th>
+<th>
+ <p>
+ Expression2
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>anon<span class="special">&lt;</span>ref<span class="special">::</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">::</span><span class="identifier">copy</span><span class="special">&gt;(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>assign_copy<span class="special">::</span>anon<span class="special">(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>anon<span class="special">&lt;</span>ref<span class="special">::</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">::</span><span class="identifier">assign</span><span class="special">&gt;(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>assign_rebind<span class="special">::</span>anon<span class="special">(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.ref_anon.example"></a><h6>
+<a name="id36165591"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon.example">Example</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>anon<span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;(</span> _nil <span class="special">)(</span>
+ <span class="number">1</span> <span class="special">)(</span>
+ <span class="number">2</span> <span class="special">)(</span>
+ <span class="number">3</span> <span class="special">);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> a<span class="special">,</span> b<span class="special">,</span> c<span class="special">;</span>
+ref<span class="special">::</span>anon<span class="special">(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>anon<span class="special">(</span>
+ <span class="number">1</span> <span class="special">)(</span>
+ <span class="number">2</span> <span class="special">)(</span>
+ <span class="number">3</span> <span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section" title="ref::csv_anon">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.function.ref_csv_anon"></a><a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon" title="ref::csv_anon">
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.description"></a><h6>
+<a name="id36165891"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.description">Description</a>
+ </h6>
+<p>
+ Returns an object of type <code class="computeroutput">ref<span class="special">::</span><a class="link" href="index.html#boost_assign_v2._.reference.class.ref_fast_alloc" title="ref::anon_aux::fast_alloc">anon_aux::fast_alloc</a><span class="special">&lt;&gt;</span></code>.
+ </p>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.synopsis"></a><h6>
+<a name="id36165933"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.synopsis">Synopsis</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Syntax
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> ref<span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span>csv_anon<span class="special">&lt;</span><span class="identifier">Tag1</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span> csv_anon<span class="special">(</span> <span class="emphasis"><em>unspecified</em></span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag1</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span>ref<span class="special">::</span>csv_anon<span class="special">&lt;</span><span class="identifier">Tag1</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span> ref<span class="special">::</span>csv_anon<span class="special">(</span> <span class="identifier">T</span><span class="special">&amp;</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag1</span><span class="special">,</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">typename</span> ref<span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span>csv_anon<span class="special">&lt;</span><span class="identifier">Tag1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ref<span class="special">::</span>csv_anon<span class="special">(</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.parameters"></a><h6>
+<a name="id36166388"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Requirement
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal">Tag1</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Controls the <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">reference
+ assign semantics</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal">T</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>unspecified</em></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Value of the element(s) to reference to
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.expression_semantics"></a><h6>
+<a name="id36166517"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon<span class="special">&lt;</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">&gt;(</span>
+ _nil <span class="special">);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon<span class="special">&lt;</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">&gt;(</span>
+ t <span class="special">);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span> and <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ <span class="bold"><strong>Return type</strong></span>:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>result_of<span class="special">::</span>csv_anon<span class="special">&lt;</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>result_of<span class="special">::</span>csv_anon<span class="special">&lt;</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>result_of<span class="special">::</span>csv_anon<span class="special">&lt;</span><a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment"><em class="replaceable"><code>ref-assign-tag</code></em></a><span class="special">,</span><span class="identifier">T</span>
+ <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ <span class="bold"><strong>Semantics</strong></span>: TODO
+ </p>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.header"></a><h6>
+<a name="id36166914"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.header">Header</a>
+ </h6>
+<pre class="programlisting">#include &lt;boost/assign/v2/ref/ref.hpp&gt;
+</pre>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.alternative_syntax"></a><h6>
+<a name="id36166940"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.alternative_syntax">Alternative
+ syntax</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression1
+ </p>
+ </th>
+<th>
+ <p>
+ Expression2
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>csv_anon<span class="special">&lt;</span>ref<span class="special">::</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">::</span><span class="identifier">copy</span><span class="special">&gt;(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>assign_copy<span class="special">::</span>csv_anon<span class="special">(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>anon<span class="special">&lt;</span>ref<span class="special">::</span><em class="replaceable"><code>ref-assign-tag</code></em><span class="special">::</span><span class="identifier">assign</span><span class="special">&gt;(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">ref<span class="special">::</span>assign_rebind<span class="special">::</span>csv_anon<span class="special">(</span> t <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.model_of"></a><h6>
+<a name="id36167297"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.model_of">Model
+ of</a>
+ </h6>
+<p>
+ <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Csv</a></code>
+ </p>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.design"></a><h6>
+<a name="id36167329"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.design">Design</a>
+ </h6>
+<p>
+ Recall that <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon" title="ref::anon">anon</a></code>
+ returns an object with a dual syntax: <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">K-Ary</a></code>
+ and <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Csv</a></code>.
+ In the <code class="computeroutput">ref</code> framework, <code class="computeroutput"><span class="identifier">_ns_ref__</span><span class="special">::</span><a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon" title="ref::anon">anon</a></code>
+ returns a <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Unary</a></code>
+ object and <code class="computeroutput">ref<span class="special">::</span><a class="link" href="index.html#boost_assign_v2._.reference.function.ref_anon" title="ref::anon">csv_anon</a></code>,
+ itself modeling <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.concept.fun_syntax" title="Function syntax">Csv</a></code>,
+ returns an <code class="computeroutput">array</code>
+ of references. This separation of interface achieves better speed in
+ constructing the objects.
+ </p>
+<a name="boost_assign_v2._.reference.function.ref_csv_anon.example"></a><h6>
+<a name="id36167457"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.function.ref_csv_anon.example">Example</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Designation
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon<span class="special">&lt;</span><span class="keyword">int</span>
+ <span class="keyword">const</span><span class="special">&gt;(</span>
+ _nil <span class="special">)(</span> <span class="number">1</span>
+ <span class="special">)(</span> <span class="number">2</span>
+ <span class="special">)(</span> <span class="number">3</span>
+ <span class="special">);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(1)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> a<span class="special">,</span> b<span class="special">,</span> c<span class="special">;</span>
+ref<span class="special">::</span>csv_anon<span class="special">(</span> a <span class="special">)(</span> b <span class="special">)(</span> c <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(2)</em></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput">ref<span class="special">::</span>csv_anon<span class="special">(</span> <span class="number">1</span>
+ <span class="special">)(</span> <span class="number">2</span>
+ <span class="special">)(</span> <span class="number">3</span>
+ <span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="emphasis"><em>(3)</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="section" title="Keyword">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_assign_v2._.reference.keyword"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword" title="Keyword">Keyword</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> _deduce</span></dt>
+<dt><span class="section"> _fun</span></dt>
+<dt><span class="section"> _nil</span></dt>
+<dt><span class="section"> _unwrap</span></dt>
+<dt><span class="section"><a href="index.html#boost_assign_v2._.reference.keyword.incr_lookup">
+ <code class="computeroutput">_incr_lookup</code></a></span></dt>
+<dt><span class="section"> _repeat</span></dt>
+<dt><span class="section"> _put_tag</span></dt>
+</dl></div>
+<div class="section" title="_deduce">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.keyword.deduce"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword.deduce" title="_deduce"> <code class="computeroutput">_deduce</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.keyword.deduce.expression_semantics"></a><h6>
+<a name="id36167768"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.deduce.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">object <span class="special">%</span> _deduce<span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Return type</strong></span> <em class="replaceable"><code>implementation-defined</code></em>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span> <span class="emphasis"><em>unspecified</em></span>
+ </p>
+<a name="boost_assign_v2._.reference.keyword.deduce.header"></a><h6>
+<a name="id36167827"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.deduce.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/detail/keywords/keywords.hpp&gt;
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="_fun">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.keyword.fun"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword.fun" title="_fun"> <code class="computeroutput">_fun</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.keyword.fun.expression_semantics"></a><h6>
+<a name="id36167876"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.fun.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">object <span class="special">%</span> <span class="special">(</span> _fun <span class="special">=</span> <span class="identifier">f</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span> <em class="replaceable"><code>implementation-defined</code></em>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span> <span class="emphasis"><em>unspecified</em></span>
+ </p>
+<a name="boost_assign_v2._.reference.keyword.fun.header"></a><h6>
+<a name="id36167953"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.fun.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/detail/keywords/keywords.hpp&gt;
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="_nil">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.keyword.nil"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword.nil" title="_nil"> <code class="computeroutput">_nil</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.keyword.nil.expression_semantics"></a><h6>
+<a name="id36168002"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.nil.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">f</span><span class="special">(</span> _nil <span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span> <em class="replaceable"><code>implementation-defined</code></em>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span> <span class="emphasis"><em>unspecified</em></span>
+ </p>
+<a name="boost_assign_v2._.reference.keyword.nil.header"></a><h6>
+<a name="id36168068"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.nil.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/detail/keywords/keywords.hpp&gt;
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="_unwrap">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.keyword.unwrap"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword.unwrap" title="_unwrap"> <code class="computeroutput">_unwrap</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.keyword.unwrap.expression_semantics"></a><h6>
+<a name="id36168118"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.unwrap.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="emphasis"><em>unspecified</em></span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span> <em class="replaceable"><code>implementation-defined</code></em>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span> <span class="emphasis"><em>unspecified</em></span>
+ </p>
+<a name="boost_assign_v2._.reference.keyword.unwrap.header"></a><h6>
+<a name="id36168172"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.unwrap.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/detail/keywords/keywords.hpp&gt;
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="_incr_lookup">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.keyword.incr_lookup"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword.incr_lookup" title="_incr_lookup">
+ <code class="computeroutput">_incr_lookup</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.keyword.incr_lookup.expression_semantics"></a><h6>
+<a name="id36168221"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.incr_lookup.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting"><span class="emphasis"><em>unspecified</em></span>
+</pre>
+<p>
+ <span class="bold"><strong>Return type</strong></span> <em class="replaceable"><code>implementation-defined</code></em>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span> <span class="emphasis"><em>unspecified</em></span>
+ </p>
+<a name="boost_assign_v2._.reference.keyword.incr_lookup.header"></a><h6>
+<a name="id36168272"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.incr_lookup.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/detail/keywords/keywords.hpp&gt;
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="_repeat">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.keyword.repeat"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword.repeat" title="_repeat"> <code class="computeroutput">_repeat</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.keyword.repeat.expression_semantics"></a><h6>
+<a name="id36168321"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.repeat.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">object <span class="special">%</span> <span class="special">(</span> _repeat <span class="special">=</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span> <em class="replaceable"><code>implementation-defined</code></em>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span> <span class="emphasis"><em>unspecified</em></span>
+ </p>
+<a name="boost_assign_v2._.reference.keyword.repeat.header"></a><h6>
+<a name="id36168398"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.repeat.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/detail/keywords/keywords.hpp&gt;
+</pre>
+<p>
+ </p>
+</div>
+<div class="section" title="_put_tag">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="boost_assign_v2._.reference.keyword.put_kwd"></a><a class="link" href="index.html#boost_assign_v2._.reference.keyword.put_kwd" title="_put_tag"> <code class="computeroutput">_put_tag</code></a>
+</h5></div></div></div>
+<a name="boost_assign_v2._.reference.keyword.put_kwd.expression_semantics"></a><h6>
+<a name="id36168447"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.put_kwd.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">object <span class="special">%</span> <span class="special">(</span>_put_tag <span class="special">=</span> <em class="replaceable"><code>put-tag</code></em><span class="special">());</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type</strong></span> <em class="replaceable"><code>implementation-defined</code></em>
+ </p>
+<p>
+ <span class="bold"><strong>Semantics</strong></span> Selects a container modifier.
+ </p>
+<div class="table">
+<a name="boost_assign_v2._.reference.keyword.put_kwd.candidate_tags_"></a><p class="title"><b>Table&#160;1.7.&#160;Candidate tags.</b></p>
+<div class="table-contents"><table class="table" summary="Candidate tags.">
+<colgroup><col></colgroup>
+<thead><tr><th>
+ <p>
+ Name
+ </p>
+ </th></tr></thead>
+<tbody>
+<tr><td>
+ <p>
+ <code class="computeroutput">put_tag<span class="special">::</span><span class="identifier">at_next</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput">put_tag<span class="special">::</span><span class="identifier">insert</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput">put_tag<span class="special">::</span><span class="identifier">push</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput">put_tag<span class="special">::</span><span class="identifier">push_back</span></code>
+ </p>
+ </td></tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><a name="boost_assign_v2._.reference.keyword.put_kwd.header"></a><h6>
+<a name="id36168649"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.put_kwd.header">Header</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">#include &lt;boost/assign/v2/put/put.hpp&gt;
+</pre>
+<p>
+ </p>
+<a name="boost_assign_v2._.reference.keyword.put_kwd.example"></a><h6>
+<a name="id36168678"></a>
+ <a class="link" href="index.html#boost_assign_v2._.reference.keyword.put_kwd.example">Example</a>
+ </h6>
+<p>
+
+</p>
+<pre class="programlisting">object <span class="special">%</span> <span class="special">(</span> _put_tag <span class="special">=</span> put_tag<span class="special">::</span><span class="identifier">push</span><span class="special">()</span> <span class="special">);</span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+</div>
+<div class="section" title="Portability">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.portability_"></a><a class="link" href="index.html#boost_assign_v2._.portability_" title="Portability">Portability </a>
+</h3></div></div></div>
+<a name="boost_assign_v2._.portability_.methodology"></a><h5>
+<a name="id36168757"></a>
+ <a class="link" href="index.html#boost_assign_v2._.portability_.methodology">Methodology</a>
+ </h5>
+<p>
+ For each of a set of containers (see below), ensure
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ At compile time, that the method deduced for modifying the container agrees
+ with one that is explicitly specified. For example, it verifies that <code class="computeroutput"><span class="identifier">push</span><span class="special">()</span></code>
+ is the method used for <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span>queue<span class="special">&lt;&gt;</span></code>.
+ </li>
+<li class="listitem">
+ At runtime time, that the container returned by
+<pre class="programlisting"><a class="link" href="index.html#boost_assign_v2._.reference.function.convert" title="convert">convert</a><span class="special">&lt;</span><span class="identifier">To</span><span class="special">&gt;(</span> <span class="identifier">from</span> <span class="special">);</span>
+</pre>
+ has the same elements as that of <code class="computeroutput"><span class="identifier">from</span></code>,
+ where <code class="computeroutput"><span class="identifier">To</span></code> is the type of
+ the container being tested.
+ </li>
+</ul></div>
+<a name="boost_assign_v2._.portability_.containers_tested"></a><h5>
+<a name="id36168880"></a>
+ <a class="link" href="index.html#boost_assign_v2._.portability_.containers_tested">Containers
+ tested</a>
+ </h5>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+ <p>
+ Container
+ </p>
+ </th></tr></thead>
+<tbody>
+<tr><td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span>array<span class="special">&lt;&gt;</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span>deque<span class="special">&lt;&gt;</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span>list<span class="special">&lt;&gt;</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span>queue<span class="special">&lt;&gt;</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span>set<span class="special">&lt;&gt;</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span>stack<span class="special">&lt;&gt;</span></code>
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span>vector<span class="special">&lt;&gt;</span></code>
+ </p>
+ </td></tr>
+</tbody>
+</table></div>
+<a name="boost_assign_v2._.portability_.test_results"></a><h5>
+<a name="id36169147"></a>
+ <a class="link" href="index.html#boost_assign_v2._.portability_.test_results">Test results</a>
+ </h5>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ OS
+ </p>
+ </th>
+<th>
+ <p>
+ Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Boost version
+ </p>
+ </th>
+<th>
+ <p>
+ Date
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Mac OS X v10.6
+ </p>
+ </td>
+<td>
+ <p>
+ GCC 4.2
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">1.41</code>
+ </p>
+ </td>
+<td>
+ <p>
+ August 2nd, 2010
+ </p>
+ </td>
+<td>
+ <p>
+ Passed
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="boost_assign_v2._.portability_.dependencies"></a><h5>
+<a name="id36169268"></a>
+ <a class="link" href="index.html#boost_assign_v2._.portability_.dependencies">Dependencies</a>
+ </h5>
+<p>
+ A previously avalaible set of files in the Vault, for chaining, by RangeEx,
+ are made temporarily available here
+ and need to be in the search path.
+ </p>
+</div>
+<div class="section" title="Bug">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.bug"></a><a class="link" href="index.html#boost_assign_v2._.bug" title="Bug">Bug</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ Copying to <code class="computeroutput"><a class="link" href="index.html#boost_assign_v2._.reference.function.chain" title="_chain">chain</a></code>ed
+ ranges of <a class="link" href="index.html#boost_assign_v2._.reference.concept.ref_assign" title="Reference assignment">references</a>
+ works with <code class="computeroutput">array<span class="special">&lt;&gt;</span></code> as input, but not, for example,
+ <code class="computeroutput">vector<span class="special">&lt;&gt;</span></code>.
+ </li></ul></div>
+</div>
+<div class="section" title="Feature request">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.feature_request"></a><a class="link" href="index.html#boost_assign_v2._.feature_request" title="Feature request">Feature request</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Pointers
+ </li>
+<li class="listitem"><a href="http://old.nabble.com/Re%3A--mini-review--Update-of-Boost.Assign-%2813th-19th-of-June%29-p28899870.html" target="_top">Perfect
+ forwarding</a></li>
+</ul></div>
+</div>
+<div class="section" title="Change log">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.change_log"></a><a class="link" href="index.html#boost_assign_v2._.change_log" title="Change log">Change log</a>
+</h3></div></div></div>
+<a name="boost_assign_v2._.change_log.upgrading_from_boost__v_emphasis_1_4x__emphasis_"></a><h5>
+<a name="id36169410"></a>
+ <a class="link" href="index.html#boost_assign_v2._.change_log.upgrading_from_boost__v_emphasis_1_4x__emphasis_">Upgrading
+ from Boost. v<span class="emphasis"><em>1.4x</em></span></a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ This upgrade to Boost.Assign v2 represents a complete overhaul and is completely
+ independent from the previous version. The new features are in boost/assign/v2,
+ and accordingly, a new namespace was created:
+ </li></ul></div>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">assign</span><span class="special">::</span><span class="identifier">v2</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ The latest version prior to Boost.Assign v2 will continue to be supported
+ in Boost for backward compatibility
+ purposes, and also because Boost.Assign v2 still needs to be developed
+ in some areas such as pointers.
+ </li>
+<li class="listitem">
+ The change to Boost.Assign v2 comes about with the proposal for the addition
+ of two new features, namely chaining ranges and (more advanced) anonymous
+ containers of references. However, it came to light during the mini-review,
+ that the new and existing features seemed redundant or lacked homogeneity
+ in their interface and therefore called for a little more than a tune up.
+ </li>
+</ul></div>
+</div>
+<div class="section" title="Support">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.support"></a><a class="link" href="index.html#boost_assign_v2._.support" title="Support">Support</a>
+</h3></div></div></div>
+<p>
+ For questions or feature request, post to the <a href="http://www.boost.org/community/groups.html#users" target="_top">Boost
+ Users Mailing List</a>, but also make sure to reach TO
+ and <a href="mailto:er.ci.2020_at_[hidden]" target="_top">ER</a> by CCing them.
+ </p>
+</div>
+<div class="section" title="History and acknowledgement">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.history_and_acknowledgement"></a><a class="link" href="index.html#boost_assign_v2._.history_and_acknowledgement" title="History and acknowledgement">History
+ and acknowledgement</a>
+</h3></div></div></div>
+<p>
+ The idea for an assignment/initialization library is not new. The functionality
+ of this library resembles Leor Zolman's STL Container Initialization Library
+ a great deal, but it does not rely on string parsing to achieve its goals.
+ </p>
+<p>
+ Special thanks go to
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Leor Zolman for our many discussion that eventually led to this library.
+ </li>
+<li class="listitem">
+ Tom Brinkman for being review manager.
+ </li>
+<li class="listitem">
+ Joaqu&#237;n Mu&#241;oz for vc6/vc7 portability.
+ </li>
+<li class="listitem">
+ Pavel Vozenilek for his countless suggestions, improvements and portability
+ fixes.
+ </li>
+<li class="listitem">
+ Rene Rivera for Code Warrior portability.
+ </li>
+<li class="listitem">
+ Manuel Peinado Gallego for identifying the need for anonymous container
+ of references, his valuable advice throughout their development, and proposing
+ a design that laid the
+ foundation for chaining. Both features were introduced with Boost.Assign
+ v2.
+ </li>
+</ul></div>
+</div>
+<div class="section" title="Bibliography">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_assign_v2._.bibliography"></a><a class="link" href="index.html#boost_assign_v2._.bibliography" title="Bibliography">Bibliography</a>
+</h3></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Scott. Meyers, "More Effective C++", Item 7, Addison Wesley,
+ 1996
+ </li>
+<li class="listitem">
+ K. Czarnecki and U.W. Eisenecker, "Generative programming", Addison-Wesley,
+ 2000
+ </li>
+<li class="listitem">http://www.oonumerics.orgblitz</li>
+<li class="listitem">
+ Gabriel Dos Reis and Bjarne Stroustrup, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1509.pdf" target="_top">Generalized
+ Initializer Lists</a>, 2003
+ </li>
+<li class="listitem">
+ Abrahams, David and Gurtovoy, Aleksey, <a href="http://portal.acm.org/citation.cfm?id=1044941#" target="_top">C++
+ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and
+ Beyond (C++ in Depth Series)</a>, 2004, Addison-Wesley Professional.
+ </li>
+</ul></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: August 06, 2010 at 17:23:16 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"></div>
+</body>
+</html>

Added: sandbox/statistics/support/libs/assign/v2/example/tutorial.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/example/tutorial.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,94 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <deque>
+#include <map>
+#include <vector>
+#include <boost/array.hpp>
+#include <boost/lambda/lambda.hpp>
+#include <boost/lambda/bind.hpp>
+
+#include <boost/range.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/assign/v2/v2.hpp>
+
+#include <libs/assign/v2/example/tutorial.h>
+
+namespace example_assign_v2{
+namespace xxx_tutorial{
+
+ void run()
+ {
+ using namespace boost::assign::v2;
+ {
+ // --- PUT --- //
+ {
+ typedef boost::tuple<int&, const int&> tuple_;
+ typedef std::deque<tuple_> cont_;
+ cont_ cont;
+ int a1, a2, b1, c1;
+ ( put( cont ) % ( _fun = boost::lambda::bind<tuple_>(
+ constructor<tuple_>(),
+ boost::lambda::_1,
+ a2
+ ) ) )( a1 )( b1 )( c1 );
+ }
+ {
+ typedef std::map<const char*, int> cont_;
+ typedef boost::range_value<cont_>::type value_;
+ cont_ cont;
+ ( put( cont ) % _incr_lookup).csv( "x", "y", "x" );
+ BOOST_ASSERT( cont["x"] == 2 );
+ BOOST_ASSERT( cont["y"] == 1 );
+ }
+ }
+ {
+ // --- ANON --- //
+ {
+ typedef std::vector<int> cont_;
+ cont_ cont = anon( 1 )( 2 )( 3 ).convert<cont_>();
+ BOOST_ASSERT( cont[0] == 1 );
+ BOOST_ASSERT( cont[2] == 3 );
+ }
+ }
+ {
+ // --- REF-ANON-- //
+ using namespace ref;
+ { // -- assign_copy-- //
+ std::vector<int> v( 3 ); v[ 0 ] = 1; v[ 1 ] = 2; v [ 3 ] = 3;
+ int a, b, c;
+ boost::copy( v ,
+ boost::begin( assign_copy::anon( a )( b )( c ) ) );
+ BOOST_ASSERT( a == v[ 0 ] );
+ BOOST_ASSERT( b == v[ 1 ] );
+ BOOST_ASSERT( c == v[ 2 ] );
+ }
+ {
+ int a = 1, b = 2, c = 3;
+ BOOST_AUTO( tmp, assign_rebind::csv_anon( a , b ) );
+ tmp.assign( c );
+ BOOST_ASSERT( &tmp[ 0 ] == &c );
+ BOOST_ASSERT( &tmp[ 1 ] == &c );
+ }
+ }
+ { // --- CHAIN --- //
+ using namespace ref;
+ typedef boost::array<int,3> cont_;
+ cont_ cont; cont[ 0 ] = 1; cont[ 1 ] = 2; cont[ 2 ] = 3;
+ int a, b, c = 3;
+ BOOST_AUTO( tmp, assign_copy::anon( a )( b ) );
+ boost::copy( cont , boost::begin( tmp && assign_copy::anon( c ) ) );
+ BOOST_ASSERT( a == cont[ 0 ] );
+ BOOST_ASSERT( b == cont[ 1 ] );
+ BOOST_ASSERT( c == cont[ 2 ] );
+ }
+ }
+}// xxx_tutorial
+}// example_assign_v2
+

Added: sandbox/statistics/support/libs/assign/v2/example/tutorial.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/example/tutorial.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,21 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_EXAMPLE_TUTORIAL_ER_2010_H
+#define BOOST_ASSIGN_V2_EXAMPLE_TUTORIAL_ER_2010_H
+
+namespace example_assign_v2{
+namespace xxx_tutorial{
+
+ void run();
+
+}// xxx_tutorial
+}// example_assign_v2
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/src/main.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/src/main.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,39 @@
+#include <libs/assign/v2/test/anon/anon.h>
+#include <libs/assign/v2/test/chain/chain.h>
+#include <libs/assign/v2/test/detail/functor.h>
+#include <libs/assign/v2/test/put/put_wrapper.h>
+#include <libs/assign/v2/test/put_range/convert.h>
+#include <libs/assign/v2/test/type_traits/has_push.h>
+#include <libs/assign/v2/test/type_traits/has_value_type.h>
+#include <libs/assign/v2/test/type_traits/has_static_size.h>
+#include <libs/assign/v2/test/ref/fusion_list.h>
+#include <libs/assign/v2/test/ref/generic_anon.h>
+#include <libs/assign/v2/test/ref/csv_anon.h>
+#include <libs/assign/v2/test/ref/anon.h>
+#include <libs/assign/v2/test/ref/wrapper.h>
+
+#include <libs/assign/v2/example/tutorial.h>
+
+int main (int argc, char * const argv[]) {
+
+ using namespace test_assign_v2;
+ xxx_anon::xxx_anon::test();
+ xxx_chain::xxx_chain::test();
+ xxx_detail::xxx_functor::test();
+ xxx_type_traits::xxx_has_value_type::test();
+ xxx_type_traits::xxx_has_static_size::test();
+ xxx_ref::xxx_fusion_list::test();
+ xxx_ref::xxx_generic_anon::test();
+ xxx_ref::xxx_anon::test();
+ xxx_ref::xxx_csv_anon::test();
+ xxx_ref::xxx_wrapper::test();
+ xxx_put::xxx_put_wrapper::test();
+ xxx_put_range::xxx_convert::test();
+
+ {
+ using namespace example_assign_v2;
+ xxx_tutorial::run();
+ }
+ return 0;
+
+}

Added: sandbox/statistics/support/libs/assign/v2/test/anon/anon.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/anon/anon.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,114 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <deque>
+#include <list>
+#include <map>
+#include <queue>
+#include <set>
+#include <stack>
+#include <vector>
+#include <boost/array.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/assign/v2/detail/keyword/keyword.hpp>
+#include <boost/assign/v2/detail/checking/container.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/checking/relational_op.hpp>
+
+#include <boost/assign/v2/anon/anon.hpp>
+
+#include <libs/assign/v2/test/anon/anon.h>
+
+namespace test_assign_v2{
+namespace xxx_anon{
+namespace xxx_anon{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ {
+ // CSV
+ using namespace checking::constants;
+ using namespace checking::container;
+ do_check( anon<int>( _nil ).csv( a, b , c , d , e , f , g , h ) );
+ }
+ {
+ // Operator%
+ BOOST_AUTO(tmp, ( anon<int>( _nil ) % (_repeat = 3) ) );
+ tmp( 1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( boost::size( tmp ), 3 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( tmp.front(), 1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( tmp.back(), 1 );
+ }
+ {
+ // Conversion
+ typedef result_of::anon<int>::type anon_;
+ anon_ from;
+ {
+ using namespace checking::constants;
+ from = anon( a )( b )( c )( d )( e )( f )( g )( h );
+ }
+ using namespace checking::container;
+ {
+ typedef boost::array<int,8> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::deque<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::list<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::queue<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::set<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::stack<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::vector<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+
+ }
+ { // Relational
+ using namespace checking::constants;
+ using namespace checking::relational_op;
+ do_check(
+ anon( a )( b )( c )( d )( e )( f )( g )( h )
+ );
+ }
+
+ }
+
+}// xxx_anon
+}// xxx_anon
+}// test_assign_v2

Added: sandbox/statistics/support/libs/assign/v2/test/anon/anon.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/anon/anon.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_ANON_ANON_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_ANON_ANON_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_anon{
+namespace xxx_anon{
+
+ void test();
+
+}// xxx_anon
+}// xxx_anon
+}// test_assign_v2
+
+#endif
\ No newline at end of file

Added: sandbox/statistics/support/libs/assign/v2/test/chain/chain.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/chain/chain.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,30 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <boost/assign/v2/chain/checking/twin_values.hpp>
+#include <boost/assign/v2/chain/checking/distinct_values.hpp>
+#include <libs/assign/v2/test/chain/chain.h>
+
+namespace test_assign_v2{
+namespace xxx_chain{
+namespace xxx_chain{
+
+ void test()
+ {
+ using namespace boost::assign::v2::checking::chain;
+ twin_values::do_check<int>();
+ distinct_values::do_check<short>();
+ distinct_values::do_check<int>();
+ distinct_values::do_check<float>();
+ distinct_values::do_check<double>();
+ }
+
+}// xxx_chain
+}// xxx_chain
+}// test_assign_v2

Added: sandbox/statistics/support/libs/assign/v2/test/chain/chain.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/chain/chain.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_CHAIN_CHAIN_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_CHAIN_CHAIN_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_chain{
+namespace xxx_chain{
+
+ void test();
+
+}// xxx_chain
+}// xxx_chain
+}// test_assign_v2
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/chain/convert.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/chain/convert.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,98 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <deque>
+#include <list>
+#include <map>
+#include <queue>
+#include <set>
+#include <stack>
+#include <vector>
+#include <boost/array.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/assign/v2/chain/chain.hpp>
+#include <boost/assign/v2/detail/checking/container.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <libs/assign/v2/test/chain/convert.h>
+
+namespace test_assign_v2{
+namespace xxx_chain{
+namespace xxx_convert{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ {
+ typedef std::vector<int> vec_;
+ typedef boost::array<int,3> array_;
+
+ vec_ cont1, cont3;
+ array_ cont2;
+ {
+ using namespace checking::constants;
+ cont1.push_back( a ); cont1.push_back( b );
+ cont2[0] = c;
+ cont2[1] = d;
+ cont2[2] = e;
+ cont3.push_back( f );
+ cont3.push_back( g );
+ cont3.push_back( h );
+ }
+ BOOST_AUTO(from, cont1 && cont2 && cont3);
+ { // Conversion
+ using namespace checking::container;
+ {
+ typedef boost::array<int,8> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::deque<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::list<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::queue<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::set<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::stack<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::vector<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ }
+ }
+ }
+
+}// xxx_convert
+}// xxx_chain
+}// test_assign_v2

Added: sandbox/statistics/support/libs/assign/v2/test/chain/convert.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/chain/convert.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_CHAIN_CONVERT_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_CHAIN_CONVERT_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_chain{
+namespace xxx_convert{
+
+ void test();
+
+}// xxx_convert
+}// xxx_chain
+}// test_assign_v2
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/detail/functor.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/detail/functor.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,37 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <boost/tuple/tuple.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/functor/constructor.hpp>
+#include <libs/assign/v2/test/detail/functor.h>
+
+namespace test_assign_v2{
+namespace xxx_detail{
+namespace xxx_functor{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+
+ {
+ typedef boost::tuple<int&, int const&> t_;
+ typedef functor_aux::constructor<t_> f_;
+ int a = 1;
+ int b = 2;
+ f_ f;
+ t_ t = f( a, b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &boost::get<0>( t ), &a );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &boost::get<1>( t ), &b );
+ }
+ }
+
+}// xxx_functor
+}// xxx_detail
+}// test_assign_v2

Added: sandbox/statistics/support/libs/assign/v2/test/detail/functor.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/detail/functor.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_DETAIL_FUNCTOR_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_DETAIL_FUNCTOR_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_detail{
+namespace xxx_functor{
+
+ void test();
+
+}// xxx_functor
+}// xxx_detail
+}// test_assign_v2
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/put/modifier.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/put/modifier.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,68 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <deque>
+#include <list>
+#include <map>
+#include <queue>
+#include <set>
+#include <stack>
+#include <vector>
+#include <boost/array.hpp>
+
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/assign/v2/detail/checking/assert.hpp>
+#include <boost/assign/v2/put/modifier/modifier.hpp>
+#include <libs/assign/v2/test/put/modifier.h>
+
+namespace test_assign_v2{
+namespace xxx_put{
+namespace xxx_modifier{
+
+#define LIBS_ASSIGN_V2_TEST_PUT_modifier( V, T0, T1, n )\
+ { \
+ typedef V< T0 BOOST_PP_COMMA_IF(n) BOOST_PP_EXPR_IF(n, T1) > cont_; \
+ typedef put_aux::deduce_modifier<cont_>::type found_; \
+ checking::do_assert_is_same<found_,wanted_>(); \
+ } \
+/**/
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ {
+ typedef put_tag::push_back wanted_;
+ LIBS_ASSIGN_V2_TEST_PUT_modifier( std::list, int, , 0 )
+ LIBS_ASSIGN_V2_TEST_PUT_modifier( std::set, int, , 0 )
+ LIBS_ASSIGN_V2_TEST_PUT_modifier( std::vector, int, , 0 )
+ LIBS_ASSIGN_V2_TEST_PUT_modifier( std::deque, int, , 0 )
+ }
+ {
+ typedef put_tag::at_next wanted_;
+ LIBS_ASSIGN_V2_TEST_PUT_modifier(boost::array, int, 1, 1 )
+ }
+ {
+ typedef put_tag::push wanted_;
+ LIBS_ASSIGN_V2_TEST_PUT_modifier( std::queue, int, , 0 )
+ LIBS_ASSIGN_V2_TEST_PUT_modifier( std::stack, int, , 0 )
+ }
+ {
+ typedef put_tag::insert wanted_;
+ LIBS_ASSIGN_V2_TEST_PUT_modifier( std::map, const char*, int, 1 )
+ }
+
+ }
+
+#undef LIBS_ASSIGN_V2_TEST_PUT_modifier
+
+}// xxx_modifier
+}// xxx_put
+}// test_assign_v2
+

Added: sandbox/statistics/support/libs/assign/v2/test/put/modifier.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/put/modifier.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_PUT_MODIFIER_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_PUT_MODIFIER_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_put{
+namespace xxx_modifier{
+
+ void test();
+
+}// modifier
+}// xxx_put
+}// xxx_test_assign
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/put/put_wrapper.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/put/put_wrapper.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,87 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <deque>
+#include <queue>
+#include <vector>
+#include <map>
+#include <boost/array.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/assign/v2/detail/checking/container.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/put/put.hpp>
+#include <libs/assign/v2/test/put/put_wrapper.h>
+
+namespace test_assign_v2{
+namespace xxx_put{
+namespace xxx_put_wrapper{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ using namespace checking::constants;
+ namespace chk_cont = checking::container;
+ {
+ // Array
+ typedef boost::array<int,8> cont_;
+ cont_ cont;
+ chk_cont::do_check(
+ put( cont )
+ ( a )( b )( c )( d )( e )( f )( g )( h ).unwrap()
+ );
+ }
+ { // Queue
+ typedef std::queue<int> cont_;
+ cont_ cont;
+ ( put( cont ) % (_repeat = 3 ) ) (-1);
+ BOOST_ASSIGN_V2_CHECK_EQUAL( cont.front(), -1); cont.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( cont.front(), -1); cont.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( cont.front(), -1); cont.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( cont.empty(), true);
+ }
+ {
+ int a1, b1, c1, d1;//, e1, f1, g1, h1;
+ {
+ a1 = a; b1 = b; c1 = c;
+ d1 = d;
+ }
+ { // Deque + tuple
+ typedef boost::tuple<int&, const int&> tuple_;
+ typedef std::deque<tuple_> cont_;
+ {
+ cont_ cont;
+ put( cont )( a1 , b1 )( c1 , d1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &a1, &boost::get<0>( cont[0] ) );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &b1, &boost::get<1>( cont[0] ) );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &c1, &boost::get<0>( cont[1] ) );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &d1, &boost::get<1>( cont[1] ) );
+ }
+ }
+ {
+ // Map
+ typedef std::map<const char*, int> cont_;
+ cont_ cont;
+ put( cont )( "x", 2 )( "y", 1 );
+ }
+ { // Map
+ typedef std::map<const char*, int> cont_;
+ cont_ cont;
+ ( put( cont ) % _incr_lookup).csv( "x", "y", "x" );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( 2, cont["x"] );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( 1, cont["y"] );
+ }
+ }
+ }
+
+
+}// xxx_put_wrapper
+}// xxx_put
+}// test_assign_v2
+
+

Added: sandbox/statistics/support/libs/assign/v2/test/put/put_wrapper.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/put/put_wrapper.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_PUT_PUT_WRAPPER_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_PUT_PUT_WRAPPER_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_put{
+namespace xxx_put_wrapper{
+
+ void test();
+
+}// xxx_put_wrapper
+}// xxx_put
+}// test_assign_v2
+
+#endif
+

Added: sandbox/statistics/support/libs/assign/v2/test/put_range/convert.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/put_range/convert.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,78 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <deque>
+#include <list>
+#include <map>
+#include <queue>
+#include <set>
+#include <stack>
+#include <vector>
+#include <boost/array.hpp>
+
+#include <boost/assign/v2/detail/checking/container.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/put/range/range.hpp>
+
+#include <libs/assign/v2/test/put_range/convert.h>
+
+namespace test_assign_v2{
+namespace xxx_put_range{
+namespace xxx_convert{
+
+ void test()
+ {
+ typedef std::vector<int> from_;
+ from_ from;
+ using namespace boost::assign::v2;
+ namespace chk_cont = checking::container;
+ {
+ using namespace checking::constants;
+ from.push_back( a );
+ from.push_back( b );
+ from.push_back( c );
+ from.push_back( d );
+ from.push_back( e );
+ from.push_back( f );
+ from.push_back( g );
+ from.push_back( h );
+ }
+ {
+ typedef boost::array<int,8> to_;
+ chk_cont::do_check( convert<to_>( from ) );
+ }
+ {
+ typedef std::deque<int> to_;
+ chk_cont::do_check( convert<to_>( from ) );
+ }
+ {
+ typedef std::list<int> to_;
+ chk_cont::do_check( convert<to_>( from ) );
+ }
+ {
+ typedef std::queue<int> to_;
+ chk_cont::do_check( convert<to_>( from ) );
+ }
+ {
+ typedef std::set<int> to_;
+ chk_cont::do_check( convert<to_>( from ) );
+ }
+ {
+ typedef std::stack<int> to_;
+ chk_cont::do_check( convert<to_>( from ) );
+ }
+ {
+ typedef std::vector<int> to_;
+ chk_cont::do_check( convert<to_>( from ) );
+ }
+ }
+
+}// xxx_convert
+}// xxx_put_range
+}// test_assign_v2

Added: sandbox/statistics/support/libs/assign/v2/test/put_range/convert.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/put_range/convert.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_PUT_RANGE_CONVERT_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_PUT_RANGE_CONVERT_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_put_range{
+namespace xxx_convert{
+
+ void test();
+
+}// xxx_convert
+}// xxx_put_range
+}// test_assign_v2
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/ref/anon.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/anon.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,175 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <deque>
+#include <list>
+#include <map>
+#include <queue>
+#include <set>
+#include <stack>
+#include <vector>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/empty_base.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/algorithm/copy.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/checking/container.hpp>
+#include <boost/assign/v2/detail/checking/array.hpp>
+#include <boost/assign/v2/detail/checking/relational_op.hpp>
+#include <boost/assign/v2/ref/anon/functor/functor.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <libs/assign/v2/test/ref/anon.h>
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_anon{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ typedef ref::assign_tag::copy copy_;
+ {
+ // Array
+ typedef ref::nth_result_of::anon<
+ 8,
+ copy_,
+ int const
+ >::type ar_;
+ using namespace checking::constants;
+ ar_ ar = ref::anon<copy_>
+ ( a )( b )( c )( d )( e )( f )( g )( h );
+ {
+ using namespace checking;
+ typedef container_tag::static_array tag_;
+ do_check(tag_(), ar );
+ }
+ }
+ {
+ // Assignement of references
+ int a1, b1, c1, d1, e1, f1, g1, h1;
+ typedef std::vector<int> vec_;
+ vec_ vec;
+ {
+ using namespace checking::constants;
+ vec.push_back( a );
+ vec.push_back( b );
+ vec.push_back( c );
+ vec.push_back( d );
+ vec.push_back( e );
+ vec.push_back( f );
+ vec.push_back( g );
+ vec.push_back( h );
+ }
+ boost::copy(
+ vec,
+ boost::begin( ref::assign_copy::anon
+ ( a1 )( b1 )( c1 )( d1 )( e1 )( f1 )( g1 )( h1 )
+ )
+ );
+ {
+ using namespace checking::container;
+ do_check( ref::assign_copy::anon<int const>
+ ( a1 )( b1 )( c1 )( d1 )( e1 )( f1 )( g1 )( h1 )
+ );
+ }
+ }
+ {
+ // Rebind
+ typedef int const& cref_;
+ using namespace checking::constants;
+ cref_ a1 = a, b1 = b, c1 = c, d1 = d, e1 = e, f1 = f, g1 = g,
+ h1 = h;
+ BOOST_AUTO(ar, ref::assign_rebind::anon
+ ( a1 )( b1 )( c1 )( d1 )( e1 )( f1 )( g1 )( h1 )
+ );
+ {
+ using namespace checking::container;
+ do_check( ar );
+ }
+ ar.assign( b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[0] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[1] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[2] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[3] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[4] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[5] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[6] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[7] , &b );
+ }
+ {
+ // Conversion
+ typedef ref::assign_copy::nth_result_of::anon<
+ 8,int const>::type anon_;
+
+ anon_ from;
+ {
+ using namespace checking::constants;
+ from = ref::assign_copy::anon
+ ( a )( b )( c )( d )( e )( f )( g )( h );
+ }
+ using namespace checking::container;
+ {
+ typedef boost::array<int,8> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::deque<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::list<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::queue<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::set<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::stack<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+ {
+ typedef std::vector<int> to_;
+ do_check( from.convert<to_>() );
+ to_ to; to = from;
+ do_check( from );
+ }
+
+ }
+ { // Relational
+ using namespace checking::constants;
+ using namespace checking::relational_op;
+ do_check(
+ ref::assign_copy::anon
+ ( a )( b )( c )( d )( e )( f )( g )( h )
+ );
+ }
+ }
+
+}// xxx_anon
+}// xxx_ref
+}// test_assign

Added: sandbox/statistics/support/libs/assign/v2/test/ref/anon.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/anon.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_REF_ANON_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_REF_ANON_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_anon{
+
+ void test();
+
+}// xxx_anon
+}// xxx_ref
+}// test_assign
+
+#endif
+

Added: sandbox/statistics/support/libs/assign/v2/test/ref/convert_traits.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/convert_traits.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,35 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <boost/assign/v2/ref/detail/convert_traits/checking.hpp>
+#include <libs/assign/v2/test/ref/convert_traits.h>
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_convert_traits{
+
+ void test()
+ {
+ namespace ns = boost::assign::v2::ref::convert_traits::checking;
+ {
+ ns::twin_values::do_check<int>();
+ }
+ {
+ namespace dv = ns::distinct_values;
+ namespace ari = dv::arithmetic;
+ ari::do_check<short>();
+ ari::do_check<int>();
+ ari::do_check<float>();
+ ari::do_check<double>();
+ }
+ }
+
+}// convert_traits
+}// ref
+}// test_assign

Added: sandbox/statistics/support/libs/assign/v2/test/ref/convert_traits.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/convert_traits.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_REF_CONVERT_TRAITS_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_REF_CONVERT_TRAITS_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_conversion{
+
+ void test();
+
+}// xxx_conversion
+}// xxx_ref
+}// test_assign
+
+#endif
+

Added: sandbox/statistics/support/libs/assign/v2/test/ref/csv_anon.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/csv_anon.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,106 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <vector>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/empty_base.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/algorithm/copy.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/checking/range.hpp>
+#include <boost/assign/v2/detail/checking/array.hpp>
+#include <boost/assign/v2/ref/anon/csv/csv.hpp>
+#include <libs/assign/v2/test/ref/csv_anon.h>
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_csv_anon{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ typedef ref::assign_tag::copy copy_;
+ {
+ typedef ref::nth_result_of::csv_anon<
+ 8,
+ copy_,
+ int const
+ >::type ar_;
+ using namespace checking::constants;
+ ar_ ar = ref::csv_anon<copy_>
+ ( a , b , c , d , e , f , g , h );
+ using namespace checking;
+ {
+ typedef container_tag::static_array tag_;
+ checking::do_check(tag_(), ar );
+ }
+ {
+ typedef container_tag::range tag_;
+ checking::do_check(tag_(), ar );
+ }
+ }
+ {
+ int a1, b1, c1, d1, e1, f1, g1, h1;
+ typedef std::vector<int> vec_;
+ vec_ vec;
+ {
+ using namespace checking::constants;
+ vec.push_back( a );
+ vec.push_back( b );
+ vec.push_back( c );
+ vec.push_back( d );
+ vec.push_back( e );
+ vec.push_back( f );
+ vec.push_back( g );
+ vec.push_back( h );
+ }
+ boost::copy(
+ vec,
+ boost::begin( ref::assign_copy::csv_anon
+ ( a1 , b1 , c1 , d1 , e1 , f1 , g1 , h1 )
+ )
+ );
+ {
+ using namespace checking;
+ typedef container_tag::static_array tag_;
+ do_check( tag_(), ref::assign_copy::csv_anon<int const>
+ ( a1 , b1 , c1 , d1 , e1 , f1 , g1 , h1 )
+ );
+ }
+ }
+ {
+ typedef int const& cref_;
+ using namespace checking::constants;
+ cref_ a1 = a, b1 = b, c1 = c, d1 = d, e1 = e, f1 = f, g1 = g,
+ h1 = h;
+ BOOST_AUTO(ar, ref::assign_rebind::csv_anon
+ ( a1 , b1 , c1 , d1 , e1 , f1 , g1 , h1 )
+ );
+ {
+ using namespace checking;
+ typedef container_tag::static_array tag_;
+ do_check( tag_(), ar );
+ }
+ ar.assign( b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[0] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[1] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[2] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[3] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[4] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[5] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[6] , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar[7] , &b );
+ }
+ }
+
+}// xxx_csv_anon
+}// xxx_ref
+}// test_assign

Added: sandbox/statistics/support/libs/assign/v2/test/ref/csv_anon.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/csv_anon.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_REF_CSV_ARRAY_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_REF_CSV_ARRAY_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_csv_anon{
+
+ void test();
+
+}// xxx_csv_anon
+}// xxx_ref
+}// test_assign
+
+#endif
+

Added: sandbox/statistics/support/libs/assign/v2/test/ref/fusion_list.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/fusion_list.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,89 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <boost/mpl/int.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/array.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <libs/assign/v2/test/ref/fusion_list.h>
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_fusion_list{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ using namespace ref;
+ typedef assign_tag::copy assign_tag_;
+ typedef boost::mpl::int_<0> i0_;
+ typedef boost::mpl::int_<1> i1_;
+ typedef boost::mpl::int_<2> i2_;
+ {
+ typedef int t0_;
+ typedef int const t1_;
+ typedef const char* t2_;
+ t0_ a = 0;
+ t1_ b = 1;
+ t2_ c = "c";
+
+ typedef nth_result_of::fusion_list<assign_tag_,t0_> result_;
+ typedef boost::mpl::apply3<result_,t0_,t1_,t2_>::type ar_;
+ ar_ ar = fusion_list<assign_tag_>( a )( b )( c );
+ ar.static_lookup( i0_() );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar.static_lookup( i0_() ), &a );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar.static_lookup( i1_() ), &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar.static_lookup( i2_() ), &c );
+ {
+ typedef boost::mpl::apply2<result_,t0_,t1_>::type ar2_;
+ ar2_ ar2 = ar.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar2.back(), &b );
+ typedef boost::mpl::apply1<result_,t0_>::type ar1_;
+ ar1_ ar1 = ar2.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &ar1.back(), &a );
+ typedef boost::mpl::apply0<result_>::type ar0_;
+ ar0_ ar0 = ar1.pop();
+ }
+ }
+ {
+ typedef int t_;
+ t_ a = 0;
+ t_ b = 1;
+ t_ c = 2;
+ typedef wrapper<assign_tag_,t_> w_;
+ typedef boost::array<w_,3> arw_;
+ typedef nth_result_of::fusion_list<assign_tag_,t_> result_;
+ typedef boost::mpl::apply3<result_,t_,t_,t_>::type ar_;
+ ar_ ar = fusion_list<assign_tag_>( a )( b )( c );
+ arw_ arw;
+ assign_array( arw, ar );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &arw[ 0 ].unwrap() , &a );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &arw[ 1 ].unwrap() , &b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &arw[ 2 ].unwrap() , &c );
+ }
+ {
+ typedef int t_;
+ t_ a = 0;
+ t_ b = 1;
+ t_ c = 2;
+ typedef boost::tuple<t_ const&> tuple_;
+ typedef nth_result_of::fusion_list<assign_tag_,tuple_> result_;
+ typedef boost::mpl::apply3<result_,t_,t_,t_>::type ar_;
+ fusion_list<assign_tag_>
+ ( tuple_( a ) )( tuple_( b ) )( tuple_( c ) );
+ }
+ }
+
+}// xxx_fusion_list
+}// xxx_ref
+}// test_assign
+

Added: sandbox/statistics/support/libs/assign/v2/test/ref/fusion_list.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/fusion_list.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_REF_FUSION_LIST_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_REF_FUSION_LIST_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_fusion_list{
+
+ void test();
+
+}// xxx_fusion_list
+}// xxx_ref
+}// test_assign
+
+#endif
+

Added: sandbox/statistics/support/libs/assign/v2/test/ref/generic_anon.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/generic_anon.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,43 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <boost/mpl/int.hpp>
+#include <boost/mpl/empty_base.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/ref/anon/generic/generic.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <libs/assign/v2/test/ref/generic_anon.h>
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_generic_anon{
+
+ void test()
+ {
+ using namespace boost::assign::v2::ref;
+ {
+ typedef assign_tag::copy tag1_;
+ typedef boost::mpl::empty_base tag2_;
+ typedef nth_result_of::generic_anon<2,
+ tag1_,
+ tag2_,
+ int
+ >::type list2_;
+ int a = 0, b = 1;
+ list2_ list2 = generic_anon<tag1_,tag2_>( a )( b );
+ typedef boost::mpl::int_<0> i0_;
+ typedef boost::mpl::int_<1> i1_;
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &list2.static_lookup( i0_() ) , &a );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( &list2.static_lookup( i1_() ) , &b );
+ }
+ }
+
+}// xxx_generic_anon
+}// xxx_ref
+}// test_assign

Added: sandbox/statistics/support/libs/assign/v2/test/ref/generic_anon.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/generic_anon.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_REF_GENERIC_ANON_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_REF_GENERIC_ANON_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_generic_anon{
+
+ void test();
+
+}// xxx_generic_anon
+}// xxx_ref
+}// test_assign
+
+#endif
+

Added: sandbox/statistics/support/libs/assign/v2/test/ref/wrapper.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/wrapper.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,52 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <boost/assign/v2/ref/wrapper/wrapper.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <libs/assign/v2/test/ref/wrapper.h>
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_wrapper{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ typedef int val_;
+ {
+ typedef ref::type_traits::copy_wrapper<val_>::type w_;
+ w_ w;
+ val_ a = 1, b = 2, c = 3;
+ w.rebind( a ); BOOST_ASSIGN_V2_CHECK_EQUAL( &w.unwrap(), &a );
+ w.assign( b ); BOOST_ASSIGN_V2_CHECK_EQUAL( a, b );
+ w = c; BOOST_ASSIGN_V2_CHECK_EQUAL( a, c );
+ }
+ {
+ typedef ref::type_traits::copy_wrapper<val_ const>::type w_;
+ w_ w;
+ val_ a = 1;
+ w.rebind( a ); BOOST_ASSIGN_V2_CHECK_EQUAL( &w.unwrap(), &a );
+ }
+ {
+ typedef ref::type_traits::rebind_wrapper<val_>::type w_;
+ w_ w;
+ val_ a = 1;
+ w = a; BOOST_ASSIGN_V2_CHECK_EQUAL( &w.unwrap(), &a );
+ }
+ {
+ typedef ref::type_traits::rebind_wrapper<val_ const>::type w_;
+ w_ w;
+ val_ const a = 1;
+ w = a; BOOST_ASSIGN_V2_CHECK_EQUAL( &w.unwrap(), &a );
+ }
+ }
+
+}// xxx_wrapper
+}// xxx_ref
+}// test_assign_v2

Added: sandbox/statistics/support/libs/assign/v2/test/ref/wrapper.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/ref/wrapper.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_CHAIN_TEST_REF_WRAPPER_ER_2010_H
+#define BOOST_ASSIGN_V2_CHAIN_TEST_REF_WRAPPER_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_ref{
+namespace xxx_wrapper{
+
+ void test();
+
+}// xxx_wrapper
+}// xxx_ref
+}// test_assign
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/type_traits/has_push.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/type_traits/has_push.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,48 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <vector>
+#include <stack>
+#include <queue>
+#include <boost/static_assert.hpp>
+#include <boost/assign/v2/detail/type_traits/container/has_push.hpp>
+#include <libs/assign/v2/test/type_traits/has_push.h>
+
+namespace test_assign_v2{
+namespace xxx_type_traits{
+namespace xxx_has_push{
+
+ void test()
+ {
+ namespace ns = boost::assign::v2::container_type_traits;
+ {
+ typedef std::queue<int> v_;
+ typedef ns::has_push<v_> has_push_;
+
+ //typedef void (v_::*fp_)(int const&) ;
+ //fp_ fp = &v_::push; v_ v; ((v).*fp)( 1 );
+ //BOOST_ASSERT(v.front() == 1);
+ BOOST_STATIC_ASSERT( has_push_::value );
+ }
+ {
+ typedef std::stack<int> v_;
+ typedef ns::has_push<v_> has_push_;
+ BOOST_STATIC_ASSERT( has_push_::value );
+ }
+ {
+ typedef std::vector<int> v_;
+ typedef ns::has_push<v_> has_push_;
+ BOOST_STATIC_ASSERT( !has_push_::value );
+ }
+ }
+
+}// xxx_has_push
+}// xxx_type_traits
+}// test_assign_v2
+

Added: sandbox/statistics/support/libs/assign/v2/test/type_traits/has_push.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/type_traits/has_push.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_TYPE_TRAITS_HAS_PUSH_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_TYPE_TRAITS_HAS_PUSH_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_type_traits{
+namespace xxx_has_push{
+
+ void test();
+
+}// xxx_has_push
+}// xxx_type_traits
+}// test_assign_v2
+
+#endif
+

Added: sandbox/statistics/support/libs/assign/v2/test/type_traits/has_static_size.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/type_traits/has_static_size.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,47 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <boost/array.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/assign/v2/detail/type_traits/container/has_static_size.hpp>
+#include <boost/assign/v2/ref/anon/functor/assign_copy.hpp>
+#include <libs/assign/v2/test/type_traits/has_static_size.h>
+
+struct foo{
+ typedef std::size_t size_type;
+};
+
+namespace test_assign_v2{
+namespace xxx_type_traits{
+namespace xxx_has_static_size{
+
+ void test()
+ {
+ using namespace boost::assign::v2;
+ {
+ typedef boost::array<int,1> cont_;
+ typedef container_type_traits::has_static_size<cont_> pred_;
+ BOOST_STATIC_ASSERT( pred_::value );
+ }
+ {
+ typedef ref::assign_copy::result_of::anon_nil<
+ int>::type cont_;
+ typedef container_type_traits::has_static_size<cont_> pred_;
+ BOOST_STATIC_ASSERT( pred_::value );
+ }
+ {
+ typedef foo cont_;
+ typedef container_type_traits::has_static_size<cont_> pred_;
+ BOOST_STATIC_ASSERT( !pred_::value );
+ }
+ }
+
+}// xxx_has_static_size
+}// xxx_type_traits
+}// test_assign_v2

Added: sandbox/statistics/support/libs/assign/v2/test/type_traits/has_static_size.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/type_traits/has_static_size.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_TYPE_TRAITS_HAS_STATIC_SIZE_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_TYPE_TRAITS_HAS_STATIC_SIZE_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_type_traits{
+namespace xxx_has_static_size{
+
+ void test();
+
+}// xxx_has_static_size
+}// xxx_type_traits
+}// test_assign
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/type_traits/has_value_type.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/type_traits/has_value_type.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,37 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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 <vector>
+#include <boost/static_assert.hpp>
+#include <boost/assign/v2/detail/type_traits/has_value_type.hpp>
+#include <libs/assign/v2/test/type_traits/has_value_type.h>
+
+namespace test_assign_v2{
+namespace xxx_type_traits{
+namespace xxx_has_value_type{
+
+ void test(){
+
+ using namespace boost::assign::v2;
+ {
+ typedef std::vector<int> inp_;
+ typedef type_traits::has_value_type<inp_>::type pred_;
+ BOOST_STATIC_ASSERT(pred_::value);
+ }
+ {
+ typedef int inp_;
+ typedef type_traits::has_value_type<inp_>::type pred_;
+ BOOST_STATIC_ASSERT(!pred_::value);
+ }
+ }
+
+
+}// xxx_has_value_type
+}// xxx_type_traits
+}// test_assign

Added: sandbox/statistics/support/libs/assign/v2/test/type_traits/has_value_type.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/type_traits/has_value_type.h 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TEST_TYPE_TRAITS_HAS_VALUE_TYPE_ER_2010_H
+#define BOOST_ASSIGN_V2_TEST_TYPE_TRAITS_HAS_VALUE_TYPE_ER_2010_H
+
+namespace test_assign_v2{
+namespace xxx_type_traits{
+namespace xxx_has_value_type{
+
+ void test();
+
+}// xxx_has_value_type
+}// xxx_type_traits
+}// test_assign
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/Jamfile.v2 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,28 @@
+# Boost.Assign library
+#
+# Copyright Thorsten Ottosen 2003-2005. Use, modification and
+# distribution is subject to the Boost Software License, Version
+# 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+# For more information, see http://www.boost.org/libs/assign/
+#
+
+rule assign-test ( name )
+{
+ return [
+ run $(name).cpp /boost/test//boost_unit_test_framework/<link>static ]
+ ;
+}
+
+test-suite assign :
+ [ assign-test anon ]
+ [ assign-test chain ]
+ [ assign-test detail ]
+ [ assign-test put_range ]
+ [ assign-test put ]
+ [ assign-test ref ]
+ [ assign-test type_traits ]
+;
+
+

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/anon.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/anon.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,32 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_V2_TEST_UNIT_TEST_ANON_ER_2010_CPP
+#define LIBS_ASSIGN_V2_TEST_UNIT_TEST_ANON_ER_2010_CPP
+
+#include <iostream> // needed?
+
+#include <boost/test/test_tools.hpp>
+#define BOOST_ASSIGN_CHECK_EQUAL(a,b) BOOST_CHECK_EQUAL(a,b)
+#include <libs/assign/v2/test/anon/anon.cpp>
+
+#include <boost/test/unit_test.hpp>
+using boost::unit_test::test_suite;
+test_suite* init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* test = BOOST_TEST_SUITE( "BOOST_ASSIGN_V2" );
+ using namespace test_assign_v2;
+ {
+ namespace ns = xxx_anon;
+ test->add( BOOST_TEST_CASE( &ns::xxx_anon::test ) );
+ }
+ return test;
+}
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/chain.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/chain.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,34 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_V2_TEST_UNIT_TEST_CHAIN_ER_2010_CPP
+#define LIBS_ASSIGN_V2_TEST_UNIT_TEST_CHAIN_ER_2010_CPP
+
+#include <iostream> // needed?
+
+#include <boost/test/test_tools.hpp>
+#define BOOST_ASSIGN_CHECK_EQUAL(a,b) BOOST_CHECK_EQUAL(a,b)
+#include <libs/assign/v2/test/chain/convert.cpp>
+#include <libs/assign/v2/test/chain/chain.cpp>
+
+#include <boost/test/unit_test.hpp>
+using boost::unit_test::test_suite;
+test_suite* init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* test = BOOST_TEST_SUITE( "BOOST_ASSIGN_V2" );
+ using namespace test_assign_v2;
+ {
+ namespace ns = xxx_chain;
+ test->add( BOOST_TEST_CASE( &ns::xxx_convert::test ) );
+ test->add( BOOST_TEST_CASE( &ns::xxx_chain::test ) );
+ }
+ return test;
+}
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/detail.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/detail.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,32 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_V2_TEST_UNIT_TEST_DETAIL_ER_2010_CPP
+#define LIBS_ASSIGN_V2_TEST_UNIT_TEST_DETAIL_ER_2010_CPP
+
+#include <iostream> // needed?
+
+#include <boost/test/test_tools.hpp>
+#define BOOST_ASSIGN_CHECK_EQUAL(a,b) BOOST_CHECK_EQUAL(a,b)
+#include <libs/assign/v2/test/detail/functor.cpp>
+
+#include <boost/test/unit_test.hpp>
+using boost::unit_test::test_suite;
+test_suite* init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* test = BOOST_TEST_SUITE( "BOOST_ASSIGN_V2" );
+ using namespace test_assign_v2;
+ {
+ using namespace xxx_detail;
+ test->add( BOOST_TEST_CASE( &xxx_functor::test ) );
+ }
+ return test;
+}
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/put.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/put.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,34 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_V2_TEST_UNIT_TEST_PUT_ER_2010_CPP
+#define LIBS_ASSIGN_V2_TEST_UNIT_TEST_PUT_ER_2010_CPP
+
+#include <iostream> // needed?
+
+#include <boost/test/test_tools.hpp>
+#define BOOST_ASSIGN_CHECK_EQUAL(a,b) BOOST_CHECK_EQUAL(a,b)
+#include <libs/assign/v2/test/put/put_wrapper.cpp>
+#include <libs/assign/v2/test/put/modifier.cpp>
+
+#include <boost/test/unit_test.hpp>
+using boost::unit_test::test_suite;
+test_suite* init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* test = BOOST_TEST_SUITE( "BOOST_ASSIGN_V2" );
+ using namespace test_assign_v2;
+ {
+ using namespace xxx_put;
+ test->add( BOOST_TEST_CASE( &xxx_put_wrapper::test ) );
+ test->add( BOOST_TEST_CASE( &xxx_modifier::test ) );
+ }
+ return test;
+}
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/put_range.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/put_range.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,32 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_V2_TEST_UNIT_TEST_PUT_RANGE_ER_2010_CPP
+#define LIBS_ASSIGN_V2_TEST_UNIT_TEST_PUT_RANGE_ER_2010_CPP
+
+#include <iostream> // needed?
+
+#include <boost/test/test_tools.hpp>
+#define BOOST_ASSIGN_CHECK_EQUAL(a,b) BOOST_CHECK_EQUAL(a,b)
+#include <libs/assign/v2/test/put_range/convert.cpp>
+
+#include <boost/test/unit_test.hpp>
+using boost::unit_test::test_suite;
+test_suite* init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* test = BOOST_TEST_SUITE( "BOOST_ASSIGN_V2" );
+ using namespace test_assign_v2;
+ {
+ using namespace xxx_put_range;
+ test->add( BOOST_TEST_CASE( &xxx_convert::test ) );
+ }
+ return test;
+}
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/ref.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/ref.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,42 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_V2_TEST_UNIT_TEST_REF_ER_2010_CPP
+#define LIBS_ASSIGN_V2_TEST_UNIT_TEST_REF_ER_2010_CPP
+
+#include <iostream> // needed?
+
+#include <boost/test/test_tools.hpp>
+#define BOOST_ASSIGN_CHECK_EQUAL(a,b) BOOST_CHECK_EQUAL(a,b)
+#include <libs/assign/v2/test/ref/convert_traits.cpp>
+#include <libs/assign/v2/test/ref/csv_anon.cpp>
+#include <libs/assign/v2/test/ref/fusion_list.cpp>
+#include <libs/assign/v2/test/ref/generic_anon.cpp>
+#include <libs/assign/v2/test/ref/anon.cpp>
+#include <libs/assign/v2/test/ref/wrapper.cpp>
+
+#include <boost/test/unit_test.hpp>
+using boost::unit_test::test_suite;
+test_suite* init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* test = BOOST_TEST_SUITE( "BOOST_ASSIGN_V2" );
+ using namespace test_assign_v2;
+ {
+ using namespace xxx_ref;
+ test->add( BOOST_TEST_CASE( &xxx_fusion_list::test ) );
+ test->add( BOOST_TEST_CASE( &xxx_convert_traits::test ) );
+ test->add( BOOST_TEST_CASE( &xxx_generic_anon::test ) );
+ test->add( BOOST_TEST_CASE( &xxx_anon::test ) );
+ test->add( BOOST_TEST_CASE( &xxx_wrapper::test ) );
+ test->add( BOOST_TEST_CASE( &xxx_csv_anon::test ) );
+ }
+ return test;
+}
+
+#endif

Added: sandbox/statistics/support/libs/assign/v2/test/unit_testing/type_traits.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/libs/assign/v2/test/unit_testing/type_traits.cpp 2010-08-06 15:11:41 EDT (Fri, 06 Aug 2010)
@@ -0,0 +1,36 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_V2_TEST_UNIT_TEST_TYPE_TRAITS_ER_2010_CPP
+#define LIBS_ASSIGN_V2_TEST_UNIT_TEST_TYPE_TRAITS_ER_2010_CPP
+
+#include <iostream> // needed?
+
+#include <boost/test/test_tools.hpp>
+#define BOOST_ASSIGN_CHECK_EQUAL(a,b) BOOST_CHECK_EQUAL(a,b)
+#include <libs/assign/v2/test/type_traits/has_push.cpp>
+#include <libs/assign/v2/test/type_traits/has_value_type.cpp>
+#include <libs/assign/v2/test/type_traits/has_static_size.cpp>
+
+#include <boost/test/unit_test.hpp>
+using boost::unit_test::test_suite;
+test_suite* init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* test = BOOST_TEST_SUITE( "BOOST_ASSIGN_V2" );
+ using namespace test_assign_v2;
+ {
+ namespace ns = xxx_type_traits;
+ test->add( BOOST_TEST_CASE( &ns::xxx_has_push::test ) );
+ test->add( BOOST_TEST_CASE( &ns::xxx_has_value_type::test ) );
+ test->add( BOOST_TEST_CASE( &ns::xxx_has_static_size::test ) );
+ }
+ return test;
+}
+
+#endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk