Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r85669 - in branches/release/boost/fusion: . adapted/struct/detail algorithm/auxiliary container container/deque container/deque/detail container/deque/detail/cpp03 container/deque/detail/preprocessed container/generation container/generation/detail container/list container/list/detail container/list/detail/preprocessed container/map container/map/detail container/map/detail/cpp03 container/map/detail/preprocessed container/vector container/vector/detail functional/adapter include iterator/detail sequence/intrinsic/detail support view/detail view/iterator_range/detail view/nview view/zip_view view/zip_view/detail
From: joel_at_[hidden]
Date: 2013-09-15 02:27:58


Author: djowel
Date: 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013)
New Revision: 85669
URL: http://svn.boost.org/trac/boost/changeset/85669

Log:
big merge from trunk

Added:
   branches/release/boost/fusion/algorithm/auxiliary/move.hpp
      - copied, changed from r82583, trunk/boost/fusion/algorithm/auxiliary/move.hpp
   branches/release/boost/fusion/container/deque/detail/build_deque.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/deque/detail/build_deque.hpp
   branches/release/boost/fusion/container/deque/detail/cpp03/
      - copied from r82784, trunk/boost/fusion/container/deque/detail/cpp03/
   branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/deque/detail/deque_keyed_values.hpp
   branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp
      - copied unchanged from r82696, trunk/boost/fusion/container/generation/detail/pp_deque_tie.hpp
   branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp
      - copied unchanged from r82696, trunk/boost/fusion/container/generation/detail/pp_make_deque.hpp
   branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/generation/detail/pp_make_map.hpp
   branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/generation/detail/pp_map_tie.hpp
   branches/release/boost/fusion/container/map/detail/at_key_impl.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/at_key_impl.hpp
   branches/release/boost/fusion/container/map/detail/build_map.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/build_map.hpp
   branches/release/boost/fusion/container/map/detail/cpp03/
      - copied from r82784, trunk/boost/fusion/container/map/detail/cpp03/
   branches/release/boost/fusion/container/map/detail/map_impl.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/map_impl.hpp
   branches/release/boost/fusion/container/map/detail/map_index.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/map_index.hpp
   branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/value_at_key_impl.hpp
   branches/release/boost/fusion/container/map/map_iterator.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/map_iterator.hpp
   branches/release/boost/fusion/include/move.hpp
      - copied unchanged from r82583, trunk/boost/fusion/include/move.hpp
Replaced:
   branches/release/boost/fusion/container/map/detail/at_impl.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/at_impl.hpp
   branches/release/boost/fusion/container/map/detail/begin_impl.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/begin_impl.hpp
   branches/release/boost/fusion/container/map/detail/end_impl.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/end_impl.hpp
   branches/release/boost/fusion/container/map/detail/value_at_impl.hpp
      - copied unchanged from r82784, trunk/boost/fusion/container/map/detail/value_at_impl.hpp
Deleted:
   branches/release/boost/fusion/container/deque/detail/as_deque.hpp
   branches/release/boost/fusion/container/deque/detail/deque_forward_ctor.hpp
   branches/release/boost/fusion/container/deque/detail/deque_initial_size.hpp
   branches/release/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp
   branches/release/boost/fusion/container/deque/detail/pp_deque.hpp
   branches/release/boost/fusion/container/deque/detail/pp_deque_fwd.hpp
   branches/release/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp
   branches/release/boost/fusion/container/deque/detail/preprocessed/
   branches/release/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp
   branches/release/boost/fusion/container/deque/limits.hpp
   branches/release/boost/fusion/container/map/detail/as_map.hpp
   branches/release/boost/fusion/container/map/detail/convert_impl.hpp
   branches/release/boost/fusion/container/map/detail/deref_data_impl.hpp
   branches/release/boost/fusion/container/map/detail/deref_impl.hpp
   branches/release/boost/fusion/container/map/detail/key_of_impl.hpp
   branches/release/boost/fusion/container/map/detail/map_forward_ctor.hpp
   branches/release/boost/fusion/container/map/detail/preprocessed/
   branches/release/boost/fusion/container/map/detail/value_of_data_impl.hpp
   branches/release/boost/fusion/container/map/detail/value_of_impl.hpp
   branches/release/boost/fusion/container/map/limits.hpp
Properties modified:
   branches/release/boost/fusion/ (props changed)
Text files modified:
   branches/release/boost/fusion/adapted.hpp | 2
   branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp | 2
   branches/release/boost/fusion/algorithm/auxiliary/copy.hpp | 2
   branches/release/boost/fusion/algorithm/auxiliary/move.hpp | 2
   branches/release/boost/fusion/container/deque.hpp | 1
   branches/release/boost/fusion/container/deque/back_extended_deque.hpp | 2
   branches/release/boost/fusion/container/deque/convert.hpp | 38 +++++---
   branches/release/boost/fusion/container/deque/deque.hpp | 23 ++--
   branches/release/boost/fusion/container/deque/deque_fwd.hpp | 8
   /dev/null | 131 -----------------------------
   branches/release/boost/fusion/container/deque/detail/build_deque.hpp | 74 ++++++++++++++++
   branches/release/boost/fusion/container/deque/detail/convert_impl.hpp | 17 ++-
   /dev/null | 45 ----------
   /dev/null | 64 --------------
   branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp | 67 +++++++++++++++
   /dev/null | 58 -------------
   branches/release/boost/fusion/container/deque/detail/keyed_element.hpp | 10 +-
   /dev/null | 156 -----------------------------------
   /dev/null | 54 ------------
   /dev/null | 111 -------------------------
   /dev/null | 67 ---------------
   branches/release/boost/fusion/container/deque/front_extended_deque.hpp | 2
   /dev/null | 32 -------
   branches/release/boost/fusion/container/generation/cons_tie.hpp | 4
   branches/release/boost/fusion/container/generation/deque_tie.hpp | 100 ++++------------------
   branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp | 105 +++++++++++++++++++++++
   branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp | 121 +++++++++++++++++++++++++++
   branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp | 132 ++++++++++++++++++++++++++++++
   branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp | 136 ++++++++++++++++++++++++++++++
   branches/release/boost/fusion/container/generation/make_cons.hpp | 4
   branches/release/boost/fusion/container/generation/make_deque.hpp | 113 +++----------------------
   branches/release/boost/fusion/container/generation/make_map.hpp | 142 ++++++++------------------------
   branches/release/boost/fusion/container/generation/map_tie.hpp | 136 +++++-------------------------
   branches/release/boost/fusion/container/list/cons.hpp | 8
   branches/release/boost/fusion/container/list/cons_fwd.hpp | 7 +
   branches/release/boost/fusion/container/list/cons_iterator.hpp | 22 ++--
   branches/release/boost/fusion/container/list/detail/begin_impl.hpp | 2
   branches/release/boost/fusion/container/list/detail/build_cons.hpp | 6
   branches/release/boost/fusion/container/list/detail/empty_impl.hpp | 4
   branches/release/boost/fusion/container/list/detail/end_impl.hpp | 4
   branches/release/boost/fusion/container/list/detail/list_to_cons.hpp | 4
   branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp | 2
   branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp | 2
   branches/release/boost/fusion/container/list/detail/reverse_cons.hpp | 6
   branches/release/boost/fusion/container/list/list.hpp | 2
   branches/release/boost/fusion/container/map.hpp | 1
   branches/release/boost/fusion/container/map/convert.hpp | 40 +++++---
   /dev/null | 130 -----------------------------
   branches/release/boost/fusion/container/map/detail/at_impl.hpp | 57 ++++++++++++
   branches/release/boost/fusion/container/map/detail/at_key_impl.hpp | 58 +++++++++++++
   branches/release/boost/fusion/container/map/detail/begin_impl.hpp | 38 ++++++++
   branches/release/boost/fusion/container/map/detail/build_map.hpp | 75 +++++++++++++++++
   /dev/null | 45 ----------
   /dev/null | 47 ----------
   /dev/null | 45 ----------
   branches/release/boost/fusion/container/map/detail/end_impl.hpp | 38 ++++++++
   /dev/null | 32 -------
   /dev/null | 38 --------
   branches/release/boost/fusion/container/map/detail/map_impl.hpp | 176 ++++++++++++++++++++++++++++++++++++++++
   branches/release/boost/fusion/container/map/detail/map_index.hpp | 19 ++++
   branches/release/boost/fusion/container/map/detail/value_at_impl.hpp | 37 ++++++++
   branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp | 38 ++++++++
   /dev/null | 32 -------
   /dev/null | 39 --------
   /dev/null | 27 ------
   branches/release/boost/fusion/container/map/map.hpp | 143 ++++++++++++++++++--------------
   branches/release/boost/fusion/container/map/map_fwd.hpp | 50 +++-------
   branches/release/boost/fusion/container/map/map_iterator.hpp | 148 +++++++++++++++++++++++++++++++++
   branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp | 11 +-
   branches/release/boost/fusion/container/vector/detail/vector_n.hpp | 87 +++++++++++++------
   branches/release/boost/fusion/container/vector/vector.hpp | 11 ++
   branches/release/boost/fusion/functional/adapter/unfused.hpp | 2
   branches/release/boost/fusion/functional/adapter/unfused_typed.hpp | 2
   branches/release/boost/fusion/include/move.hpp | 12 ++
   branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp | 4
   branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp | 2
   branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp | 2
   branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp | 4
   branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp | 2
   branches/release/boost/fusion/support/deduce_sequence.hpp | 2
   branches/release/boost/fusion/support/pair.hpp | 40 +++++++++
   branches/release/boost/fusion/support/segmented_fold_until.hpp | 8
   branches/release/boost/fusion/view/detail/strictest_traversal.hpp | 2
   branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp | 8
   branches/release/boost/fusion/view/nview/nview.hpp | 2
   branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp | 2
   branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp | 2
   branches/release/boost/fusion/view/zip_view/zip_view.hpp | 4
   96 files changed, 1794 insertions(+), 1814 deletions(-)

Modified: branches/release/boost/fusion/adapted.hpp
==============================================================================
--- branches/release/boost/fusion/adapted.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/adapted.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,7 +18,7 @@
 
 // The std_tuple_iterator adaptor only supports implementations
 // using variadic templates
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 #include <boost/fusion/adapted/std_tuple.hpp>
 #endif
 

Modified: branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp
==============================================================================
--- branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/adapted/struct/detail/define_struct_inline.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -36,7 +36,7 @@
 // an alternate implementation for these metafunctions is used that does not
 // require such specializations. The alternate implementation takes longer
 // to compile so its use is restricted to the offending compilers.
-// For MSVC, the bug was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates
+// For MSVC, the bug was was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates
 // For GCC, 4.4 and earlier are no longer maintained so there is no need
 // to report a bug.
 #if defined(BOOST_MSVC) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4)))

Modified: branches/release/boost/fusion/algorithm/auxiliary/copy.hpp
==============================================================================
--- branches/release/boost/fusion/algorithm/auxiliary/copy.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/algorithm/auxiliary/copy.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -69,7 +69,7 @@
     copy(Seq1 const& src, Seq2& dest)
     {
         BOOST_STATIC_ASSERT(
- result_of::size<Seq1>::value == result_of::size<Seq2>::value);
+ result_of::size<Seq1>::value <= result_of::size<Seq2>::value);
 
         detail::sequence_copy<
             Seq1 const, Seq2>::

Copied and modified: branches/release/boost/fusion/algorithm/auxiliary/move.hpp (from r82583, trunk/boost/fusion/algorithm/auxiliary/move.hpp)
==============================================================================
--- trunk/boost/fusion/algorithm/auxiliary/move.hpp Mon Jan 21 14:24:01 2013 (r82583, copy source)
+++ branches/release/boost/fusion/algorithm/auxiliary/move.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -69,7 +69,7 @@
     move(Seq1&& src, Seq2& dest)
     {
         BOOST_STATIC_ASSERT(
- result_of::size<Seq1>::value == result_of::size<Seq2>::value);
+ result_of::size<Seq1>::value <= result_of::size<Seq2>::value);
 
         detail::sequence_move<
             Seq1, Seq2>::

Modified: branches/release/boost/fusion/container/deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,6 +8,7 @@
 #if !defined(BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036)
 #define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036
 
+#include <boost/fusion/container/deque/deque_fwd.hpp>
 #include <boost/fusion/container/deque/deque.hpp>
 #include <boost/fusion/container/deque/convert.hpp>
 

Modified: branches/release/boost/fusion/container/deque/back_extended_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/back_extended_deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/back_extended_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -31,7 +31,7 @@
           : base(val, deque)
         {}
 
-#if defined(BOOST_NO_RVALUE_REFERENCES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         template <typename Arg>
         back_extended_deque(Deque const& deque, Arg& val)
           : base(val, deque)

Modified: branches/release/boost/fusion/container/deque/convert.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/convert.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/convert.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2013 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -8,25 +8,32 @@
 #if !defined(FUSION_CONVERT_20061213_2207)
 #define FUSION_CONVERT_20061213_2207
 
-#include <boost/fusion/container/deque/detail/as_deque.hpp>
 #include <boost/fusion/container/deque/detail/convert_impl.hpp>
 #include <boost/fusion/container/deque/deque.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+///////////////////////////////////////////////////////////////////////////////
+// C++03 (non-variadic) implementation
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/deque/detail/cpp03/build_deque.hpp>
+
+#else
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic implementation
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/deque/detail/build_deque.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
         template <typename Sequence>
- struct as_deque
+ struct as_deque :
+ detail::build_deque<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ >
         {
- typedef typename
- detail::as_deque<result_of::size<Sequence>::value>
- gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
         };
     }
 
@@ -34,17 +41,18 @@
     inline typename result_of::as_deque<Sequence>::type
     as_deque(Sequence& seq)
     {
- typedef typename result_of::as_deque<Sequence>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_deque<Sequence> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
     }
 
     template <typename Sequence>
     inline typename result_of::as_deque<Sequence const>::type
     as_deque(Sequence const& seq)
     {
- typedef typename result_of::as_deque<Sequence const>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_deque<Sequence const> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
     }
 }}
 
 #endif
+#endif

Modified: branches/release/boost/fusion/container/deque/deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,26 +8,23 @@
 #if !defined(BOOST_FUSION_DEQUE_26112006_1649)
 #define BOOST_FUSION_DEQUE_26112006_1649
 
-#include <boost/config.hpp>
+# include <boost/fusion/container/deque/deque_fwd.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
-// With variadics, we will use the PP version
+// Without variadics, we will use the PP version
 ///////////////////////////////////////////////////////////////////////////////
-#if defined(BOOST_NO_VARIADIC_TEMPLATES)
-# include <boost/fusion/container/deque/detail/pp_deque.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+# include <boost/fusion/container/deque/detail/cpp03/deque.hpp>
 #else
-# if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-# define BOOST_FUSION_HAS_VARIADIC_DEQUE
-# endif
 
 ///////////////////////////////////////////////////////////////////////////////
-// C++11 variadic interface
+// C++11 interface
 ///////////////////////////////////////////////////////////////////////////////
 #include <boost/fusion/support/sequence_base.hpp>
 #include <boost/fusion/support/detail/access.hpp>
 #include <boost/fusion/support/is_sequence.hpp>
 #include <boost/fusion/container/deque/detail/keyed_element.hpp>
-#include <boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp>
+#include <boost/fusion/container/deque/detail/deque_keyed_values.hpp>
 #include <boost/fusion/container/deque/deque_fwd.hpp>
 #include <boost/fusion/container/deque/detail/value_at_impl.hpp>
 #include <boost/fusion/container/deque/detail/at_impl.hpp>
@@ -93,7 +90,7 @@
           : base(seq)
         {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         template <typename ...Elements>
         deque(deque<Elements...>&& seq)
           : base(std::forward<deque<Elements...>>(seq))
@@ -104,7 +101,7 @@
           : base(seq)
         {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         deque(deque&& seq)
           : base(std::forward<deque>(seq))
         {}
@@ -119,7 +116,7 @@
           : base(detail::deque_keyed_values<Head_, Tail_...>::construct(head, tail...))
         {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         template <typename Head_, typename ...Tail_>
         explicit deque(Head_&& head, Tail_&&... tail)
           : base(detail::deque_keyed_values<Head, Tail...>
@@ -147,7 +144,7 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         template <typename T>
         deque& operator=(T&& rhs)
         {

Modified: branches/release/boost/fusion/container/deque/deque_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/deque_fwd.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/deque_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,10 +13,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 // With no decltype and variadics, we will use the C++03 version
 ///////////////////////////////////////////////////////////////////////////////
-#if (defined(BOOST_NO_DECLTYPE) \
- || defined(BOOST_NO_VARIADIC_TEMPLATES) \
- || defined(BOOST_NO_RVALUE_REFERENCES))
-# include <boost/fusion/container/deque/detail/pp_deque_fwd.hpp>
+#if (defined(BOOST_NO_CXX11_DECLTYPE) \
+ || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \
+ || defined(BOOST_NO_CXX11_RVALUE_REFERENCES))
+# include <boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp>
 #else
 # if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
 # define BOOST_FUSION_HAS_VARIADIC_DEQUE

Deleted: branches/release/boost/fusion/container/deque/detail/as_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/as_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,131 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_AS_DEQUE_20061213_2210)
-#define FUSION_AS_DEQUE_20061213_2210
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/fusion/container/deque/deque.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_deque;
-
- template <>
- struct as_deque<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef deque<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return deque<>();
- }
- };
-}}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/as_deque.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
-
-namespace boost { namespace fusion { namespace detail
-{
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/deque/detail/as_deque.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_deque<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef deque<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator const& i0)
- {
- typedef apply<Iterator> gen;
- typedef typename gen::type result;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return result(BOOST_PP_ENUM_PARAMS(N, *i));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Copied: branches/release/boost/fusion/container/deque/detail/build_deque.hpp (from r82784, trunk/boost/fusion/container/deque/detail/build_deque.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/deque/detail/build_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/deque/detail/build_deque.hpp)
@@ -0,0 +1,74 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BUILD_DEQUE_02032013_1921)
+#define BOOST_FUSION_BUILD_DEQUE_02032013_1921
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/container/deque/front_extended_deque.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename First, typename Last
+ , bool is_empty = result_of::equal_to<First, Last>::value>
+ struct build_deque;
+
+ template <typename First, typename Last>
+ struct build_deque<First, Last, true>
+ {
+ typedef deque<> type;
+ static type
+ call(First const&, Last const&)
+ {
+ return type();
+ }
+ };
+
+ template <typename T, typename Rest>
+ struct push_front_deque;
+
+ template <typename T, typename ...Rest>
+ struct push_front_deque<T, deque<Rest...>>
+ {
+ typedef deque<T, Rest...> type;
+
+ static type
+ call(T const& first, deque<Rest...> const& rest)
+ {
+ return type(front_extended_deque<deque<Rest...>, T>(rest, first));
+ }
+ };
+
+ template <typename First, typename Last>
+ struct build_deque<First, Last, false>
+ {
+ typedef
+ build_deque<typename result_of::next<First>::type, Last>
+ next_build_deque;
+
+ typedef push_front_deque<
+ typename result_of::value_of<First>::type
+ , typename next_build_deque::type>
+ push_front;
+
+ typedef typename push_front::type type;
+
+ static type
+ call(First const& f, Last const& l)
+ {
+ typename result_of::value_of<First>::type v = *f;
+ return push_front::call(
+ v, next_build_deque::call(fusion::next(f), l));
+ }
+ };
+}}}
+
+#endif

Modified: branches/release/boost/fusion/container/deque/detail/convert_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/convert_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/detail/convert_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
 #if !defined(FUSION_CONVERT_IMPL_20061213_2207)
 #define FUSION_CONVERT_IMPL_20061213_2207
 
-#include <boost/fusion/container/deque/detail/as_deque.hpp>
+#include <boost/fusion/container/deque/convert.hpp>
 #include <boost/fusion/container/deque/deque.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/size.hpp>
@@ -17,6 +17,12 @@
 {
     struct deque_tag;
 
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct as_deque;
+ }
+
     namespace extension
     {
         template <typename T>
@@ -28,14 +34,11 @@
             template <typename Sequence>
             struct apply
             {
- typedef detail::as_deque<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
-
+ typedef result_of::as_deque<Sequence> gen;
+ typedef typename gen::type type;
                 static type call(Sequence& seq)
                 {
- return gen::call(fusion::begin(seq));
+ return gen::call(seq);
                 }
             };
         };

Deleted: branches/release/boost/fusion/container/deque/detail/deque_forward_ctor.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/deque_forward_ctor.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,45 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_PP_IS_ITERATING)
-#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212)
-#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#define FUSION_DEQUE_FORWARD_CTOR_FORWARD(z, n, _) std::forward<T##n>(t##n)
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef FUSION_DEQUE_FORWARD_CTOR_FORWARD
-#endif
-#else
-
-#define N BOOST_PP_ITERATION()
-
-deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
- : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t)))
-{}
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
-deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t))
- : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::
- forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _)))
-{}
-#endif
-
-#undef N
-#endif

Deleted: branches/release/boost/fusion/container/deque/detail/deque_initial_size.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/deque_initial_size.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,64 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139)
-#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/mpl/find.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/distance.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/mpl/vector.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_initial_size" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
-
-namespace boost { namespace fusion { namespace detail
-{
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
- struct deque_initial_size
- {
- typedef mpl::vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)> args;
- typedef typename mpl::find<args, void_>::type first_void;
- typedef typename mpl::distance<typename mpl::begin<args>::type, first_void>::type type;
- };
-}}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif

Copied: branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp (from r82784, trunk/boost/fusion/container/deque/detail/deque_keyed_values.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/deque/detail/deque_keyed_values.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/deque/detail/deque_keyed_values.hpp)
@@ -0,0 +1,67 @@
+/*=============================================================================
+ Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901)
+#define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901
+
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename Key, typename Value, typename Rest>
+ struct keyed_element;
+
+ template <typename N, typename ...Elements>
+ struct deque_keyed_values_impl;
+
+ template <typename N, typename Head, typename ...Tail>
+ struct deque_keyed_values_impl<N, Head, Tail...>
+ {
+ typedef mpl::int_<(N::value + 1)> next_index;
+ typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
+ typedef keyed_element<N, Head, tail> type;
+
+ static type construct(
+ typename detail::call_param<Head>::type head
+ , typename detail::call_param<Tail>::type... tail)
+ {
+ return type(
+ head
+ , deque_keyed_values_impl<next_index, Tail...>::construct(tail...)
+ );
+ }
+
+ template <typename Head_, typename ...Tail_>
+ static type forward_(Head_&& head, Tail_&&... tail)
+ {
+ return type(
+ std::forward<Head_>(head)
+ , deque_keyed_values_impl<next_index, Tail_...>::
+ forward_(std::forward<Tail_>(tail)...)
+ );
+ }
+ };
+
+ struct nil_keyed_element;
+
+ template <typename N>
+ struct deque_keyed_values_impl<N>
+ {
+ typedef nil_keyed_element type;
+ static type construct() { return type(); }
+ static type forward_() { return type(); }
+ };
+
+ template <typename ...Elements>
+ struct deque_keyed_values
+ : deque_keyed_values_impl<mpl::int_<0>, Elements...> {};
+}}}
+
+#endif

Deleted: branches/release/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,58 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_PP_IS_ITERATING)
-#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211)
-#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/repetition/enum_shifted.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define FUSION_DEQUE_KEYED_VALUES_FORWARD(z, n, _) \
- std::forward<BOOST_PP_CAT(T, n)>(BOOST_PP_CAT(t, n))
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef FUSION_DEQUE_KEYED_VALUES_FORWARD
-#endif
-#else
-
-#define N BOOST_PP_ITERATION()
-
- static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
- {
- return type(t0,
- deque_keyed_values_impl<
- next_index
- #if N > 1
- , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)
- #endif
- >::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t)));
- }
-
- static type forward_(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t))
- {
- return type(std::forward<T0>(t0),
- deque_keyed_values_impl<
- next_index
- #if N > 1
- , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)
- #endif
- >::forward_(BOOST_PP_ENUM_SHIFTED(N, FUSION_DEQUE_KEYED_VALUES_FORWARD, _)));
- }
-
-#undef N
-#endif

Modified: branches/release/boost/fusion/container/deque/detail/keyed_element.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/keyed_element.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/detail/keyed_element.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -51,7 +51,7 @@
           : Rest(rhs.get_base()), value_(rhs.value_)
         {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         keyed_element(keyed_element&& rhs)
           : Rest(std::forward<Rest>(rhs.forward_base()))
           , value_(std::forward<Value>(rhs.value_))
@@ -63,7 +63,7 @@
           : Rest(rhs.get_base()), value_(rhs.value_)
         {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 #endif
 
         Rest& get_base()
@@ -76,7 +76,7 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         Rest&& forward_base()
         {
             return std::forward<Rest>(*static_cast<Rest*>(this));
@@ -99,7 +99,7 @@
             : Rest(rest), value_(value)
         {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         keyed_element(Value&& value, Rest&& rest)
             : Rest(std::forward<Rest>(rest))
             , value_(std::forward<Value>(value))
@@ -125,7 +125,7 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         keyed_element& operator=(keyed_element&& rhs)
         {
             base::operator=(std::forward<keyed_element>(rhs));

Deleted: branches/release/boost/fusion/container/deque/detail/pp_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/pp_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,156 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_PP_FUSION_DEQUE_26112006_1649)
-#define BOOST_PP_FUSION_DEQUE_26112006_1649
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/deque/limits.hpp>
-#include <boost/fusion/container/deque/front_extended_deque.hpp>
-#include <boost/fusion/container/deque/back_extended_deque.hpp>
-#include <boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp>
-#include <boost/fusion/container/deque/detail/deque_initial_size.hpp>
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/container/deque/detail/keyed_element.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>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-
-#include <boost/fusion/container/deque/deque_fwd.hpp>
-#include <boost/fusion/container/deque/detail/value_at_impl.hpp>
-#include <boost/fusion/container/deque/detail/at_impl.hpp>
-#include <boost/fusion/container/deque/detail/begin_impl.hpp>
-#include <boost/fusion/container/deque/detail/end_impl.hpp>
-#include <boost/fusion/container/deque/detail/is_sequence_impl.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/mpl/bool.hpp>
-
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/void.hpp>
-#include <boost/utility/enable_if.hpp>
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
-
-namespace boost { namespace fusion {
-
- struct deque_tag;
-
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
- struct deque
- :
- detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type,
- sequence_base<deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)> >
- {
- typedef deque_tag fusion_tag;
- typedef bidirectional_traversal_tag category;
- typedef typename detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type base;
- typedef typename detail::deque_initial_size<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type size;
- typedef mpl::int_<size::value> next_up;
- typedef mpl::int_<
- mpl::if_<mpl::equal_to<size, mpl::int_<0> >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down;
- typedef mpl::false_ is_view;
-
-#include <boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
-
- deque()
- {}
-
- explicit deque(typename add_reference<typename add_const<T0>::type>::type t0)
- : base(t0, detail::nil_keyed_element())
- {}
-
- explicit deque(deque const& rhs)
- : base(rhs)
- {}
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- explicit deque(T0&& t0)
- : base(std::forward<T0>(t0), detail::nil_keyed_element())
- {}
-
- explicit deque(deque&& rhs)
- : base(std::forward<deque>(rhs))
- {}
-#endif
-
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
- deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& seq)
- : base(seq)
- {}
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
- deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>&& seq)
- : base(std::forward<deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>>(seq))
- {}
-#endif
-
- template<typename Sequence>
- deque(Sequence const& seq, typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0)
- : base(base::from_iterator(fusion::begin(seq)))
- {}
-
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
- deque&
- operator=(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& rhs)
- {
- base::operator=(rhs);
- return *this;
- }
-
- template <typename T>
- deque&
- operator=(T const& rhs)
- {
- base::operator=(rhs);
- return *this;
- }
-
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- template <typename T>
- deque&
- operator=(T&& rhs)
- {
- base::operator=(std::forward<T>(rhs));
- return *this;
- }
-#endif
-
- };
-}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif

Deleted: branches/release/boost/fusion/container/deque/detail/pp_deque_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/pp_deque_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,54 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2007 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(FUSION_PP_DEQUE_FORWARD_02092007_0749)
-#define FUSION_PP_DEQUE_FORWARD_02092007_0749
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/deque/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque_fwd.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- template<
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_DEQUE_SIZE, typename T, void_)>
- struct deque;
-}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif

Deleted: branches/release/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,111 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330)
-#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/deque/limits.hpp>
-#include <boost/fusion/container/deque/detail/keyed_element.hpp>
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/repetition/enum.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/type_traits/add_reference.hpp>
-
-#include <boost/mpl/plus.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/print.hpp>
-
-#define FUSION_VOID(z, n, _) void_
-
-namespace boost { namespace fusion
-{
- struct void_;
-}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_keyed_values" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
-
-namespace boost { namespace fusion { namespace detail
-{
- template<typename Key, typename Value, typename Rest>
- struct keyed_element;
-
- struct nil_keyed_element;
-
- template<typename N, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_DEQUE_SIZE, typename T, void_)>
- struct deque_keyed_values_impl;
-
- template<typename N>
- struct deque_keyed_values_impl<N, BOOST_PP_ENUM(FUSION_MAX_DEQUE_SIZE, FUSION_VOID, _)>
- {
- typedef nil_keyed_element type;
-
- static type call()
- {
- return type();
- }
-
- static type forward_()
- {
- return type();
- }
- };
-
- template<typename N, BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
- struct deque_keyed_values_impl
- {
- typedef mpl::int_<mpl::plus<N, mpl::int_<1> >::value> next_index;
-
- typedef typename deque_keyed_values_impl<
- next_index,
- BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail;
- typedef keyed_element<N, T0, tail> type;
-
-#include <boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
-
- };
-
- template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_DEQUE_SIZE, typename T, void_)>
- struct deque_keyed_values
- : deque_keyed_values_impl<mpl::int_<0>, BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>
- {};
-
-}}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#undef FUSION_VOID
-
-#endif

Deleted: branches/release/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,67 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901)
-#define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901
-
-#include <boost/fusion/container/deque/detail/keyed_element.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/mpl/int.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template<typename Key, typename Value, typename Rest>
- struct keyed_element;
-
- template <typename N, typename ...Elements>
- struct deque_keyed_values_impl;
-
- template <typename N, typename Head, typename ...Tail>
- struct deque_keyed_values_impl<N, Head, Tail...>
- {
- typedef mpl::int_<(N::value + 1)> next_index;
- typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
- typedef keyed_element<N, Head, tail> type;
-
- static type construct(
- typename detail::call_param<Head>::type head
- , typename detail::call_param<Tail>::type... tail)
- {
- return type(
- head
- , deque_keyed_values_impl<next_index, Tail...>::construct(tail...)
- );
- }
-
- template <typename Head_, typename ...Tail_>
- static type forward_(Head_&& head, Tail_&&... tail)
- {
- return type(
- std::forward<Head_>(head)
- , deque_keyed_values_impl<next_index, Tail_...>::
- forward_(std::forward<Tail_>(tail)...)
- );
- }
- };
-
- struct nil_keyed_element;
-
- template <typename N>
- struct deque_keyed_values_impl<N>
- {
- typedef nil_keyed_element type;
- static type construct() { return type(); }
- static type forward_() { return type(); }
- };
-
- template <typename ...Elements>
- struct deque_keyed_values
- : deque_keyed_values_impl<mpl::int_<0>, Elements...> {};
-}}}
-
-#endif

Modified: branches/release/boost/fusion/container/deque/front_extended_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/front_extended_deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/deque/front_extended_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -30,7 +30,7 @@
           : base(val, deque)
         {}
 
-#if defined(BOOST_NO_RVALUE_REFERENCES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         template <typename Arg>
         front_extended_deque(Deque const& deque, Arg& val)
           : base(val, deque)

Deleted: branches/release/boost/fusion/container/deque/limits.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/limits.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,32 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(BOOST_FUSION_DEQUE_LIMITS_26112006_1737)
-#define BOOST_FUSION_DEQUE_LIMITS_26112006_1737
-
-#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
-#error "C++03 only! This file should not have been included"
-#endif
-
-#include <boost/fusion/container/vector/limits.hpp>
-
-#if !defined(FUSION_MAX_DEQUE_SIZE)
-# define FUSION_MAX_DEQUE_SIZE FUSION_MAX_VECTOR_SIZE
-#else
-# if FUSION_MAX_DEQUE_SIZE < 3
-# undef FUSION_MAX_DEQUE_SIZE
-# if (FUSION_MAX_VECTOR_SIZE > 10)
-# define FUSION_MAX_DEQUE_SIZE 10
-# else
-# define FUSION_MAX_DEQUE_SIZE FUSION_MAX_VECTOR_SIZE
-# endif
-# endif
-#endif
-
-#define FUSION_MAX_DEQUE_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_DEQUE_SIZE))
-
-#endif

Modified: branches/release/boost/fusion/container/generation/cons_tie.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/cons_tie.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/cons_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -11,11 +11,11 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
 
     namespace result_of
     {
- template <typename Car, typename Cdr = nil>
+ template <typename Car, typename Cdr = nil_>
         struct cons_tie
         {
             typedef cons<Car&, Cdr> type;

Modified: branches/release/boost/fusion/container/generation/deque_tie.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/deque_tie.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/deque_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,41 +1,23 @@
 /*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2001-2013 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_DEQUE_TIE_07192005_1242)
-#define FUSION_DEQUE_TIE_07192005_1242
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.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>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(FUSION_DEQUE_TIE_01272013_1401)
+#define FUSION_DEQUE_TIE_01272013_1401
+
 #include <boost/fusion/container/deque/deque.hpp>
 
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+# include <boost/fusion/container/generation/detail/pp_deque_tie.hpp>
 #else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque_tie" FUSION_MAX_DEQUE_SIZE_STR".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic interface
+///////////////////////////////////////////////////////////////////////////////
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
 
 namespace boost { namespace fusion
 {
@@ -43,63 +25,21 @@
 
     namespace result_of
     {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_DEQUE_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct deque_tie;
- }
-
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/deque_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
+ template <typename ...T>
+ struct deque_tie
     {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ typedef deque<T&...> type;
         };
     }
 
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ template <typename ...T>
+ inline deque<T&...>
+ deque_tie(T&... arg)
     {
- return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
+ return deque<T&...>(arg...);
     }
+ }}
 
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
+#endif
+#endif
 

Copied: branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp (from r82696, trunk/boost/fusion/container/generation/detail/pp_deque_tie.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_deque_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82696, trunk/boost/fusion/container/generation/detail/pp_deque_tie.hpp)
@@ -0,0 +1,105 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_PP_DEQUE_TIE_07192005_1242)
+#define FUSION_PP_DEQUE_TIE_07192005_1242
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.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>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque_tie" FUSION_MAX_DEQUE_SIZE_STR".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_DEQUE_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct deque_tie;
+ }
+
+#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_deque_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_REF
+
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
+ deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ {
+ return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Copied: branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp (from r82696, trunk/boost/fusion/container/generation/detail/pp_make_deque.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_make_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82696, trunk/boost/fusion/container/generation/detail/pp_make_deque.hpp)
@@ -0,0 +1,121 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_PP_MAKE_DEQUE_07162005_0243)
+#define FUSION_MAKE_PP_DEQUE_07162005_0243
+
+#include <boost/preprocessor/iterate.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>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/make_deque.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_deque" FUSION_MAX_DEQUE_SIZE_STR".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_DEQUE_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_deque;
+
+ template <>
+ struct make_deque<>
+ {
+ typedef deque<> type;
+ };
+ }
+
+ inline deque<>
+ make_deque()
+ {
+ return deque<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_make_deque.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_AS_FUSION_ELEMENT
+
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Copied: branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp (from r82784, trunk/boost/fusion/container/generation/detail/pp_make_map.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_make_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/generation/detail/pp_make_map.hpp)
@@ -0,0 +1,132 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_PP_MAKE_MAP_07222005_1247)
+#define FUSION_PP_MAKE_MAP_07222005_1247
+
+#include <boost/preprocessor/iterate.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>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/make_map.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_map" FUSION_MAX_MAP_SIZE_STR".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename K, void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename D, void_)
+ , typename Extra = void_
+ >
+ struct make_map;
+
+ template <>
+ struct make_map<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ make_map()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
+ fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_make_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
+ make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Copied: branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp (from r82784, trunk/boost/fusion/container/generation/detail/pp_map_tie.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/generation/detail/pp_map_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/generation/detail/pp_map_tie.hpp)
@@ -0,0 +1,136 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_PP_MAP_TIE_20060814_1116)
+#define FUSION_PP_MAP_TIE_20060814_1116
+
+#include <boost/preprocessor/iterate.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>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/container/map/detail/cpp03/limits.hpp>
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/container/generation/pair_tie.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/generation/detail/preprocessed/map_tie.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map_tie" FUSION_MAX_MAP_SIZE_STR".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ 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 D, void_)
+ , typename Extra = void_
+ >
+ struct map_tie;
+
+ template <>
+ struct map_tie<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ map_tie()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_TIED_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename add_reference<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_PAIR_TIE(z, n, data) \
+ fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_map_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
+ map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Modified: branches/release/boost/fusion/container/generation/make_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/make_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/make_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,11 +13,11 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
 
     namespace result_of
     {
- template <typename Car, typename Cdr = nil>
+ template <typename Car, typename Cdr = nil_>
         struct make_cons
         {
             typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type;

Modified: branches/release/boost/fusion/container/generation/make_deque.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/make_deque.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/make_deque.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,124 +1,43 @@
 /*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2001-2013 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+#if !defined(FUSION_MAKE_DEQUE_01272013_1401)
+#define FUSION_MAKE_DEQUE_01272013_1401
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_MAKE_DEQUE_07162005_0243)
-#define FUSION_MAKE_DEQUE_07162005_0243
-
-#include <boost/preprocessor/iterate.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>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
 #include <boost/fusion/container/deque/deque.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
 
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/make_deque.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
+# include <boost/fusion/container/generation/detail/pp_make_deque.hpp>
 #else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_deque" FUSION_MAX_DEQUE_SIZE_STR".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
- This is an auto-generated file. Do not edit!
-==============================================================================*/
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic interface
+///////////////////////////////////////////////////////////////////////////////
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
     namespace result_of
     {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_DEQUE_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_deque;
-
- template <>
- struct make_deque<>
+ template <typename ...T>
+ struct make_deque
         {
- typedef deque<> type;
+ typedef deque<T...> type;
         };
     }
 
- inline deque<>
- make_deque()
+ template <typename ...T>
+ inline deque<typename detail::as_fusion_element<T>::type...>
+ make_deque(T const&... arg)
     {
- return deque<>();
+ return deque<typename detail::as_fusion_element<T>::type...>(arg...);
     }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_deque.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
 }}
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
 #endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
 #endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 

Modified: branches/release/boost/fusion/container/generation/make_map.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/make_map.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/make_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,132 +1,62 @@
 /*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2013 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
 #if !defined(FUSION_MAKE_MAP_07222005_1247)
 #define FUSION_MAKE_MAP_07222005_1247
 
-#include <boost/preprocessor/iterate.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>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
 #include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-#include <boost/fusion/support/pair.hpp>
 
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/make_map.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/generation/detail/pp_make_map.hpp>
 #else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_map" FUSION_MAX_MAP_SIZE_STR".hpp")
-#endif
 
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic interface
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
     namespace result_of
     {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename K, void_)
- , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename D, void_)
- , typename Extra = void_
- >
- struct make_map;
-
- template <>
- struct make_map<>
+ template <typename ...Key>
+ struct make_map
         {
- typedef map<> type;
+ template <typename ...T>
+ struct apply
+ {
+ typedef map<
+ fusion::pair<
+ Key
+ , typename detail::as_fusion_element<T>::type
+ >...>
+ type;
+ };
         };
     }
 
- inline map<>
- make_map()
+ template <typename ...Key, typename ...T>
+ inline map<
+ fusion::pair<
+ Key
+ , typename detail::as_fusion_element<T>::type
+ >...>
+ make_map(T const&... arg)
     {
- return map<>();
- }
-
-#define BOOST_FUSION_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
- fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
+ typedef map<
+ fusion::pair<
+ Key
+ , typename detail::as_fusion_element<T>::type
+ >...>
+ result_type;
 
+ return result_type(arg...);
+ }
 }}
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
- #undef TEXT
-#else
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
 #endif
- {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
- };
- }
-
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
- make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
- {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-
+#endif
\ No newline at end of file

Modified: branches/release/boost/fusion/container/generation/map_tie.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/map_tie.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/generation/map_tie.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -1,136 +1,46 @@
 /*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2001-2013 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_MAP_TIE_20060814_1116)
-#define FUSION_MAP_TIE_20060814_1116
-
-#include <boost/preprocessor/iterate.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>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(FUSION_MAP_TIE_07222005_1247)
+#define FUSION_MAP_TIE_07222005_1247
+
 #include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/container/map/limits.hpp>
-#include <boost/fusion/support/pair.hpp>
-#include <boost/fusion/container/generation/pair_tie.hpp>
-#include <boost/type_traits/add_reference.hpp>
 
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/generation/detail/preprocessed/map_tie.hpp>
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/generation/detail/pp_map_tie.hpp>
 #else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map_tie" FUSION_MAX_MAP_SIZE_STR".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic interface
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/support/pair.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
     namespace result_of
     {
- 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 D, void_)
- , typename Extra = void_
- >
- struct map_tie;
-
- template <>
- struct map_tie<>
+ template <typename ...Key>
+ struct map_tie
         {
- typedef map<> type;
+ template <typename ...T>
+ struct apply
+ {
+ typedef map<fusion::pair<Key, T&>...> type;
+ };
         };
     }
 
- inline map<>
- map_tie()
+ template <typename ...Key, typename ...T>
+ inline map<fusion::pair<Key, T&>...>
+ map_tie(T&... arg)
     {
- return map<>();
+ typedef map<fusion::pair<Key, T&>...> result_type;
+ return result_type(arg...);
     }
-
-#define BOOST_FUSION_TIED_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename add_reference<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_PAIR_TIE(z, n, data) \
- fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/map_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
-
 }}
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
 #endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
-
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
- #undef TEXT
-#else
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
-#endif
- {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
- };
- }
-
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
- map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
- {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-
+#endif
\ No newline at end of file

Modified: branches/release/boost/fusion/container/list/cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -34,7 +34,7 @@
     struct forward_traversal_tag;
     struct fusion_sequence_tag;
 
- struct nil : sequence_base<nil>
+ struct nil_ : sequence_base<nil_>
     {
         typedef mpl::int_<0> size;
         typedef cons_tag fusion_tag;
@@ -44,10 +44,10 @@
         typedef void_ car_type;
         typedef void_ cdr_type;
 
- nil() {}
+ nil_() {}
 
         template <typename Iterator>
- nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
+ nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
         {}
 
         template <typename Iterator>
@@ -56,7 +56,7 @@
         }
     };
 
- template <typename Car, typename Cdr /*= nil*/>
+ template <typename Car, typename Cdr /*= nil_*/>
     struct cons : sequence_base<cons<Car, Cdr> >
     {
         typedef mpl::int_<Cdr::size::value+1> size;

Modified: branches/release/boost/fusion/container/list/cons_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/cons_fwd.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/cons_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -10,9 +10,12 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
+ #ifndef nil
+ typedef nil_ nil;
+ #endif
 
- template <typename Car, typename Cdr = nil>
+ template <typename Car, typename Cdr = nil_>
     struct cons;
 }}
 

Modified: branches/release/boost/fusion/container/list/cons_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/cons_iterator.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/cons_iterator.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,14 +18,14 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct cons_iterator_tag;
     struct forward_traversal_tag;
 
     template <typename Cons>
     struct cons_iterator_identity;
 
- template <typename Cons = nil>
+ template <typename Cons = nil_>
     struct cons_iterator : iterator_base<cons_iterator<Cons> >
     {
         typedef cons_iterator_tag fusion_tag;
@@ -49,40 +49,40 @@
     {
         typedef forward_traversal_tag category;
         typedef cons_iterator_tag fusion_tag;
- typedef nil cons_type;
+ typedef nil_ cons_type;
         typedef cons_iterator_identity<
- add_const<nil>::type>
+ add_const<nil_>::type>
         identity;
         nil_iterator() {}
- explicit nil_iterator(nil const&) {}
+ explicit nil_iterator(nil_ const&) {}
     };
 
     template <>
- struct cons_iterator<nil> : nil_iterator
+ struct cons_iterator<nil_> : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
     };
 
     template <>
- struct cons_iterator<nil const> : nil_iterator
+ struct cons_iterator<nil_ const> : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
     };
 
     template <>
     struct cons_iterator<list<> > : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
     };
 
     template <>
     struct cons_iterator<list<> const> : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil_ const&) {}
     };
 }}
 

Modified: branches/release/boost/fusion/container/list/detail/begin_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/begin_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/begin_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
 
     struct cons_tag;
 

Modified: branches/release/boost/fusion/container/list/detail/build_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/build_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/build_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -24,12 +24,12 @@
     template <typename First, typename Last>
     struct build_cons<First, Last, true>
     {
- typedef nil type;
+ typedef nil_ type;
         
- static nil
+ static nil_
         call(First const&, Last const&)
         {
- return nil();
+ return nil_();
         }
     };
 

Modified: branches/release/boost/fusion/container/list/detail/empty_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/empty_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/empty_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
 {
     struct cons_tag;
 
- struct nil;
+ struct nil_;
 
     template <typename Car, typename Cdr>
     struct cons;
@@ -28,7 +28,7 @@
         {
             template <typename Sequence>
             struct apply
- : boost::is_convertible<Sequence, nil>
+ : boost::is_convertible<Sequence, nil_>
             {};
         };
     }

Modified: branches/release/boost/fusion/container/list/detail/end_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/end_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/end_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
 
     struct cons_tag;
 
@@ -35,7 +35,7 @@
             struct apply
             {
                 typedef cons_iterator<
- typename mpl::if_<is_const<Sequence>, nil const, nil>::type>
+ typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type>
                 type;
     
                 static type

Modified: branches/release/boost/fusion/container/list/detail/list_to_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/list_to_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/list_to_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,7 +18,7 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct void_;
 }}
 
@@ -61,7 +61,7 @@
     template <>
     struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
     {
- typedef nil type;
+ typedef nil_ type;
     };
 }}}
 

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list10.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
     struct list

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list20.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
     struct list

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list30.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
     struct list

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list40.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
     struct list

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list50.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
     struct list

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -81,6 +81,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
- typedef nil type;
+ typedef nil_ type;
     };
 }}}

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -141,6 +141,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
- typedef nil type;
+ typedef nil_ type;
     };
 }}}

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -201,6 +201,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
- typedef nil type;
+ typedef nil_ type;
     };
 }}}

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -261,6 +261,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
- typedef nil type;
+ typedef nil_ type;
     };
 }}}

Modified: branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -321,6 +321,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
- typedef nil type;
+ typedef nil_ type;
     };
 }}}

Modified: branches/release/boost/fusion/container/list/detail/reverse_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/reverse_cons.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/detail/reverse_cons.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -12,7 +12,7 @@
 namespace boost { namespace fusion { namespace detail
 {
     ////////////////////////////////////////////////////////////////////////////
- template<typename Cons, typename State = nil>
+ template<typename Cons, typename State = nil_>
     struct reverse_cons;
 
     template<typename Car, typename Cdr, typename State>
@@ -29,11 +29,11 @@
     };
 
     template<typename State>
- struct reverse_cons<nil, State>
+ struct reverse_cons<nil_, State>
     {
         typedef State type;
 
- static State const &call(nil const &, State const &state = State())
+ static State const &call(nil_ const &, State const &state = State())
         {
             return state;
         }

Modified: branches/release/boost/fusion/container/list/list.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/list.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/list/list.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -32,7 +32,7 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
     struct void_;
 
     template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>

Modified: branches/release/boost/fusion/container/map.hpp
==============================================================================
--- branches/release/boost/fusion/container/map.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -7,7 +7,6 @@
 #if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606)
 #define FUSION_SEQUENCE_CLASS_MAP_10022005_0606
 
-#include <boost/fusion/container/map/limits.hpp>
 #include <boost/fusion/container/map/map.hpp>
 #include <boost/fusion/container/map/map_fwd.hpp>
 #include <boost/fusion/container/map/convert.hpp>

Modified: branches/release/boost/fusion/container/map/convert.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/convert.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map/convert.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -4,26 +4,34 @@
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-#if !defined(FUSION_CONVERT_09232005_1340)
-#define FUSION_CONVERT_09232005_1340
+#if !defined(FUSION_CONVERT_MAIN_09232005_1340)
+#define FUSION_CONVERT_MAIN_09232005_1340
 
-#include <boost/fusion/container/map/detail/as_map.hpp>
-#include <boost/fusion/container/map/detail/convert_impl.hpp>
 #include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+///////////////////////////////////////////////////////////////////////////////
+// Without variadics, we will use the PP version
+///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/map/detail/cpp03/convert.hpp>
+
+#else
+///////////////////////////////////////////////////////////////////////////////
+// C++11 variadic implementation
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/map/detail/build_map.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
         template <typename Sequence>
- struct as_map
+ struct as_map :
+ detail::build_map<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ >
         {
- typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
         };
     }
 
@@ -31,16 +39,16 @@
     inline typename result_of::as_map<Sequence>::type
     as_map(Sequence& seq)
     {
- typedef typename result_of::as_map<Sequence>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_map<Sequence> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
     }
 
     template <typename Sequence>
     inline typename result_of::as_map<Sequence const>::type
     as_map(Sequence const& seq)
     {
- typedef typename result_of::as_map<Sequence const>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef result_of::as_map<Sequence const> gen;
+ return gen::call(fusion::begin(seq), fusion::end(seq));
     }
 
     namespace extension
@@ -69,3 +77,5 @@
 }}
 
 #endif
+#endif
+

Deleted: branches/release/boost/fusion/container/map/detail/as_map.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/as_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,130 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_AS_MAP_0932005_1339)
-#define FUSION_AS_MAP_0932005_1339
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_map;
-
- template <>
- struct as_map<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef map<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return map<>();
- }
- };
-}}}
-
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/map/detail/preprocessed/as_map.hpp>
-#else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_map" FUSION_MAX_MAP_SIZE_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
-
-namespace boost { namespace fusion { namespace detail
-{
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/map/detail/as_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
-#endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_map<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef map<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator const& i0)
- {
- typedef apply<Iterator> gen;
- typedef typename gen::type result;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return result(BOOST_PP_ENUM_PARAMS(N, *i));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Copied: branches/release/boost/fusion/container/map/detail/at_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/at_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/at_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/at_impl.hpp)
@@ -0,0 +1,57 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821
+
+#include <boost/fusion/support/detail/access.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<map_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef mpl::int_<N::value> index;
+ typedef
+ decltype(std::declval<Sequence>().get(index()))
+ type;
+
+ static type
+ call(Sequence& m)
+ {
+ return m.get(index());
+ }
+ };
+
+ template <typename Sequence, typename N>
+ struct apply<Sequence const, N>
+ {
+ typedef mpl::int_<N::value> index;
+ typedef
+ decltype(std::declval<Sequence const>().get(index()))
+ type;
+
+ static type
+ call(Sequence const& m)
+ {
+ return m.get(index());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Copied: branches/release/boost/fusion/container/map/detail/at_key_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/at_key_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/at_key_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/at_key_impl.hpp)
@@ -0,0 +1,58 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_key_impl;
+
+ template <>
+ struct at_key_impl<map_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef
+ decltype(std::declval<Sequence>().get(mpl::identity<Key>()))
+ type;
+
+ static type
+ call(Sequence& m)
+ {
+ return m.get(mpl::identity<Key>());
+ }
+ };
+
+ template <typename Sequence, typename Key>
+ struct apply<Sequence const, Key>
+ {
+ typedef
+ decltype(std::declval<Sequence const>().get(mpl::identity<Key>()))
+ type;
+
+ static type
+ call(Sequence const& m)
+ {
+ return m.get(mpl::identity<Key>());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Copied: branches/release/boost/fusion/container/map/detail/begin_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/begin_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/begin_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/begin_impl.hpp)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857)
+#define BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857
+
+#include <boost/fusion/container/map/map_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct begin_impl;
+
+ template<>
+ struct begin_impl<map_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef map_iterator<Sequence, 0> type;
+
+ static type call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Copied: branches/release/boost/fusion/container/map/detail/build_map.hpp (from r82784, trunk/boost/fusion/container/map/detail/build_map.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/build_map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/build_map.hpp)
@@ -0,0 +1,75 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BUILD_MAP_02042013_1448)
+#define BOOST_FUSION_BUILD_MAP_02042013_1448
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename First, typename Last
+ , bool is_empty = result_of::equal_to<First, Last>::value>
+ struct build_map;
+
+ template <typename First, typename Last>
+ struct build_map<First, Last, true>
+ {
+ typedef map<> type;
+ static type
+ call(First const&, Last const&)
+ {
+ return type();
+ }
+ };
+
+ template <typename T, typename Rest>
+ struct push_front_map;
+
+ template <typename T, typename ...Rest>
+ struct push_front_map<T, map<Rest...>>
+ {
+ typedef map<T, Rest...> type;
+
+ static type
+ call(T const& first, map<Rest...> const& rest)
+ {
+ return type(push_front(rest, first));
+ }
+ };
+
+ template <typename First, typename Last>
+ struct build_map<First, Last, false>
+ {
+ typedef
+ build_map<typename result_of::next<First>::type, Last>
+ next_build_map;
+
+ typedef push_front_map<
+ typename result_of::value_of<First>::type
+ , typename next_build_map::type>
+ push_front;
+
+ typedef typename push_front::type type;
+
+ static type
+ call(First const& f, Last const& l)
+ {
+ typename result_of::value_of<First>::type v = *f;
+ return push_front::call(
+ v, next_build_map::call(fusion::next(f), l));
+ }
+ };
+}}}
+
+#endif

Deleted: branches/release/boost/fusion/container/map/detail/convert_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/convert_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,45 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(FUSION_CONVERT_IMPL_09232005_1340)
-#define FUSION_CONVERT_IMPL_09232005_1340
-
-#include <boost/fusion/container/map/detail/as_map.hpp>
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
-
-namespace boost { namespace fusion
-{
- struct map_tag;
-
- namespace extension
- {
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<map_tag>
- {
- template <typename Sequence>
- struct apply
- {
- typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
-
- static type call(Sequence& seq)
- {
- return gen::call(fusion::begin(seq));
- }
- };
- };
- }
-}}
-
-#endif

Deleted: branches/release/boost/fusion/container/map/detail/deref_data_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/deref_data_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,47 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-
-#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_DATA_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_DATA_IMPL_HPP
-
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/if.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct deref_data_impl;
-
- template <>
- struct deref_data_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename result_of::value_of<It>::type::second_type data;
-
- typedef typename
- mpl::if_<
- is_const<typename It::seq_type>
- , typename detail::cref_result<data>::type
- , typename detail::ref_result<data>::type
- >::type
- type;
-
- static type
- call(It const& it)
- {
- return fusion::deref(it).second;
- }
- };
- };
-}}}
-
-#endif

Deleted: branches/release/boost/fusion/container/map/detail/deref_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/deref_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,45 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-
-#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_IMPL_HPP
-
-#include <boost/fusion/sequence/intrinsic/at.hpp>
-#include <boost/type_traits/is_const.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct deref_impl;
-
- template <>
- struct deref_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- result_of::at<
- typename mpl::if_<
- is_const<typename It::seq_type>
- , typename It::seq_type::storage_type const
- , typename It::seq_type::storage_type
- >::type
- , typename It::index
- >::type
- type;
-
- static type
- call(It const& it)
- {
- return fusion::at<typename It::index>(it.seq->get_data());
- }
- };
- };
-}}}
-
-#endif

Copied: branches/release/boost/fusion/container/map/detail/end_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/end_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/end_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/end_impl.hpp)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_END_IMPL_02042013_0857)
+#define BOOST_FUSION_MAP_END_IMPL_02042013_0857
+
+#include <boost/fusion/container/map/map_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct end_impl;
+
+ template<>
+ struct end_impl<map_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef map_iterator<Sequence, Sequence::size::value> type;
+
+ static type call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Deleted: branches/release/boost/fusion/container/map/detail/key_of_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/key_of_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,32 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-
-#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_KEY_OF_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_KEY_OF_IMPL_HPP
-
-#include <boost/fusion/container/map/detail/value_of_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct key_of_impl;
-
- template <>
- struct key_of_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- value_of_impl<map_iterator_tag>::
- template apply<It>::type::first_type
- type;
- };
- };
-}}}
-
-#endif

Deleted: branches/release/boost/fusion/container/map/detail/map_forward_ctor.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/map_forward_ctor.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,38 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_MAP_FORWARD_CTOR_07222005_0106)
-#define FUSION_MAP_FORWARD_CTOR_07222005_0106
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/map/detail/map_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Copied: branches/release/boost/fusion/container/map/detail/map_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/map_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/map_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/map_impl.hpp)
@@ -0,0 +1,176 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_IMPL_02032013_2233)
+#define BOOST_FUSION_MAP_IMPL_02032013_2233
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct map_impl_from_iterator {};
+
+ template <int index, typename ...T>
+ struct map_impl;
+
+ template <int index_>
+ struct map_impl<index_>
+ {
+ typedef fusion_sequence_tag tag;
+ static int const index = index_;
+ static int const size = 0;
+
+ map_impl() {}
+
+ template <typename Iterator>
+ map_impl(Iterator const& iter, map_impl_from_iterator)
+ {}
+
+ template <typename Iterator>
+ void assign(Iterator const& iter, map_impl_from_iterator)
+ {}
+
+ void get();
+ void get_val();
+ void get_key();
+ };
+
+ template <int index_, typename Pair, typename ...T>
+ struct map_impl<index_, Pair, T...> : map_impl<index_ + 1, T...>
+ {
+ typedef fusion_sequence_tag tag;
+ typedef map_impl<index_+1, T...> rest_type;
+
+ using rest_type::get;
+ using rest_type::get_val;
+ using rest_type::get_key;
+
+ static int const index = index_;
+ static int const size = rest_type::size + 1;
+
+ typedef Pair pair_type;
+ typedef typename Pair::first_type key_type;
+ typedef typename Pair::second_type value_type;
+
+ map_impl()
+ : rest_type(), element()
+ {}
+
+ map_impl(map_impl const& rhs)
+ : rest_type(rhs.get_base()), element(rhs.element)
+ {}
+
+ map_impl(map_impl&& rhs)
+ : rest_type(std::forward<rest_type>(*static_cast<rest_type*>(this)))
+ , element(std::forward<Pair>(rhs.element))
+ {}
+
+ template <typename ...U>
+ map_impl(map_impl<index, U...> const& rhs)
+ : rest_type(rhs.get_base()), element(rhs.element)
+ {}
+
+ map_impl(typename detail::call_param<Pair>::type element
+ , typename detail::call_param<T>::type... rest)
+ : rest_type(rest...), element(element)
+ {}
+
+ map_impl(Pair&& element, T&&... rest)
+ : rest_type(std::forward<T>(rest)...)
+ , element(std::forward<Pair>(element))
+ {}
+
+ template <typename Iterator>
+ map_impl(Iterator const& iter, map_impl_from_iterator fi)
+ : rest_type(fusion::next(iter), fi)
+ , element(*iter)
+ {}
+
+ rest_type& get_base()
+ {
+ return *this;
+ }
+
+ rest_type const& get_base() const
+ {
+ return *this;
+ }
+
+ value_type get_val(mpl::identity<key_type>);
+ pair_type get_val(mpl::int_<index>);
+ value_type get_val(mpl::identity<key_type>) const;
+ pair_type get_val(mpl::int_<index>) const;
+
+ key_type get_key(mpl::int_<index>);
+ key_type get_key(mpl::int_<index>) const;
+
+ typename cref_result<value_type>::type
+ get(mpl::identity<key_type>) const
+ {
+ return element.second;
+ }
+
+ typename ref_result<value_type>::type
+ get(mpl::identity<key_type>)
+ {
+ return element.second;
+ }
+
+ typename cref_result<pair_type>::type
+ get(mpl::int_<index>) const
+ {
+ return element;
+ }
+
+ typename ref_result<pair_type>::type
+ get(mpl::int_<index>)
+ {
+ return element;
+ }
+
+ template <typename ...U>
+ map_impl& operator=(map_impl<index, U...> const& rhs)
+ {
+ rest_type::operator=(rhs);
+ element = rhs.element;
+ return *this;
+ }
+
+ map_impl& operator=(map_impl const& rhs)
+ {
+ rest_type::operator=(rhs);
+ element = rhs.element;
+ return *this;
+ }
+
+ map_impl& operator=(map_impl&& rhs)
+ {
+ rest_type::operator=(std::forward<map_impl>(rhs));
+ element = std::forward<Pair>(rhs.element);
+ return *this;
+ }
+
+ template <typename Iterator>
+ void assign(Iterator const& iter, map_impl_from_iterator fi)
+ {
+ rest_type::assign(fusion::next(iter), fi);
+ element = *iter;
+ }
+
+ Pair element;
+ };
+}}}
+
+#endif

Copied: branches/release/boost/fusion/container/map/detail/map_index.hpp (from r82784, trunk/boost/fusion/container/map/detail/map_index.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/map_index.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/map_index.hpp)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_INDEX_02032013_2233)
+#define BOOST_FUSION_MAP_INDEX_02032013_2233
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int N>
+ struct map_index
+ {
+ static int const value = N;
+ };
+}}}
+
+#endif

Copied: branches/release/boost/fusion/container/map/detail/value_at_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/value_at_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/value_at_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/value_at_impl.hpp)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<map_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef mpl::int_<N::value> index;
+ typedef
+ decltype(std::declval<Sequence>().get_val(index()))
+ type;
+ };
+ };
+ }
+}}
+
+#endif
+

Copied: branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp (from r82784, trunk/boost/fusion/container/map/detail/value_at_key_impl.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/detail/value_at_key_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/detail/value_at_key_impl.hpp)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_KEY_IMPL_02042013_0821)
+#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_KEY_IMPL_02042013_0821
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_key_impl;
+
+ template <>
+ struct value_at_key_impl<map_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef
+ decltype(std::declval<Sequence>().get_val(mpl::identity<Key>()))
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Deleted: branches/release/boost/fusion/container/map/detail/value_of_data_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/value_of_data_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,32 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-
-#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_DATA_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_DATA_IMPL_HPP
-
-#include <boost/fusion/container/map/detail/value_of_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct value_of_data_impl;
-
- template <>
- struct value_of_data_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- value_of_impl<map_iterator_tag>::
- template apply<It>::type::second_type
- type;
- };
- };
-}}}
-
-#endif

Deleted: branches/release/boost/fusion/container/map/detail/value_of_impl.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/value_of_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,39 +0,0 @@
-/*=============================================================================
- Copyright (c) 2009 Christopher Schmidt
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-
-#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_IMPL_HPP
-
-#include <boost/fusion/sequence/intrinsic/value_at.hpp>
-#include <boost/type_traits/is_const.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<map_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename
- result_of::value_at<
- typename mpl::if_<
- is_const<typename It::seq_type>
- , typename It::seq_type::storage_type const
- , typename It::seq_type::storage_type
- >::type
- , typename It::index
- >::type
- type;
- };
- };
-}}}
-
-#endif

Deleted: branches/release/boost/fusion/container/map/limits.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/limits.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85668)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,27 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-==============================================================================*/
-#if !defined(FUSION_MAP_LIMITS_07212005_1104)
-#define FUSION_MAP_LIMITS_07212005_1104
-
-#include <boost/fusion/container/vector/limits.hpp>
-
-#if !defined(FUSION_MAX_MAP_SIZE)
-# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
-#else
-# if FUSION_MAX_MAP_SIZE < 3
-# undef FUSION_MAX_MAP_SIZE
-# if (FUSION_MAX_VECTOR_SIZE > 10)
-# define FUSION_MAX_MAP_SIZE 10
-# else
-# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
-# endif
-# endif
-#endif
-
-#define FUSION_MAX_MAP_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_MAP_SIZE))
-
-#endif

Modified: branches/release/boost/fusion/container/map/map.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/map.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map/map.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -4,96 +4,115 @@
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-#if !defined(FUSION_MAP_07212005_1106)
-#define FUSION_MAP_07212005_1106
+#if !defined(FUSION_MAP_MAIN_07212005_1106)
+#define FUSION_MAP_MAIN_07212005_1106
 
-#include <boost/fusion/support/pair.hpp>
-#include <boost/fusion/support/category_of.hpp>
-#include <boost/fusion/support/detail/access.hpp>
 #include <boost/fusion/container/map/map_fwd.hpp>
-#include <boost/fusion/container/map/detail/at_impl.hpp>
-#include <boost/fusion/container/map/detail/value_at_impl.hpp>
-#include <boost/fusion/container/map/detail/begin_impl.hpp>
-#include <boost/fusion/container/map/detail/end_impl.hpp>
-#include <boost/fusion/container/map/detail/value_of_impl.hpp>
-#include <boost/fusion/container/map/detail/deref_data_impl.hpp>
-#include <boost/fusion/container/map/detail/deref_impl.hpp>
-#include <boost/fusion/container/map/detail/key_of_impl.hpp>
-#include <boost/fusion/container/map/detail/value_of_data_impl.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/bool.hpp>
+#include <boost/fusion/support/pair.hpp>
 
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/map/detail/preprocessed/map.hpp>
+///////////////////////////////////////////////////////////////////////////////
+// Without variadics, we will use the PP version
+///////////////////////////////////////////////////////////////////////////////
+#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# include <boost/fusion/container/map/detail/cpp03/map.hpp>
 #else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map" FUSION_MAX_MAP_SIZE_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
+///////////////////////////////////////////////////////////////////////////////
+// C++11 interface
+///////////////////////////////////////////////////////////////////////////////
+#include <boost/fusion/container/map/detail/map_impl.hpp>
+#include <boost/fusion/container/map/detail/begin_impl.hpp>
+#include <boost/fusion/container/map/detail/end_impl.hpp>
+#include <boost/fusion/container/map/detail/at_impl.hpp>
+#include <boost/fusion/container/map/detail/at_key_impl.hpp>
+#include <boost/fusion/container/map/detail/value_at_impl.hpp>
+#include <boost/fusion/container/map/detail/value_at_key_impl.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/sequence/intrinsic/at_c.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/category_of.hpp>
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+#include <boost/utility/enable_if.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
- struct fusion_sequence_tag;
+ struct map_tag;
 
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, typename T)>
- struct map : sequence_base<map<BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> >
+ template <typename ...T>
+ struct map : detail::map_impl<0, T...>, sequence_base<map<T...>>
     {
- struct category : random_access_traversal_tag, associative_tag {};
-
         typedef map_tag fusion_tag;
- typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef detail::map_impl<0, T...> base_type;
+
+ struct category : random_access_traversal_tag, associative_tag {};
+ typedef mpl::int_<base_type::size> size;
         typedef mpl::false_ is_view;
 
- typedef vector<
- BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)>
- storage_type;
+ map() {}
 
- typedef typename storage_type::size size;
+ map(map const& seq)
+ : base_type(seq.base())
+ {}
+
+ map(map&& seq)
+ : base_type(std::forward<map>(seq))
+ {}
 
- map()
- : data() {}
+ template <typename Sequence>
+ map(Sequence const& seq
+ , typename enable_if<traits::is_sequence<Sequence>>::type* /*dummy*/ = 0)
+ : base_type(begin(seq), detail::map_impl_from_iterator())
+ {}
 
         template <typename Sequence>
- map(Sequence const& rhs)
- : data(rhs) {}
+ map(Sequence& seq
+ , typename enable_if<traits::is_sequence<Sequence>>::type* /*dummy*/ = 0)
+ : base_type(begin(seq), detail::map_impl_from_iterator())
+ {}
 
- #include <boost/fusion/container/map/detail/map_forward_ctor.hpp>
+ template <typename Sequence>
+ map(Sequence&& seq
+ , typename enable_if<traits::is_sequence<Sequence>>::type* /*dummy*/ = 0)
+ : base_type(begin(seq), detail::map_impl_from_iterator())
+ {}
+
+ template <typename First, typename ...T_>
+ map(First const& first, T_ const&... rest)
+ : base_type(first, rest...)
+ {}
+
+ template <typename First, typename ...T_>
+ map(First&& first, T_&&... rest)
+ : base_type(std::forward<First>(first), std::forward<T_>(rest)...)
+ {}
 
- template <typename T>
- map&
- operator=(T const& rhs)
+ map& operator=(map const& rhs)
         {
- data = rhs;
+ base_type::operator=(rhs.base());
             return *this;
         }
 
- storage_type& get_data() { return data; }
- storage_type const& get_data() const { return data; }
+ map& operator=(map&& rhs)
+ {
+ base_type::operator=(std::forward<base_type>(rhs.base()));
+ return *this;
+ }
 
- private:
+ template <typename Sequence>
+ typename enable_if<traits::is_sequence<Sequence>, map&>::type
+ operator=(Sequence const& seq)
+ {
+ base().assign(begin(seq), detail::map_impl_from_iterator());
+ return *this;
+ }
 
- storage_type data;
+ base_type& base() { return *this; }
+ base_type const& base() const { return *this; }
     };
 }}
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
 #endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
 #endif

Modified: branches/release/boost/fusion/container/map/map_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/map_fwd.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/map/map_fwd.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -4,49 +4,33 @@
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-#if !defined(FUSION_MAP_FORWARD_07212005_1105)
-#define FUSION_MAP_FORWARD_07212005_1105
+#if !defined(FUSION_MAP_FORWARD_MAIN_07212005_1105)
+#define FUSION_MAP_FORWARD_MAIN_07212005_1105
 
-#include <boost/fusion/container/map/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/config.hpp>
 
-#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
-#include <boost/fusion/container/map/detail/preprocessed/map_fwd.hpp>
+///////////////////////////////////////////////////////////////////////////////
+// With no decltype and variadics, we will use the C++03 version
+///////////////////////////////////////////////////////////////////////////////
+#if (defined(BOOST_NO_CXX11_DECLTYPE) \
+ || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \
+ || defined(BOOST_NO_CXX11_RVALUE_REFERENCES))
+# include <boost/fusion/container/map/detail/cpp03/map_fwd.hpp>
 #else
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map" FUSION_MAX_MAP_SIZE_STR "_fwd.hpp")
+# if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
+# define BOOST_FUSION_HAS_VARIADIC_MAP
 #endif
 
-/*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
- This is an auto-generated file. Do not edit!
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
+#include <boost/fusion/container/map/detail/map_impl.hpp>
 
+///////////////////////////////////////////////////////////////////////////////
+// C++11 interface
+///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace fusion
 {
- struct void_;
- struct map_tag;
- struct map_iterator_tag;
-
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename T, void_)
- >
+ template <typename ...T>
     struct map;
 }}
 
-#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
-#pragma wave option(output: null)
 #endif
-
-#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
-
 #endif

Copied: branches/release/boost/fusion/container/map/map_iterator.hpp (from r82784, trunk/boost/fusion/container/map/map_iterator.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/container/map/map_iterator.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82784, trunk/boost/fusion/container/map/map_iterator.hpp)
@@ -0,0 +1,148 @@
+/*=============================================================================
+ Copyright (c) 2005-2013 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MAP_ITERATOR_02042013_0835)
+#define BOOST_FUSION_MAP_ITERATOR_02042013_0835
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ template <typename Seq, int Pos>
+ struct map_iterator
+ : iterator_facade<
+ map_iterator<Seq, Pos>
+ , typename Seq::category>
+ {
+ typedef Seq sequence;
+ typedef mpl::int_<Pos> index;
+
+ map_iterator(Seq& seq)
+ : seq_(seq)
+ {}
+
+ template<typename Iterator>
+ struct value_of
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get_val(index()))
+ type;
+ };
+
+ template<typename Iterator>
+ struct value_of_data
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get_val(index()).second)
+ type;
+ };
+
+ template<typename Iterator>
+ struct key_of
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get_key(index()))
+ type;
+ };
+
+ template<typename Iterator>
+ struct deref
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get(index()))
+ type;
+
+ static type
+ call(Iterator const& it)
+ {
+ return it.seq_.get(typename Iterator::index());
+ }
+ };
+
+ template<typename Iterator>
+ struct deref_data
+ {
+ typedef typename Iterator::sequence sequence;
+ typedef typename Iterator::index index;
+ typedef
+ decltype(std::declval<sequence>().get(index()).second)
+ type;
+
+ static type
+ call(Iterator const& it)
+ {
+ return it.seq_.get(typename Iterator::index()).second;
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef typename Iterator::index index;
+ typedef typename Iterator::sequence sequence;
+ typedef map_iterator<sequence, index::value + N::value> type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.seq_);
+ }
+ };
+
+ template<typename Iterator>
+ struct next
+ : advance<Iterator, mpl::int_<1> >
+ {};
+
+ template<typename Iterator>
+ struct prior
+ : advance<Iterator, mpl::int_<-1> >
+ {};
+
+ template <typename I1, typename I2>
+ struct distance
+ {
+ typedef typename
+ mpl::minus<
+ typename I2::index, typename I1::index
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+
+ template<typename I1, typename I2>
+ struct equal_to
+ : mpl::equal_to<typename I1::index, typename I2::index>
+ {};
+
+ Seq& seq_;
+
+ private:
+ // silence MSVC warning C4512: assignment operator could not be generated
+ map_iterator& operator= (map_iterator const&);
+ };
+
+}}
+
+#endif

Modified: branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/vector/detail/vector_forward_ctor.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -12,14 +12,14 @@
 #include <boost/preprocessor/repetition/enum_params.hpp>
 #include <boost/preprocessor/repetition/enum_binary_params.hpp>
 
-#define FUSION_FORWARD_CTOR_MOVE(z, n, _) std::move(_##n)
+#define FUSION_FORWARD_CTOR_FORWARD(z, n, _) std::forward<U##n>(_##n)
 
 #define BOOST_PP_FILENAME_1 \
     <boost/fusion/container/vector/detail/vector_forward_ctor.hpp>
 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
 #include BOOST_PP_ITERATE()
 
-#undef FUSION_FORWARD_CTOR_MOVE
+#undef FUSION_FORWARD_CTOR_FORWARD
 #endif
 #else // defined(BOOST_PP_IS_ITERATING)
 ///////////////////////////////////////////////////////////////////////////////
@@ -37,12 +37,13 @@
         N, typename detail::call_param<T, >::type _))
         : vec(BOOST_PP_ENUM_PARAMS(N, _)) {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
 #if N == 1
     explicit
 #endif
- vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _))
- : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_MOVE, _)) {}
+ vector(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _))
+ : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_FORWARD, _)) {}
 #endif
 
 #undef N

Modified: branches/release/boost/fusion/container/vector/detail/vector_n.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/vector_n.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/vector/detail/vector_n.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -9,21 +9,34 @@
 #if !defined(FUSION_MACRO_05042005)
 #define FUSION_MACRO_05042005
 
-#define FUSION_VECTOR_MEMBER_MEMBER_DEFAULT_INIT(z, n, _) m##n()
-#define FUSION_VECTOR_MEMBER_MEMBER_INIT(z, n, _) m##n(_##n)
-#define FUSION_VECTOR_MEMBER_COPY_INIT(z, n, _) m##n(other.m##n)
-#define FUSION_VECTOR_MEMBER_FWD(z, n, _) m##n(std::forward<T##n>(other.m##n))
-#define FUSION_VECTOR_ARG_FWD(z, n, _) m##n(std::forward<T##n>(_##n))
-#define FUSION_VECTOR_MEMBER_MEMBER_DECL(z, n, _) T##n m##n;
-#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) std::forward<T##n>(_##n)
+#define FUSION_VECTOR_CTOR_DEFAULT_INIT(z, n, _) \
+ m##n()
 
-#define FUSION_VECTOR_MEMBER_MEMBER_ASSIGN(z, n, _) \
+#define FUSION_VECTOR_CTOR_INIT(z, n, _) \
+ m##n(_##n)
+
+#define FUSION_VECTOR_MEMBER_CTOR_INIT(z, n, _) \
+ m##n(other.m##n)
+
+#define FUSION_VECTOR_CTOR_FORWARD(z, n, _) \
+ m##n(std::forward<T##n>(other.m##n))
+
+#define FUSION_VECTOR_CTOR_ARG_FWD(z, n, _) \
+ m##n(std::forward<U##n>(_##n))
+
+#define FUSION_VECTOR_MEMBER_DECL(z, n, _) \
+ T##n m##n;
+
+#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) \
+ std::forward<U##n>(_##n)
+
+#define FUSION_VECTOR_MEMBER_ASSIGN(z, n, _) \
     this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n);
 
-#define FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN(z, n, _) \
+#define FUSION_VECTOR_MEMBER_DEREF_ASSIGN(z, n, _) \
     this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n);
 
-#define FUSION_VECTOR_MEMBER_MEMBER_FORWARD(z, n, _) \
+#define FUSION_VECTOR_MEMBER_MOVE(z, n, _) \
     this->BOOST_PP_CAT(m, n) = std::forward< \
         BOOST_PP_CAT(T, n)>(vec.BOOST_PP_CAT(m, n));
 
@@ -47,32 +60,35 @@
     struct BOOST_PP_CAT(vector_data, N)
     {
         BOOST_PP_CAT(vector_data, N)()
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_MEMBER_DEFAULT_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_DEFAULT_INIT, _) {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
- BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _))
- : BOOST_PP_ENUM(N, FUSION_VECTOR_ARG_FWD, _) {}
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+ BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _)
+ , typename boost::enable_if<is_convertible<U0, T0> >::type* /*dummy*/ = 0
+ )
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_ARG_FWD, _) {}
 #endif
 
         BOOST_PP_CAT(vector_data, N)(
             BOOST_PP_ENUM_BINARY_PARAMS(
                 N, typename detail::call_param<T, >::type _))
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_MEMBER_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_INIT, _) {}
 
         BOOST_PP_CAT(vector_data, N)(
             BOOST_PP_CAT(vector_data, N) const& other)
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_COPY_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_CTOR_INIT, _) {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         BOOST_PP_CAT(vector_data, N)(
             BOOST_PP_CAT(vector_data, N)&& other)
- : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FWD, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_FORWARD, _) {}
 #endif
 
         BOOST_PP_CAT(vector_data, N)&
         operator=(BOOST_PP_CAT(vector_data, N) const& vec)
         {
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _)
             return *this;
         }
 
@@ -96,7 +112,7 @@
             return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i));
         }
 
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_DECL, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DECL, _)
     };
 
     template <BOOST_PP_ENUM_PARAMS(N, typename T)>
@@ -123,17 +139,25 @@
                 N, typename detail::call_param<T, >::type _))
             : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
 #if (N == 1)
         explicit
-#endif
- BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _))
+ BOOST_PP_CAT(vector, N)(U0&& _0
+ , typename boost::enable_if<is_convertible<U0, T0> >::type* /*dummy*/ = 0
+ )
+ : base_type(std::forward<U0>(_0)) {}
+#else
+ BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _))
             : base_type(BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FORWARD, _)) {}
 #endif
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
         BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs)
             : base_type(std::forward<base_type>(rhs)) {}
+
+ BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N) const& rhs)
+ : base_type(rhs) {}
+
 #endif
 
         template <BOOST_PP_ENUM_PARAMS(N, typename U)>
@@ -163,7 +187,7 @@
         BOOST_PP_CAT(vector, N)&
         operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
         {
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _)
             return *this;
         }
 
@@ -174,15 +198,22 @@
             typedef typename result_of::begin<Sequence const>::type I0;
             I0 i0 = fusion::begin(seq);
             BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _)
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_ASSIGN, _)
+ return *this;
+ }
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ BOOST_PP_CAT(vector, N)&
+ operator=(BOOST_PP_CAT(vector, N) const& vec)
+ {
+ base_type::operator=(vec);
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
         BOOST_PP_CAT(vector, N)&
         operator=(BOOST_PP_CAT(vector, N)&& vec)
         {
- BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_FORWARD, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MOVE, _)
             return *this;
         }
 #endif

Modified: branches/release/boost/fusion/container/vector/vector.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/vector.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/container/vector/vector.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -106,7 +106,7 @@
         vector(vector const& rhs)
             : vec(rhs.vec) {}
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         vector(vector&& rhs)
             : vec(std::forward<vector_n>(rhs.vec)) {}
 #endif
@@ -140,7 +140,14 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+ vector&
+ operator=(vector const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         vector&
         operator=(vector&& rhs)
         {

Modified: branches/release/boost/fusion/functional/adapter/unfused.hpp
==============================================================================
--- branches/release/boost/fusion/functional/adapter/unfused.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/functional/adapter/unfused.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -100,7 +100,7 @@
 
 namespace boost
 {
-#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE)
+#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_DECLTYPE)
     template<class F>
     struct result_of< boost::fusion::unfused<F> const () >
     {

Modified: branches/release/boost/fusion/functional/adapter/unfused_typed.hpp
==============================================================================
--- branches/release/boost/fusion/functional/adapter/unfused_typed.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/functional/adapter/unfused_typed.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -80,7 +80,7 @@
 
 namespace boost
 {
-#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE)
+#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_DECLTYPE)
     template<class F, class Seq>
     struct result_of< boost::fusion::unfused_typed<F,Seq> const () >
         : boost::fusion::unfused_typed<F,Seq>::template result<

Copied: branches/release/boost/fusion/include/move.hpp (from r82583, trunk/boost/fusion/include/move.hpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/release/boost/fusion/include/move.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669, copy of r82583, trunk/boost/fusion/include/move.hpp)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2013 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MOVE)
+#define FUSION_INCLUDE_MOVE
+
+#include <boost/fusion/algorithm/auxiliary/move.hpp>
+
+#endif

Modified: branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/iterator/detail/segmented_equal_to.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,7 +13,7 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
 
     namespace detail
     {
@@ -32,7 +32,7 @@
         {};
 
         template <>
- struct segmented_equal_to<fusion::nil, fusion::nil>
+ struct segmented_equal_to<fusion::nil_, fusion::nil_>
           : mpl::true_
         {};
     }

Modified: branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/iterator/detail/segmented_iterator.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -19,7 +19,7 @@
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct nil_;
 
     namespace detail
     {

Modified: branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/iterator/detail/segmented_next_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -83,7 +83,7 @@
         //auto segmented_next_impl_recurse3(stack)
         //{
         // if (size(stack) == 1)
- // return cons(iterator_range(end(car(stack)), end(car(stack))), nil);
+ // return cons(iterator_range(end(car(stack)), end(car(stack))), nil_);
         // else
         // return segmented_next_impl_recurse(stack.cdr);
         //}

Modified: branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -19,10 +19,10 @@
 {
     //auto segmented_begin( seq )
     //{
- // return make_segmented_iterator( segmented_begin_impl( seq, nil ) );
+ // return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) );
     //}
 
- template <typename Sequence, typename Nil = fusion::nil>
+ template <typename Sequence, typename Nil = fusion::nil_>
     struct segmented_begin
     {
         typedef

Modified: branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -18,7 +18,7 @@
     // return make_segmented_iterator( segmented_end_impl( seq ) );
     //}
 
- template <typename Sequence, typename Nil = fusion::nil>
+ template <typename Sequence, typename Nil = fusion::nil_>
     struct segmented_end
     {
         typedef

Modified: branches/release/boost/fusion/support/deduce_sequence.hpp
==============================================================================
--- branches/release/boost/fusion/support/deduce_sequence.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/support/deduce_sequence.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -32,7 +32,7 @@
             { };
 
             // never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
             template <typename T>
             typename result< deducer(T) >::type
             operator()(T&&) const;

Modified: branches/release/boost/fusion/support/pair.hpp
==============================================================================
--- branches/release/boost/fusion/support/pair.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/support/pair.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -13,6 +13,8 @@
 #include <boost/fusion/support/detail/access.hpp>
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/config.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_convertible.hpp>
 
 #if defined (BOOST_MSVC)
 # pragma warning(push)
@@ -28,9 +30,26 @@
         pair()
             : second() {}
 
+ pair(pair const& rhs)
+ : second(rhs.second) {}
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ pair(pair&& rhs)
+ : second(std::forward<Second>(rhs.second)) {}
+#endif
+
         pair(typename detail::call_param<Second>::type val)
             : second(val) {}
 
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+
+ template <typename Second2>
+ pair(Second2&& val
+ , typename boost::enable_if<is_convertible<Second2, Second> >::type* /*dummy*/ = 0
+ ) : second(std::forward<Second2>(val)) {}
+
+#endif
+
         template <typename Second2>
         pair(pair<First, Second2> const& rhs)
             : second(rhs.second) {}
@@ -42,6 +61,20 @@
             return *this;
         }
 
+ pair& operator=(pair const& rhs)
+ {
+ second = rhs.second;
+ return *this;
+ }
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ pair& operator=(pair&& rhs)
+ {
+ second = std::forward<Second>(rhs.second);
+ return *this;
+ }
+#endif
+
         typedef First first_type;
         typedef Second second_type;
         Second second;
@@ -105,6 +138,13 @@
     {
         return l.second != r.second;
     }
+
+ template <typename First, typename SecondL, typename SecondR>
+ inline bool
+ operator<(pair<First, SecondL> const& l, pair<First, SecondR> const& r)
+ {
+ return l.second < r.second;
+ }
 }}
 
 #if defined (BOOST_MSVC)

Modified: branches/release/boost/fusion/support/segmented_fold_until.hpp
==============================================================================
--- branches/release/boost/fusion/support/segmented_fold_until.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/support/segmented_fold_until.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -20,7 +20,7 @@
 {
     //auto segmented_fold_until(seq, state, fun)
     //{
- // return first(segmented_fold_until_impl(seq, state, nil, fun));
+ // return first(segmented_fold_until_impl(seq, state, nil_, fun));
     //}
 
     namespace result_of
@@ -32,7 +32,7 @@
                 detail::segmented_fold_until_impl<
                     Sequence
                   , State
- , fusion::nil
+ , fusion::nil_
                   , Fun
>
             filter;
@@ -55,7 +55,7 @@
             typename result_of::segmented_fold_until<Sequence, State, Fun>::filter
         filter;
         
- return filter::call(seq, state, fusion::nil(), fun);
+ return filter::call(seq, state, fusion::nil_(), fun);
     }
 
     template <typename Sequence, typename State, typename Fun>
@@ -66,7 +66,7 @@
             typename result_of::segmented_fold_until<Sequence const, State, Fun>::filter
         filter;
         
- return filter::call(seq, state, fusion::nil(), fun);
+ return filter::call(seq, state, fusion::nil_(), fun);
     }
 }}
 

Modified: branches/release/boost/fusion/view/detail/strictest_traversal.hpp
==============================================================================
--- branches/release/boost/fusion/view/detail/strictest_traversal.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/detail/strictest_traversal.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -56,7 +56,7 @@
             };
 
             // never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
             template<typename StrictestSoFar, typename Next>
             typename result<strictest_traversal_impl(StrictestSoFar, Next)>::type
             operator()(StrictestSoFar&&, Next&&) const;

Modified: branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp
==============================================================================
--- branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -70,7 +70,7 @@
     // switch (size(stack_begin))
     // {
     // case 1:
- // return nil;
+ // return nil_;
     // case 2:
     // // car(cdr(stack_begin)) is a range over values.
     // assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin))));
@@ -205,7 +205,7 @@
     template <typename Stack>
     struct make_segment_sequence_front<Stack, 1>
     {
- typedef typename Stack::cdr_type type; // nil
+ typedef typename Stack::cdr_type type; // nil_
 
         static type call(Stack const &stack)
         {
@@ -218,7 +218,7 @@
     // switch (size(stack_end))
     // {
     // case 1:
- // return nil;
+ // return nil_;
     // case 2:
     // // car(cdr(stack_back)) is a range over values.
     // assert(end(front(car(stack_end))) == end(car(cdr(stack_end))));
@@ -348,7 +348,7 @@
     template <typename Stack>
     struct make_segment_sequence_back<Stack, 1>
     {
- typedef typename Stack::cdr_type type; // nil
+ typedef typename Stack::cdr_type type; // nil_
 
         static type call(Stack const& stack)
         {

Modified: branches/release/boost/fusion/view/nview/nview.hpp
==============================================================================
--- branches/release/boost/fusion/view/nview/nview.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/nview/nview.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -37,7 +37,7 @@
             template<typename U>
             struct result<addref(U)> : add_reference<U> {};
 
-#ifdef BOOST_NO_RVALUE_REFERENCES
+#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
             template <typename T>
             typename add_reference<T>::type
             operator()(T& x) const

Modified: branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -38,7 +38,7 @@
             {};
 
             // never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
             template<typename Seq>
             typename result<poly_value_at(Seq)>::type
             operator()(Seq&&) const;

Modified: branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -37,7 +37,7 @@
             {};
 
             // never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
             template<typename It>
             typename result<poly_value_of(It)>::type
             operator()(It&&) const;

Modified: branches/release/boost/fusion/view/zip_view/zip_view.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/zip_view.hpp Sun Sep 15 02:16:39 2013 (r85668)
+++ branches/release/boost/fusion/view/zip_view/zip_view.hpp 2013-09-15 02:27:58 EDT (Sun, 15 Sep 2013) (r85669)
@@ -68,7 +68,7 @@
             };
 
             // never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
             template<typename Seq>
             typename result<seq_ref_size(Seq)>::type
             operator()(Seq&&) const;
@@ -89,7 +89,7 @@
             };
 
             // never called, but needed for decltype-based result_of (C++0x)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
             template<typename Lhs, typename Rhs>
             typename result<poly_min(Lhs, Rhs)>::type
             operator()(Lhs&&, Rhs&&) const;


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