$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r75980 - in branches/release/boost/fusion: . algorithm/transformation container/list container/map container/map/detail container/map/detail/preprocessed container/vector container/vector/detail container/vector/detail/preprocessed iterator sequence/comparison sequence/io support view/detail view/nview view/nview/detail view/zip_view view/zip_view/detail
From: joel_at_[hidden]
Date: 2011-12-15 21:14:21
Author: djowel
Date: 2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
New Revision: 75980
URL: http://svn.boost.org/trac/boost/changeset/75980
Log:
Merge from trunk
Added:
   branches/release/boost/fusion/container/map/detail/at_impl.hpp
      - copied unchanged from r75976, /trunk/boost/fusion/container/map/detail/at_impl.hpp
   branches/release/boost/fusion/container/map/detail/value_at_impl.hpp
      - copied unchanged from r75976, /trunk/boost/fusion/container/map/detail/value_at_impl.hpp
Properties modified: 
   branches/release/boost/fusion/   (props changed)
Text files modified: 
   branches/release/boost/fusion/algorithm/transformation/pop_back.hpp              |     2                                         
   branches/release/boost/fusion/container/list/cons.hpp                            |     4 +-                                      
   branches/release/boost/fusion/container/map/detail/preprocessed/map10.hpp        |     2                                         
   branches/release/boost/fusion/container/map/detail/preprocessed/map20.hpp        |     2                                         
   branches/release/boost/fusion/container/map/detail/preprocessed/map30.hpp        |     2                                         
   branches/release/boost/fusion/container/map/detail/preprocessed/map40.hpp        |     2                                         
   branches/release/boost/fusion/container/map/detail/preprocessed/map50.hpp        |     2                                         
   branches/release/boost/fusion/container/map/map.hpp                              |     4 ++                                      
   branches/release/boost/fusion/container/vector/detail/preprocessed/vector10.hpp  |    22 ++++++++--------                        
   branches/release/boost/fusion/container/vector/detail/preprocessed/vector20.hpp  |    20 +++++++-------                          
   branches/release/boost/fusion/container/vector/detail/preprocessed/vector30.hpp  |    20 +++++++-------                          
   branches/release/boost/fusion/container/vector/detail/preprocessed/vector40.hpp  |    20 +++++++-------                          
   branches/release/boost/fusion/container/vector/detail/preprocessed/vector50.hpp  |    20 +++++++-------                          
   branches/release/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp |     3 +                                       
   branches/release/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp |     3 +                                       
   branches/release/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp |     3 +                                       
   branches/release/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp |     3 +                                       
   branches/release/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp |     3 +                                       
   branches/release/boost/fusion/container/vector/detail/vector_n.hpp               |     4 +-                                      
   branches/release/boost/fusion/container/vector/vector.hpp                        |    54 +++++++++++++++++++++++++-------------- 
   branches/release/boost/fusion/iterator/equal_to.hpp                              |     4 +-                                      
   branches/release/boost/fusion/sequence/comparison/equal_to.hpp                   |     2                                         
   branches/release/boost/fusion/sequence/comparison/greater.hpp                    |     2                                         
   branches/release/boost/fusion/sequence/comparison/greater_equal.hpp              |     2                                         
   branches/release/boost/fusion/sequence/comparison/less.hpp                       |     2                                         
   branches/release/boost/fusion/sequence/comparison/less_equal.hpp                 |     2                                         
   branches/release/boost/fusion/sequence/comparison/not_equal_to.hpp               |     2                                         
   branches/release/boost/fusion/sequence/io/in.hpp                                 |     2                                         
   branches/release/boost/fusion/sequence/io/out.hpp                                |     2                                         
   branches/release/boost/fusion/support/deduce_sequence.hpp                        |     8 +++++                                   
   branches/release/boost/fusion/support/tag_of.hpp                                 |    27 ++++++++++---------                     
   branches/release/boost/fusion/support/tag_of_fwd.hpp                             |     3 --                                      
   branches/release/boost/fusion/view/detail/strictest_traversal.hpp                |     8 +++++                                   
   branches/release/boost/fusion/view/nview/detail/nview_impl.hpp                   |     4 +-                                      
   branches/release/boost/fusion/view/nview/nview.hpp                               |    11 ++++++++                                
   branches/release/boost/fusion/view/zip_view/detail/end_impl.hpp                  |     2                                         
   branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp             |     8 +++++                                   
   branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp             |     8 +++++                                   
   branches/release/boost/fusion/view/zip_view/zip_view.hpp                         |    16 +++++++++++                             
   39 files changed, 194 insertions(+), 116 deletions(-)
Modified: branches/release/boost/fusion/algorithm/transformation/pop_back.hpp
==============================================================================
--- branches/release/boost/fusion/algorithm/transformation/pop_back.hpp	(original)
+++ branches/release/boost/fusion/algorithm/transformation/pop_back.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -96,7 +96,7 @@
             {
                 return type(fusion::prior(i.iterator_base));
             }
-    };
+        };
 
         template <typename Iterator>
         struct prior_impl<Iterator, true>
Modified: branches/release/boost/fusion/container/list/cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/cons.hpp	(original)
+++ branches/release/boost/fusion/container/list/cons.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -88,7 +88,7 @@
         template <typename Sequence>
         cons(
             Sequence const& seq
-          , typename disable_if<
+          , typename boost::disable_if<
                 mpl::or_<
                     is_convertible<Sequence, cons> // use copy ctor instead
                   , is_convertible<Sequence, Car>  // use copy to car instead
@@ -119,7 +119,7 @@
         }
 
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, Car>, cons&>::type
+        typename boost::disable_if<is_convertible<Sequence, Car>, cons&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type Iterator;
Modified: branches/release/boost/fusion/container/map/detail/preprocessed/map10.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/preprocessed/map10.hpp	(original)
+++ branches/release/boost/fusion/container/map/detail/preprocessed/map10.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -13,7 +13,7 @@
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
     struct map : sequence_base<map<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> >
     {
-        struct category : forward_traversal_tag, associative_tag {};
+        struct category : random_access_traversal_tag, associative_tag {};
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag; 
         typedef mpl::false_ is_view;
Modified: branches/release/boost/fusion/container/map/detail/preprocessed/map20.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/preprocessed/map20.hpp	(original)
+++ branches/release/boost/fusion/container/map/detail/preprocessed/map20.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -13,7 +13,7 @@
     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 map : sequence_base<map<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> >
     {
-        struct category : forward_traversal_tag, associative_tag {};
+        struct category : random_access_traversal_tag, associative_tag {};
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag; 
         typedef mpl::false_ is_view;
Modified: branches/release/boost/fusion/container/map/detail/preprocessed/map30.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/preprocessed/map30.hpp	(original)
+++ branches/release/boost/fusion/container/map/detail/preprocessed/map30.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -13,7 +13,7 @@
     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 map : sequence_base<map<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> >
     {
-        struct category : forward_traversal_tag, associative_tag {};
+        struct category : random_access_traversal_tag, associative_tag {};
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag; 
         typedef mpl::false_ is_view;
Modified: branches/release/boost/fusion/container/map/detail/preprocessed/map40.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/preprocessed/map40.hpp	(original)
+++ branches/release/boost/fusion/container/map/detail/preprocessed/map40.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -13,7 +13,7 @@
     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 map : sequence_base<map<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> >
     {
-        struct category : forward_traversal_tag, associative_tag {};
+        struct category : random_access_traversal_tag, associative_tag {};
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag; 
         typedef mpl::false_ is_view;
Modified: branches/release/boost/fusion/container/map/detail/preprocessed/map50.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/detail/preprocessed/map50.hpp	(original)
+++ branches/release/boost/fusion/container/map/detail/preprocessed/map50.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -13,7 +13,7 @@
     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 map : sequence_base<map<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> >
     {
-        struct category : forward_traversal_tag, associative_tag {};
+        struct category : random_access_traversal_tag, associative_tag {};
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag; 
         typedef mpl::false_ is_view;
Modified: branches/release/boost/fusion/container/map/map.hpp
==============================================================================
--- branches/release/boost/fusion/container/map/map.hpp	(original)
+++ branches/release/boost/fusion/container/map/map.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -11,6 +11,8 @@
 #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>
@@ -50,7 +52,7 @@
     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)> >
     {
-        struct category : forward_traversal_tag, associative_tag {};
+        struct category : random_access_traversal_tag, associative_tag {};
 
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vector10.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vector10.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vector10.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -61,7 +61,7 @@
         template <typename Sequence>
         vector1(
             Sequence const& seq
-          , typename disable_if<is_convertible<Sequence, T0> >::type* = 0
+          , typename boost::disable_if<is_convertible<Sequence, T0> >::type* = 0
             )
             : base_type(base_type::init_from_sequence(seq)) {}
         template <typename U0>
@@ -72,7 +72,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -157,7 +157,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -242,7 +242,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -327,7 +327,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -412,7 +412,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -497,7 +497,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -582,7 +582,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -667,7 +667,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -752,7 +752,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -837,7 +837,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vector20.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vector20.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vector20.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -73,7 +73,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -158,7 +158,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -243,7 +243,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -328,7 +328,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -413,7 +413,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -498,7 +498,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -583,7 +583,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -668,7 +668,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -753,7 +753,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -838,7 +838,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vector30.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vector30.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vector30.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -73,7 +73,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -158,7 +158,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -243,7 +243,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -328,7 +328,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -413,7 +413,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -498,7 +498,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -583,7 +583,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -668,7 +668,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -753,7 +753,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -838,7 +838,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vector40.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vector40.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vector40.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -73,7 +73,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -158,7 +158,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -243,7 +243,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -328,7 +328,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -413,7 +413,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -498,7 +498,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -583,7 +583,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -668,7 +668,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -753,7 +753,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -838,7 +838,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vector50.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vector50.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vector50.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -73,7 +73,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -158,7 +158,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -243,7 +243,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -328,7 +328,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -413,7 +413,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -498,7 +498,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -583,7 +583,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -668,7 +668,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -753,7 +753,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
@@ -838,7 +838,7 @@
             return *this;
         }
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -36,7 +36,7 @@
             : vec(rhs.vec) {}
         template <typename Sequence>
         vector(Sequence const& rhs)
-            : vec(rhs) {}
+            : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
         
         
         
@@ -116,6 +116,7 @@
             return vec.at_impl(mpl::int_<I::value>());
         }
     private:
+        BOOST_FUSION_VECTOR_CTOR_HELPER()
         vector_n vec;
     };
 }}
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -36,7 +36,7 @@
             : vec(rhs.vec) {}
         template <typename Sequence>
         vector(Sequence const& rhs)
-            : vec(rhs) {}
+            : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
         
         
         
@@ -136,6 +136,7 @@
             return vec.at_impl(mpl::int_<I::value>());
         }
     private:
+        BOOST_FUSION_VECTOR_CTOR_HELPER()
         vector_n vec;
     };
 }}
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -36,7 +36,7 @@
             : vec(rhs.vec) {}
         template <typename Sequence>
         vector(Sequence const& rhs)
-            : vec(rhs) {}
+            : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
         
         
         
@@ -156,6 +156,7 @@
             return vec.at_impl(mpl::int_<I::value>());
         }
     private:
+        BOOST_FUSION_VECTOR_CTOR_HELPER()
         vector_n vec;
     };
 }}
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -36,7 +36,7 @@
             : vec(rhs.vec) {}
         template <typename Sequence>
         vector(Sequence const& rhs)
-            : vec(rhs) {}
+            : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
         
         
         
@@ -176,6 +176,7 @@
             return vec.at_impl(mpl::int_<I::value>());
         }
     private:
+        BOOST_FUSION_VECTOR_CTOR_HELPER()
         vector_n vec;
     };
 }}
Modified: branches/release/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -36,7 +36,7 @@
             : vec(rhs.vec) {}
         template <typename Sequence>
         vector(Sequence const& rhs)
-            : vec(rhs) {}
+            : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
         
         
         
@@ -196,6 +196,7 @@
             return vec.at_impl(mpl::int_<I::value>());
         }
     private:
+        BOOST_FUSION_VECTOR_CTOR_HELPER()
         vector_n vec;
     };
 }}
Modified: branches/release/boost/fusion/container/vector/detail/vector_n.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/vector_n.hpp	(original)
+++ branches/release/boost/fusion/container/vector/detail/vector_n.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -104,7 +104,7 @@
         BOOST_PP_CAT(vector, N)(
             Sequence const& seq
 #if (N == 1)
-          , typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0
+          , typename boost::disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0
 #endif
             )
             : base_type(base_type::init_from_sequence(seq)) {}
@@ -118,7 +118,7 @@
         }
 
         template <typename Sequence>
-        typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+        typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
         operator=(Sequence const& seq)
         {
             typedef typename result_of::begin<Sequence const>::type I0;
Modified: branches/release/boost/fusion/container/vector/vector.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/vector.hpp	(original)
+++ branches/release/boost/fusion/container/vector/vector.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -17,6 +17,38 @@
 #include <boost/type_traits/is_base_of.hpp>
 #include <boost/detail/workaround.hpp>
 
+#if !defined(__WAVE__)
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
+
+#define BOOST_FUSION_VECTOR_COPY_INIT()                                       \
+    ctor_helper(rhs, is_base_of<vector, Sequence>())                          \
+
+#define BOOST_FUSION_VECTOR_CTOR_HELPER()                                     \
+    static vector_n const&                                                    \
+    ctor_helper(vector const& rhs, mpl::true_)                                \
+    {                                                                         \
+        return rhs.vec;                                                       \
+    }                                                                         \
+                                                                              \
+    template <typename T>                                                     \
+    static T const&                                                           \
+    ctor_helper(T const& rhs, mpl::false_)                                    \
+    {                                                                         \
+        return rhs;                                                           \
+    }
+
+#else
+
+#define BOOST_FUSION_VECTOR_COPY_INIT()                                       \
+    rhs                                                                       \
+
+#define BOOST_FUSION_VECTOR_CTOR_HELPER()
+
+#endif
+
+#endif // !defined(__WAVE__)
+
 #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
 #include <boost/fusion/container/vector/detail/preprocessed/vector.hpp>
 #else
@@ -76,11 +108,7 @@
 
         template <typename Sequence>
         vector(Sequence const& rhs)
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
-            : vec(ctor_helper(rhs, is_base_of<vector, Sequence>())) {}
-#else
-            : vec(rhs) {}
-#endif
+            : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
 
         //  Expand a couple of forwarding constructors for arguments
         //  of type (T0), (T0, T1), (T0, T1, T2) etc. Example:
@@ -149,21 +177,7 @@
 
     private:
 
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
-        static vector_n const&
-        ctor_helper(vector const& rhs, mpl::true_)
-        {
-            return rhs.vec;
-        }
-
-        template <typename T>
-        static T const&
-        ctor_helper(T const& rhs, mpl::false_)
-        {
-            return rhs;
-        }
-#endif
-
+        BOOST_FUSION_VECTOR_CTOR_HELPER()
         vector_n vec;
     };
 }}
Modified: branches/release/boost/fusion/iterator/equal_to.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/equal_to.hpp	(original)
+++ branches/release/boost/fusion/iterator/equal_to.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -74,7 +74,7 @@
     {
         template <typename Iter1, typename Iter2>
         inline typename
-        enable_if<
+        boost::enable_if<
             mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
             , bool
             >::type
@@ -85,7 +85,7 @@
 
         template <typename Iter1, typename Iter2>
         inline typename
-        enable_if<
+        boost::enable_if<
             mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
             , bool
             >::type
Modified: branches/release/boost/fusion/sequence/comparison/equal_to.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/comparison/equal_to.hpp	(original)
+++ branches/release/boost/fusion/sequence/comparison/equal_to.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -37,7 +37,7 @@
     {
         template <typename Seq1, typename Seq2>
         inline typename
-            enable_if<
+            boost::enable_if<
                 traits::enable_equality<Seq1, Seq2>
               , bool
             >::type
Modified: branches/release/boost/fusion/sequence/comparison/greater.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/comparison/greater.hpp	(original)
+++ branches/release/boost/fusion/sequence/comparison/greater.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -37,7 +37,7 @@
     {
         template <typename Seq1, typename Seq2>
         inline typename
-            enable_if<
+            boost::enable_if<
                 traits::enable_comparison<Seq1, Seq2>
               , bool
             >::type
Modified: branches/release/boost/fusion/sequence/comparison/greater_equal.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/comparison/greater_equal.hpp	(original)
+++ branches/release/boost/fusion/sequence/comparison/greater_equal.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -37,7 +37,7 @@
     {
         template <typename Seq1, typename Seq2>
         inline typename
-            enable_if<
+            boost::enable_if<
                 traits::enable_comparison<Seq1, Seq2>
               , bool
             >::type
Modified: branches/release/boost/fusion/sequence/comparison/less.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/comparison/less.hpp	(original)
+++ branches/release/boost/fusion/sequence/comparison/less.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -28,7 +28,7 @@
     {
         template <typename Seq1, typename Seq2>
         inline typename
-            enable_if<
+            boost::enable_if<
                 traits::enable_comparison<Seq1, Seq2>
               , bool
             >::type
Modified: branches/release/boost/fusion/sequence/comparison/less_equal.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/comparison/less_equal.hpp	(original)
+++ branches/release/boost/fusion/sequence/comparison/less_equal.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -65,7 +65,7 @@
 
         template <typename Seq1, typename Seq2>
         inline typename
-            enable_if<
+            boost::enable_if<
                 traits::enable_comparison<Seq1, Seq2>
               , bool
             >::type
Modified: branches/release/boost/fusion/sequence/comparison/not_equal_to.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/comparison/not_equal_to.hpp	(original)
+++ branches/release/boost/fusion/sequence/comparison/not_equal_to.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -40,7 +40,7 @@
     {
         template <typename Seq1, typename Seq2>
         inline typename
-            enable_if<
+            boost::enable_if<
                 traits::enable_equality<Seq1, Seq2>
               , bool
             >::type
Modified: branches/release/boost/fusion/sequence/io/in.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/io/in.hpp	(original)
+++ branches/release/boost/fusion/sequence/io/in.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -27,7 +27,7 @@
     {
         template <typename Sequence>
         inline typename
-            enable_if<
+            boost::enable_if<
                fusion::traits::is_sequence<Sequence>
               , std::istream&
             >::type
Modified: branches/release/boost/fusion/sequence/io/out.hpp
==============================================================================
--- branches/release/boost/fusion/sequence/io/out.hpp	(original)
+++ branches/release/boost/fusion/sequence/io/out.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -29,7 +29,7 @@
     {
         template <typename Sequence>
         inline typename
-            enable_if<
+            boost::enable_if<
                fusion::traits::is_sequence<Sequence>
               , std::ostream&
             >::type
Modified: branches/release/boost/fusion/support/deduce_sequence.hpp
==============================================================================
--- branches/release/boost/fusion/support/deduce_sequence.hpp	(original)
+++ branches/release/boost/fusion/support/deduce_sequence.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -12,6 +12,7 @@
 #include <boost/fusion/support/deduce.hpp>
 #include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/view/transform_view.hpp>
+#include <boost/config.hpp>
 
 
 namespace boost { namespace fusion { namespace traits
@@ -29,6 +30,13 @@
             struct result< Self(T) >
                 : fusion::traits::deduce<T>
             { };
+
+            // never called, but needed for decltype-based result_of (C++0x)
+#ifndef BOOST_NO_RVALUE_REFERENCES
+            template <typename T>
+            typename result< deducer(T) >::type
+            operator()(T&&) const;
+#endif
         };
     }
 
Modified: branches/release/boost/fusion/support/tag_of.hpp
==============================================================================
--- branches/release/boost/fusion/support/tag_of.hpp	(original)
+++ branches/release/boost/fusion/support/tag_of.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -46,30 +46,31 @@
     namespace detail
     {
         BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag)
-    }
-
-    namespace traits
-    {
-        template <typename Sequence, typename Active>
-        struct tag_of_fallback
-        {
-            typedef non_fusion_tag type;
-        };
 
         template <typename Sequence, typename Active>
-        struct tag_of
-          : mpl::if_< fusion::detail::is_mpl_sequence<Sequence>,
+        struct tag_of_impl
+          : mpl::if_<fusion::detail::is_mpl_sequence<Sequence>,
               mpl::identity<mpl_sequence_tag>,
-              tag_of_fallback<Sequence> >::type
+              mpl::identity<non_fusion_tag> >::type
         {};
 
         template <typename Sequence>
-        struct tag_of<Sequence, typename boost::enable_if<detail::has_fusion_tag<Sequence> >::type>
+        struct tag_of_impl<
+            Sequence
+          , typename boost::enable_if<detail::has_fusion_tag<Sequence> >::type>
         {
             typedef typename Sequence::fusion_tag type;
         };
     }
 
+    namespace traits
+    {
+        template <typename Sequence, typename Active>
+        struct tag_of
+            : boost::fusion::detail::tag_of_impl<Sequence, Active>
+        {};
+    }
+
     namespace detail
     {
         template<typename T>
Modified: branches/release/boost/fusion/support/tag_of_fwd.hpp
==============================================================================
--- branches/release/boost/fusion/support/tag_of_fwd.hpp	(original)
+++ branches/release/boost/fusion/support/tag_of_fwd.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -12,9 +12,6 @@
 {
     namespace traits
     {
-        template <typename Sequence, typename Active = void>
-        struct tag_of_fallback;
-
         template<typename T, typename Active = void>
         struct tag_of;
     }
Modified: branches/release/boost/fusion/view/detail/strictest_traversal.hpp
==============================================================================
--- branches/release/boost/fusion/view/detail/strictest_traversal.hpp	(original)
+++ branches/release/boost/fusion/view/detail/strictest_traversal.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -8,6 +8,7 @@
 #if !defined(FUSION_STRICTEST_TRAVERSAL_20060123_2101)
 #define FUSION_STRICTEST_TRAVERSAL_20060123_2101
 
+#include <boost/config.hpp>
 #include <boost/mpl/or.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/fusion/support/category_of.hpp>
@@ -53,6 +54,13 @@
 
                 typedef typename stricter_traversal<tag1,tag2>::type type;
             };
+
+            // never called, but needed for decltype-based result_of (C++0x)
+#ifndef BOOST_NO_RVALUE_REFERENCES
+            template<typename StrictestSoFar, typename Next>
+            typename result<strictest_traversal_impl(StrictestSoFar, Next)>::type
+            operator()(StrictestSoFar&&, Next&&) const;
+#endif
         };
 
         template<typename Sequence>
Modified: branches/release/boost/fusion/view/nview/detail/nview_impl.hpp
==============================================================================
--- branches/release/boost/fusion/view/nview/detail/nview_impl.hpp	(original)
+++ branches/release/boost/fusion/view/nview/detail/nview_impl.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2009 Hartmut Kaiser
 
-    Distributed under the Boost Software License, Version 1.0. (See accompanying 
+    Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
@@ -27,7 +27,7 @@
 namespace boost { namespace fusion { namespace result_of
 {
     template <typename Sequence
-      , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_VECTOR_SIZE, int I, LONG_MAX)>
+      , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_VECTOR_SIZE, int I, INT_MAX)>
     struct as_nview
     {
         typedef mpl::vector_c<
Modified: branches/release/boost/fusion/view/nview/nview.hpp
==============================================================================
--- branches/release/boost/fusion/view/nview/nview.hpp	(original)
+++ branches/release/boost/fusion/view/nview/nview.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -23,6 +23,8 @@
 #include <boost/fusion/container/vector.hpp>
 #include <boost/fusion/view/transform_view.hpp>
 
+#include <boost/config.hpp>
+
 namespace boost { namespace fusion
 {
     namespace detail
@@ -35,12 +37,21 @@
             template<typename U>
             struct result<addref(U)> : add_reference<U> {};
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
             template <typename T>
             typename add_reference<T>::type 
             operator()(T& x) const
             {
                 return x;
             }
+#else
+            template <typename T>
+            typename result<addref(T)>::type
+            operator()(T&& x) const
+            {
+                return x;
+            }
+#endif
         };
 
         struct addconstref
Modified: branches/release/boost/fusion/view/zip_view/detail/end_impl.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/detail/end_impl.hpp	(original)
+++ branches/release/boost/fusion/view/zip_view/detail/end_impl.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -62,7 +62,7 @@
 
             template<typename Seq>
             typename result<endpoints(Seq const&)>::type
-            operator()(Seq const& seq)
+            operator()(Seq const& seq) const
             {
                 return fusion::advance<M>(fusion::begin(seq));
             }
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	(original)
+++ branches/release/boost/fusion/view/zip_view/detail/value_at_impl.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -16,6 +16,7 @@
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/type_traits/is_same.hpp>
+#include <boost/config.hpp>
 
 namespace boost { namespace fusion {
     
@@ -35,6 +36,13 @@
                                mpl::identity<unused_type>,
                                result_of::value_at<typename remove_reference<Seq>::type, N> >
             {};
+
+            // never called, but needed for decltype-based result_of (C++0x)
+#ifndef BOOST_NO_RVALUE_REFERENCES
+            template<typename Seq>
+            typename result<poly_value_at(Seq)>::type
+            operator()(Seq&&) const;
+#endif
         };
     }
     
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	(original)
+++ branches/release/boost/fusion/view/zip_view/detail/value_of_impl.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -16,6 +16,7 @@
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/type_traits/is_same.hpp>
+#include <boost/config.hpp>
 
 namespace boost { namespace fusion
 {
@@ -34,6 +35,13 @@
                                mpl::identity<unused_type>,
                                result_of::value_of<It> >
             {};
+
+            // never called, but needed for decltype-based result_of (C++0x)
+#ifndef BOOST_NO_RVALUE_REFERENCES
+            template<typename It>
+            typename result<poly_value_of(It)>::type
+            operator()(It&&) const;
+#endif
         };
     }
 
Modified: branches/release/boost/fusion/view/zip_view/zip_view.hpp
==============================================================================
--- branches/release/boost/fusion/view/zip_view/zip_view.hpp	(original)
+++ branches/release/boost/fusion/view/zip_view/zip_view.hpp	2011-12-15 21:14:17 EST (Thu, 15 Dec 2011)
@@ -37,6 +37,8 @@
 #include <boost/type_traits/remove_reference.hpp>
 #include <boost/type_traits/is_reference.hpp>
 
+#include <boost/config.hpp>
+
 namespace boost { namespace fusion {
 
     namespace detail
@@ -64,6 +66,13 @@
                     result_of::size<SeqClass>,
                     mpl::int_<high_int> >::type type;
             };
+
+            // never called, but needed for decltype-based result_of (C++0x)
+#ifndef BOOST_NO_RVALUE_REFERENCES
+            template<typename Seq>
+            typename result<seq_ref_size(Seq)>::type
+            operator()(Seq&&) const;
+#endif
         };
 
         struct poly_min
@@ -78,6 +87,13 @@
                 typedef typename remove_reference<Rhs>::type rhs;
                 typedef typename mpl::min<lhs, rhs>::type type;
             };
+
+            // never called, but needed for decltype-based result_of (C++0x)
+#ifndef BOOST_NO_RVALUE_REFERENCES
+            template<typename Lhs, typename Rhs>
+            typename result<poly_min(Lhs, Rhs)>::type
+            operator()(Lhs&&, Rhs&&) const;
+#endif
         };
 
         template<typename Sequences>