Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r55595 - in sandbox/SOC/2009/fusion: . boost/fusion/adapted boost/fusion/adapted/detail/mpl boost/fusion/algorithm/iteration boost/fusion/algorithm/transformation boost/fusion/algorithm/transformation/detail/pp boost/fusion/container/detail/pp boost/fusion/container/detail/variadic_templates boost/fusion/container/generation/detail/pp boost/fusion/container/list boost/fusion/container/vector boost/fusion/container/vector/detail/pp boost/fusion/include boost/fusion/iterator boost/fusion/mpl boost/fusion/sequence boost/fusion/sequence/intrinsic boost/fusion/support boost/fusion/view/single_view
From: mr.chr.schmidt_at_[hidden]
Date: 2009-08-14 20:08:53


Author: cschmidt
Date: 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
New Revision: 55595
URL: http://svn.boost.org/trac/boost/changeset/55595

Log:
optimizations
Properties modified:
   sandbox/SOC/2009/fusion/boost/fusion/include/ (props changed)
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/end_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_array.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp | 24 ++--------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/zip.hpp | 6 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp | 95 +++++++++++++++++++++++----------------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp | 6 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp | 88 +++++++++++++++++++++---------------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp | 21 ++++++++
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp | 82 ++++++++++++++++++++++-----------
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp | 5 --
   sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp | 7 +-
   sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp | 3
   sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp | 3
   sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp | 27 ++++++++++-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp | 13 ++--
   sandbox/SOC/2009/fusion/boost/fusion/support/is_iterator.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp | 9 +++
   sandbox/SOC/2009/fusion/build.bat | 6 +-
   sandbox/SOC/2009/fusion/project-root.jam | 2
   28 files changed, 256 insertions(+), 167 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/end_impl.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -11,7 +11,7 @@
 
 #include <boost/mpl/end.hpp>
 
-namespace boost { namespace fusion{ namespace extension
+namespace boost { namespace fusion { namespace extension
 {
     template <typename Tag>
     struct end_impl;

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_array.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_array.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_array.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -20,7 +20,6 @@
 #undef BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE
 #undef BOOST_FUSION_ADAPTED_ARRAY_TYPE
 
-#include <boost/fusion/adapted/detail/array/array_iterator.hpp>
 #include <boost/fusion/adapted/detail/array/is_view_impl.hpp>
 #include <boost/fusion/adapted/detail/array/is_sequence_impl.hpp>
 #include <boost/fusion/adapted/detail/array/category_of_impl.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -51,7 +51,7 @@
     inline typename result_of::for_each<Seq&,F const&>::type
     for_each(Seq& seq,F const& f)
     {
- for_each_unrolled<result_of::size<Seq&>::value>::call(
+ detail::for_each_unrolled<result_of::size<Seq&>::value>::call(
                 fusion::begin(seq),f);
     }
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -14,39 +14,25 @@
 #else
 # include <boost/fusion/container/vector/vector10.hpp>
 #endif
-#include <boost/fusion/support/is_view.hpp>
 #include <boost/fusion/support/tag_of.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
 
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/eval_if.hpp>
-
 namespace boost { namespace fusion
 {
     namespace result_of
     {
         //TODO doc!!!
-
         template <typename Seq>
         struct clear
- {
- //BOOST_FUSION_MPL_ASSERT((traits_is_sequence<Seq>));
- BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
-
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
- typedef vector0<> vec;
+ : convert<typename traits::tag_of<Seq>::type, vector0<> >
 #else
- typedef vector<> vec;
+ : convert<typename traits::tag_of<Seq>::type, vector<> >
 #endif
-
- typedef typename
- mpl::eval_if<
- traits::is_view<Seq>
- , mpl::identity<vec>
- , convert<typename traits::tag_of<Seq>::type, vec>
- >::type
- type;
+ {
+ //BOOST_FUSION_MPL_ASSERT((traits_is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
         };
     }
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/zip.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/zip.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/zip.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -63,9 +63,9 @@
         };
     }
 
- VARIADIC_TEMPLATE_A(N)
+ VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
     inline
-#if N
+#if BOOST_FUSION_N
         typename
 #endif
         result_of::zip<
@@ -74,7 +74,7 @@
     zip(EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(BOOST_FUSION_N))
     {
         return
-#if N
+#if BOOST_FUSION_N
             typename
 #endif
             result_of::zip<

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -11,7 +11,7 @@
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 #ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
-# include <boost/fusion/sequence/intrinsic/size.hpp>
+# include <boost/fusion/sequence/intrinsic/empty.hpp>
 #endif
 #include <boost/fusion/iterator/prior.hpp>
 #include <boost/fusion/view/iterator_range/iterator_range.hpp>
@@ -27,7 +27,7 @@
         {
             //BOOST_FUSION_MPL_ASSERT((traits_is_sequence<Seq>));
             BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
- BOOST_FUSION_MPL_ASSERT((size<Seq>));
+ BOOST_FUSION_MPL_ASSERT_NOT((empty<Seq>));
 
             typedef
                 iterator_range<

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -11,7 +11,7 @@
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 #ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
-# include <boost/fusion/sequence/intrinsic/size.hpp>
+# include <boost/fusion/sequence/intrinsic/empty.hpp>
 #endif
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/view/iterator_range/iterator_range.hpp>
@@ -27,7 +27,7 @@
         {
             //BOOST_FUSION_MPL_ASSERT((traits_is_sequence<Seq>));
             BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
- BOOST_FUSION_MPL_ASSERT((size<Seq>));
+ BOOST_FUSION_MPL_ASSERT_NOT((empty<Seq>));
 
             typedef
                 iterator_range<

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -36,7 +36,7 @@
         template <typename It0>
         struct apply
         {
-#if N
+#if BOOST_FUSION_N
             typedef typename result_of::value_of<It0>::type T0;
 #endif
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -29,7 +29,7 @@
 # ifndef BOOST_NO_RVALUE_REFERENCES
     VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
 # endif
-# if N == 1
+# if BOOST_FUSION_N == 1
     explicit
 # endif
 # ifdef BOOST_NO_RVALUE_REFERENCES

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -6,7 +6,7 @@
 #include <boost/fusion/mpl/begin.hpp>
 #include <boost/fusion/mpl/end.hpp>
 #include <boost/fusion/support/internal/variadic_templates/variadic_quote.hpp>
-#include <boost/fusion/support/internal/to_random_access_mpl_seq.hpp>
+#include <boost/fusion/support/internal/variadic_templates/to_random_access_mpl_seq.hpp>
 
 #include <boost/mpl/apply.hpp>
 #include <boost/mpl/unpack_args.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -3,7 +3,6 @@
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-
 #ifndef BOOST_PP_IS_ITERATING
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
@@ -14,21 +13,31 @@
 
 #include <boost/preprocessor/iterate.hpp>
 #include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/arithmetic/mul.hpp>
-#include <boost/preprocessor/arithmetic/add.hpp>
-#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/empty.hpp>
+#include <boost/preprocessor/facilities/intercept.hpp>
 #include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2))
+ template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE,
+ typename K,
+ void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE,
+ typename T,
+ void_)
+ >
         struct make_map;
     }
     
 #define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/make_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#define BOOST_PP_ITERATION_LIMITS (0, FUSION_MAX_MAP_SIZE)
 #include BOOST_PP_ITERATE()
 
 }}
@@ -37,63 +46,71 @@
 #else
 
 #define BOOST_FUSION_N BOOST_PP_ITERATION()
+#if BOOST_FUSION_N
+# define BOOST_FUSION_COMMA ,
+#else
+# define BOOST_FUSION_COMMA
+#endif
 
     namespace result_of
     {
- VARIADIC_TEMPLATE(BOOST_PP_MUL(BOOST_FUSION_N,2))
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename T)
+ >
         struct make_map
- EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
- BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2),
- BOOST_PP_MUL(BOOST_FUSION_N,2))
+#if BOOST_FUSION_N!=FUSION_MAX_MAP_SIZE
+ <
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >
+#endif
         {
-#define BOOST_FUSION_MAP_ELEMENT(Z,INNER_N,_)\
+#define BOOST_FUSION_MAP_ELEMENT(Z,N,_)\
             pair<\
- BOOST_PP_CAT(T,INNER_N),\
- typename detail::as_fusion_element<\
- BOOST_PP_CAT(T,BOOST_PP_ADD(BOOST_FUSION_N,INNER_N))\
- >::type\
+ BOOST_PP_CAT(K,N)\
+ , typename detail::as_fusion_element<BOOST_PP_CAT(T,N)>::type\
>
 
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_MAP_ELEMENT, _)> type;
+ typedef
+ map<BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAP_ELEMENT, _)>
+ type;
 
 #undef BOOST_FUSION_MAP_ELEMENT
         };
     }
 
-#define BOOST_FUSION_MAKE_MAP_ARGS2(Z,INNER_N,_)\
- BOOST_PP_CAT(A,BOOST_PP_ADD(N,INNER_N))\
- BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY())
-
- VARIADIC_TEMPLATE_A(BOOST_PP_MUL(BOOST_FUSION_N,2))
+#if BOOST_FUSION_N
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename A)
+ >
+#endif
     inline
-#if N
+#if BOOST_FUSION_N
         typename
 #endif
         result_of::make_map<
- BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, A)
- , BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAKE_MAP_ARGS2, _)
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
>::type
-
-#define BOOST_FUSION_MAKE_MAP_ARGUMENTS(Z,INNER_N,__)\
- BOOST_PP_CAT(A,BOOST_PP_ADD(BOOST_FUSION_N,INNER_N))\
- BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY())\
- BOOST_PP_CAT(_,INNER_N)
-
- make_map(BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAKE_MAP_ARGUMENTS, _))
-
-#undef BOOST_FUSION_MAKE_MAP_ARGUMENTS
+ make_map(
+ EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(BOOST_FUSION_N))
     {
         return
-#if N
+#if BOOST_FUSION_N
             typename
 #endif
             result_of::make_map<
- BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, A)
- , BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAKE_MAP_ARGS2, _)
- >::type(EXPAND_PARAMETERS_A(N));
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
+ >::type(EXPAND_PARAMETERS_A(BOOST_FUSION_N));
     }
 
-#undef BOOST_FUSION_MAKE_MAP_ARGS2
-
+#undef BOOST_FUSION_COMMA
 #undef BOOST_FUSION_N
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -31,7 +31,7 @@
 
     namespace result_of
     {
- VARIADIC_TEMPLATE(N)
+ VARIADIC_TEMPLATE(BOOST_FUSION_N)
         struct BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)
             EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
                 BOOST_FUSION_MAX_SEQ_SIZE,BOOST_FUSION_N)
@@ -50,7 +50,7 @@
 
     VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
     inline
-#if N
+#if BOOST_FUSION_N
         typename
 #endif
         result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<
@@ -60,7 +60,7 @@
         EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(BOOST_FUSION_N))
     {
         return
-#if N
+#if BOOST_FUSION_N
             typename
 #endif
             result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -3,7 +3,6 @@
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-
 #ifndef BOOST_PP_IS_ITERATING
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
@@ -14,21 +13,31 @@
 
 #include <boost/preprocessor/iterate.hpp>
 #include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/arithmetic/mul.hpp>
-#include <boost/preprocessor/arithmetic/add.hpp>
-#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/empty.hpp>
+#include <boost/preprocessor/facilities/intercept.hpp>
 #include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2))
+ template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE,
+ typename K,
+ void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE,
+ typename T,
+ void_)
+ >
         struct map_tie;
     }
     
 #define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/map_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#define BOOST_PP_ITERATION_LIMITS (0, FUSION_MAX_MAP_SIZE)
 #include BOOST_PP_ITERATE()
 
 }}
@@ -37,21 +46,32 @@
 #else
 
 #define BOOST_FUSION_N BOOST_PP_ITERATION()
+#if BOOST_FUSION_N
+# define BOOST_FUSION_COMMA ,
+#else
+# define BOOST_FUSION_COMMA
+#endif
 
     namespace result_of
     {
- VARIADIC_TEMPLATE(BOOST_PP_MUL(BOOST_FUSION_N,2))
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename T)
+ >
         struct map_tie
- EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
- BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2),
- BOOST_PP_MUL(BOOST_FUSION_N,2))
+#if BOOST_FUSION_N!=FUSION_MAX_MAP_SIZE
+ <
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >
+#endif
         {
-#define BOOST_FUSION_MAP_ELEMENT(Z,INNER_N,_)\
+#define BOOST_FUSION_MAP_ELEMENT(Z,N,_)\
             pair<\
- BOOST_PP_CAT(T,INNER_N),\
- typename detail::as_fusion_element_ref<\
- BOOST_PP_CAT(T,BOOST_PP_ADD(N,INNER_N))\
- >::type\
+ BOOST_PP_CAT(K,N)\
+ , typename detail::as_fusion_element_ref<BOOST_PP_CAT(T,N)>::type\
>
 
             typedef
@@ -62,40 +82,34 @@
         };
     }
 
-#define BOOST_FUSION_MAP_TIE_ARGS2(Z,INNER_N,_)\
- BOOST_PP_CAT(A,BOOST_PP_ADD(N,INNER_N))\
- BOOST_FUSION_R_ELSE_LREF(BOOST_PP_EMPTY())
-
- VARIADIC_TEMPLATE_A(BOOST_PP_MUL(BOOST_FUSION_N,2))
+#if BOOST_FUSION_N
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename A)
+ >
+#endif
     inline
-#if N
+#if BOOST_FUSION_N
         typename
 #endif
         result_of::map_tie<
- BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, A)
- , BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAP_TIE_ARGS2, _)
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(BOOST_FUSION_N)
>::type
-
-#define BOOST_FUSION_MAP_TIE_ARGUMENTS(Z,INNER_N,__)\
- BOOST_PP_CAT(A,BOOST_PP_ADD(BOOST_FUSION_N,INNER_N))\
- BOOST_FUSION_R_ELSE_LREF(BOOST_PP_EMPTY())\
- BOOST_PP_CAT(_,INNER_N)
-
- map_tie(BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAP_TIE_ARGUMENTS, _))
-
-#undef BOOST_FUSION_MAP_TIE_ARGUMENTS
+ map_tie(EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_LREF(BOOST_FUSION_N))
     {
         return
-#if N
+#if BOOST_FUSION_N
             typename
 #endif
             result_of::map_tie<
- BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, A)
- , BOOST_PP_ENUM(N, BOOST_FUSION_MAP_TIE_ARGS2, _)
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(BOOST_FUSION_N)
>::type(EXPAND_PARAMETERS_A(BOOST_FUSION_N));
     }
 
-#undef BOOST_FUSION_MAP_TIE_ARGS2
-
+#undef BOOST_FUSION_COMMA
 #undef BOOST_FUSION_N
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -50,7 +50,7 @@
 
     VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
     inline
-#if N
+#if BOOST_FUSION_N
         typename
 #endif
         result_of::BOOST_FUSION_FUNCTION_NAME<
@@ -60,7 +60,7 @@
         EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_LREF(BOOST_FUSION_N))
     {
         return
-#if N
+#if BOOST_FUSION_N
             typename
 #endif
             result_of::BOOST_FUSION_FUNCTION_NAME<

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -26,6 +26,9 @@
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/or.hpp>
 //#include <boost/utility/enable_if.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/mpl/equal_to.hpp>
+#endif
 #ifdef BOOST_NO_RVALUE_REFERENCES
 # include <boost/call_traits.hpp>
 #endif
@@ -154,7 +157,10 @@
           : car(fusion::front(seq_assign.get()))\
           , cdr(detail::assign_by_deref(),\
                   fusion::next(fusion::begin(seq_assign.get())))\
- {}
+ {\
+ BOOST_FUSION_MPL_ASSERT_NOT((\
+ mpl::equal_to<size,result_of::size<SeqRef> >));\
+ }
 
         BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_CONS_ASSIGN_CTOR,_);
 
@@ -187,10 +193,23 @@
         cons&
         operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
         {
+ BOOST_FUSION_MPL_ASSERT_NOT((result_of::empty<Seq>));
+
             assign(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
             return *this;
         }
 
+ template<typename Seq>
+ cons&
+ operator=(cons const& seq)
+ {
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ return this->operator=<cons<Car,Cdr> >(seq);
+#else
+ return this->operator=<cons<Car,Cdr> const&>(seq);
+#endif
+ }
+
         template<typename It>
         void
         assign(It const& it)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -5,6 +5,9 @@
 
 #ifndef BOOST_PP_IS_ITERATING
 # include <boost/fusion/container/vector/vector_fwd.hpp>
+# ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+# endif
 # include <boost/fusion/sequence/intrinsic/begin.hpp>
 # include <boost/fusion/iterator/deref.hpp>
 # include <boost/fusion/iterator/next.hpp>
@@ -26,6 +29,9 @@
 # include <boost/mpl/int.hpp>
 # include <boost/mpl/bool.hpp>
 # include <boost/mpl/at.hpp>
+# ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/mpl/equal_to.hpp>
+# endif
 
 # include <boost/type_traits/add_const.hpp>
 # include <boost/utility/enable_if.hpp>
@@ -39,22 +45,17 @@
 # include <boost/fusion/container/vector/detail/end_impl.hpp>
 # include <boost/fusion/container/vector/detail/deref_impl.hpp>
 # include <boost/fusion/container/vector/detail/value_of_impl.hpp>
-# include <boost/fusion/container/vector/detail/next_impl.hpp>
-# include <boost/fusion/container/vector/detail/prior_impl.hpp>
-# include <boost/fusion/container/vector/detail/equal_to_impl.hpp>
-# include <boost/fusion/container/vector/detail/distance_impl.hpp>
-# include <boost/fusion/container/vector/detail/advance_impl.hpp>
 
 # define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/vector_n.hpp>
 # define BOOST_PP_ITERATION_LIMITS (BOOST_FUSION_FROM, BOOST_FUSION_TO)
 # include BOOST_PP_ITERATE()
 
 #else
-# define N BOOST_PP_ITERATION()
+# define BOOST_FUSION_N BOOST_PP_ITERATION()
 
 namespace boost { namespace fusion
 {
-# if !N
+# if !BOOST_FUSION_N
     struct void_;
 
     template <typename T0=void_>
@@ -66,12 +67,15 @@
 # else
     template <BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename T)>
     struct BOOST_PP_CAT(vector, BOOST_FUSION_N)
- : sequence_base<BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N,T)> >
+ : sequence_base<BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N,T)>
+ >
 # endif
     {
         typedef
- mpl::BOOST_PP_CAT(vector, BOOST_FUSION_N)
- <BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)>
+ mpl::BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >
         types;
         typedef vector_tag fusion_tag;
         typedef fusion_sequence_tag tag;
@@ -89,7 +93,7 @@
 
 # undef BOOST_FUSION_DEFAULT_MEMBER_INIT
 
-# if N
+# if BOOST_FUSION_N
 # define BOOST_FUSION_SELF_TYPE\
             BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N,T)>
 
@@ -99,9 +103,11 @@
                     BOOST_PP_CAT(m,N))
 
 # define BOOST_FUSION_VECTOR_CTOR(COMBINATION,_)\
- BOOST_PP_CAT(vector, N)(\
- BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N,T)> COMBINATION vec)\
- : BOOST_PP_ENUM(N, BOOST_FUSION_MEMBER_INIT, COMBINATION)\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<\
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N,T)\
+ > COMBINATION vec)\
+ : BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MEMBER_INIT, COMBINATION)\
         {}
 
         BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_CTOR,_)
@@ -114,12 +120,12 @@
             BOOST_PP_CAT(vector, BOOST_FUSION_N)<void_> COMBINATION vec)\
         {}
 
- BOOST_FUSION_ALL_CTOR_COMBINATIONS(VECTOR_CTOR,_)
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_CTOR,_)
 
 # endif
 # undef BOOST_FUSION_VECTOR_CTOR
 
-# if N
+# if BOOST_FUSION_N
 # define BOOST_FUSION_MEMBER_INIT(Z, N, _)\
         BOOST_PP_CAT(m,N)(\
             BOOST_FUSION_FORWARD(BOOST_PP_CAT(A,N), BOOST_PP_CAT(_,N)))
@@ -143,7 +149,7 @@
                     BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()) _)
 #endif
             )
- : BOOST_PP_ENUM(N, BOOST_FUSION_MEMBER_INIT, _)
+ : BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MEMBER_INIT, _)
         {}
 
 # undef BOOST_FUSION_MEMBER_INIT
@@ -155,10 +161,13 @@
             fusion::advance_c<N>(fusion::begin(seq_assign.get()))))
 # define BOOST_FUSION_VECTOR_ASSIGN_CTOR(COMBINATION,_)\
         template<typename SeqRef>\
- BOOST_PP_CAT(vector,N)(\
+ BOOST_PP_CAT(vector,BOOST_FUSION_N)(\
             detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
- : BOOST_PP_ENUM(N, BOOST_FUSION_MEMBER_INIT, _)\
- {}
+ : BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MEMBER_INIT, _)\
+ {\
+ BOOST_FUSION_MPL_ASSERT((\
+ mpl::equal_to<size,result_of::size<SeqRef> >));\
+ }
 
         BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_ASSIGN_CTOR,_);
 
@@ -167,20 +176,28 @@
 # else
 # define BOOST_FUSION_VECTOR_ASSIGN_CTOR(COMBINATION,_)\
         template<typename SeqRef>\
- BOOST_PP_CAT(vector,N)(\
+ BOOST_PP_CAT(vector,BOOST_FUSION_N)(\
             detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
- {}
+ {\
+ BOOST_FUSION_MPL_ASSERT((\
+ mpl::equal_to<size,result_of::size<SeqRef> >));\
+ }
 
         BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_ASSIGN_CTOR,_);
 
-# undef VBOOST_FUSION_ECTOR_ASSIGN_CTOR
+# undef BOOST_FUSION_VECTOR_ASSIGN_CTOR
 # endif
 
         template <typename Seq>
- BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>&
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >&
         operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
         {
-# if N
+ BOOST_FUSION_MPL_ASSERT((
+ mpl::equal_to<size,result_of::size<Seq> >));
+
+# if BOOST_FUSION_N
             typedef typename
                 result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
             It0;
@@ -197,7 +214,11 @@
             \
             BOOST_PP_CAT(m, N) = fusion::deref(BOOST_PP_CAT(it, N));
 
- BOOST_PP_REPEAT_FROM_TO(1, N, BOOST_FUSION_DEREF_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_FUSION_N,
+ BOOST_FUSION_DEREF_MEMBER_ASSIGN,
+ _)
 
 # undef BOOST_FUSION_DEREF_MEMBER_ASSIGN
 # endif
@@ -205,8 +226,13 @@
             return *this;
         }
 
- BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>&
- operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>const& seq)
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >&
+ operator=(
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >const& seq)
         {
 #ifdef BOOST_NO_RVALUE_REFERENCES
             return this->operator=<

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -20,11 +20,6 @@
 # include <boost/fusion/container/vector/detail/end_impl.hpp>
 # include <boost/fusion/container/vector/detail/deref_impl.hpp>
 # include <boost/fusion/container/vector/detail/value_of_impl.hpp>
-# include <boost/fusion/container/vector/detail/next_impl.hpp>
-# include <boost/fusion/container/vector/detail/prior_impl.hpp>
-# include <boost/fusion/container/vector/detail/equal_to_impl.hpp>
-# include <boost/fusion/container/vector/detail/distance_impl.hpp>
-# include <boost/fusion/container/vector/detail/advance_impl.hpp>
 
 # include <boost/fusion/container/vector/detail/variadic_templates/vector.hpp>
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -22,7 +22,6 @@
         template <typename Tag>
         struct distance_impl
         {
- // default implementation
             template <typename FirstRef, typename LastRef>
             struct apply
               : distance_detail::linear_distance<FirstRef, LastRef>

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -10,7 +10,9 @@
 #include <boost/fusion/iterator/detail/advance.hpp>
 #include <boost/fusion/support/iterator_base.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
-#include <boost/fusion/support/internal/dummy_tag.hpp>
+
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
 
 namespace boost { namespace fusion
 {
@@ -33,11 +35,10 @@
 
         //TODO doc
 
- // default implementation
         template <typename ItRef, typename N>
         struct advance
           : extension::advance_impl<
- typename detail::get_dummy_tag<ItRef>::type
+ typename mpl::apply<mpl::always<void_>,ItRef>::type
>::template apply<ItRef,N>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -10,7 +10,8 @@
 
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
-namespace boost {
+namespace boost
+{
     namespace fusion
     {
         struct fusion_sequence_tag;

Modified: sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -29,7 +29,8 @@
 
             typedef typename
                 fusion::result_of::convert<
- typename fusion::traits::tag_of<Seq>::type, result
+ typename fusion::traits::tag_of<Seq>::type
+ , result
>::type
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -8,16 +8,37 @@
 #ifndef BOOST_FUSION_SEQUENCE_CONVERT_HPP
 #define BOOST_FUSION_SEQUENCE_CONVERT_HPP
 
+#include <boost/config.hpp>
+#include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
 
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+
+//TODO in /sequence/intrisic/ or /container/?
 //TODO doc!!!
 namespace boost { namespace fusion
 {
+ struct void_;
+
     namespace extension
     {
         template <typename Tag>
- struct convert_impl;
+ struct convert_impl
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef typename result_of::as_vector<SeqRef>::type type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return fusion::as_vector(seq);
+ }
+ };
+ };
     }
 
     namespace result_of
@@ -30,8 +51,8 @@
 
             typedef typename extension::convert_impl<Tag> gen;
 
- typedef typename gen::
- template apply<typename detail::add_lref<Seq>::type>::type
+ typedef typename
+ gen::template apply<typename detail::add_lref<Seq>::type>::type
             type;
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -58,6 +58,7 @@
                       , list_tag
>
>));
+
             BOOST_FUSION_INDEX_CHECK(N::value,size<Seq>::value);
         };
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -7,8 +7,9 @@
 #define BOOST_FUSION_SEQUENCE_SEQUENCE_FACADE_HPP
 
 #include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/internal/dummy_tag.hpp>
 
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/always.hpp>
 #include <boost/mpl/bool.hpp>
 
 namespace boost { namespace fusion
@@ -50,35 +51,35 @@
         template<typename SeqRef,typename Key>
         struct at_key
           : extension::at_key_impl<
- typename detail::get_dummy_tag<SeqRef>::type
+ typename mpl::apply<mpl::always<void_>,SeqRef>::type
>::template apply<SeqRef,Key>
         {};
 
         template<typename SeqRef>
         struct empty
           : extension::empty_impl<
- typename detail::get_dummy_tag<SeqRef>::type
+ typename mpl::apply<mpl::always<void_>,SeqRef>::type
>::template apply<SeqRef>
         {};
 
         template<typename SeqRef>
         struct size
           : extension::size_impl<
- typename detail::get_dummy_tag<SeqRef>::type
+ typename mpl::apply<mpl::always<void_>,SeqRef>::type
>::template apply<SeqRef>
         {};
 
         template<typename SeqRef,typename Key>
         struct has_key
           : extension::has_key_impl<
- typename detail::get_dummy_tag<SeqRef>::type
+ typename mpl::apply<mpl::always<void_>,SeqRef>::type
>::template apply<SeqRef,Key>
         {};
 
         template<typename SeqRef,typename Key>
         struct value_at_key
           : extension::value_at_key_impl<
- typename detail::get_dummy_tag<SeqRef>::type
+ typename mpl::apply<mpl::always<void_>,SeqRef>::type
>::template apply<SeqRef,Key>
         {};
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/is_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/is_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/is_iterator.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -8,6 +8,7 @@
 #ifndef BOOST_FUSION_SUPPORT_IS_ITERATOR_HPP
 #define BOOST_FUSION_SUPPORT_IS_ITERATOR_HPP
 
+#include <boost/fusion/support/tag_of.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/iterator_base.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -8,6 +8,9 @@
 #ifndef BOOST_FUSION_VIEW_SINGLE_VIEW_SINGLE_VIEW_HPP
 #define BOOST_FUSION_VIEW_SINGLE_VIEW_SINGLE_VIEW_HPP
 
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+#endif
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/sequence_base.hpp>
@@ -78,7 +81,9 @@
         single_view(\
             detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
           : val(fusion::front(seq_assign.get()))\
- {}
+ {\
+ BOOST_FUSION_STATIC_ASSERT((result_of::size<SeqRef>::value==1));\
+ }
 
         BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_SINGLE_VIEW_ASSIGN_CTOR,_)
 
@@ -97,6 +102,8 @@
         single_view&\
         operator=(detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
         {\
+ BOOST_FUSION_STATIC_ASSERT((result_of::size<SeqRef>::value==1));\
+ \
             val=fusion::front(seq_assign.get());\
             return *this;\
         }

Modified: sandbox/SOC/2009/fusion/build.bat
==============================================================================
--- sandbox/SOC/2009/fusion/build.bat (original)
+++ sandbox/SOC/2009/fusion/build.bat 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -16,7 +16,7 @@
         call :msvc
     ) else (
         if "%1" == "" (
- call :gcc
+ call :msvc
         ) else (
             echo Unknown toolset '%1'
             goto :eof
@@ -29,8 +29,8 @@
 goto :eof
 
 :gcc
-rem set PATH=C:\MinGW3\bin;%PATH%
-set PATH=C:\MinGW\bin;%PATH%
+set PATH=C:\MinGW3\bin;%PATH%
+rem set PATH=C:\MinGW\bin;%PATH%
 set TOOLSET=gcc
 goto :eof
 

Modified: sandbox/SOC/2009/fusion/project-root.jam
==============================================================================
--- sandbox/SOC/2009/fusion/project-root.jam (original)
+++ sandbox/SOC/2009/fusion/project-root.jam 2009-08-14 20:08:51 EDT (Fri, 14 Aug 2009)
@@ -10,7 +10,7 @@
     : requirements <include>.
                    <include>$(BOOST_INCLUDES_PATH)
                    <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
- <toolset>gcc:<cxxflags>-std=c++0x
+# <toolset>gcc:<cxxflags>-std=c++0x
     : build-dir ../bin
     : default-build debug <link>shared <runtime-link>shared <threading>multi
     ;


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