$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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;