Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r64489 - in sandbox/SOC/2009/fusion: boost/fusion/adapted/detail/class boost/fusion/adapted/detail/struct boost/fusion/algorithm/transformation/detail/filter_key_view boost/fusion/container/list/detail boost/fusion/container/vector/detail boost/fusion/functional/invocation/detail boost/fusion/support/internal boost/fusion/view/detail boost/fusion/view/filter_view/detail boost/fusion/view/joint_view boost/fusion/view/joint_view/detail boost/fusion/view/nview/detail boost/fusion/view/repetitive_view boost/fusion/view/repetitive_view/detail boost/fusion/view/reverse_view/detail boost/fusion/view/single_view/detail boost/fusion/view/transform_view/detail libs/fusion/test/suite1/algorithm libs/fusion/test/suite1/sequence
From: mr.chr.schmidt_at_[hidden]
Date: 2010-07-30 17:48:18


Author: cschmidt
Date: 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
New Revision: 64489
URL: http://svn.boost.org/trac/boost/changeset/64489

Log:
updates
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp | 7 +
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp | 6 -
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp | 5 +
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp | 10 ++
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp | 5 +
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp | 32 +++++++
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp | 44 +----------
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp | 30 +++++++
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp | 3
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp | 146 ++++++++++++++++++++-------------------
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp | 7 -
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp | 10 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp | 7 +
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp | 11 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp | 10 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp | 15 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp | 10 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp | 5 +
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp | 5 +
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp | 35 +++++----
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp | 9 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp | 8 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp | 6
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp | 6
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp | 48 ++++++++++++
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp | 32 ++++++++
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp | 9 +-
   69 files changed, 389 insertions(+), 267 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -37,7 +37,7 @@
     template< \
         BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
> \
- struct class_member_proxy< \
+ struct access::class_member_proxy< \
         BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
       , I \
> \
@@ -75,7 +75,10 @@
     template< \
         BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
> \
- struct struct_member<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ), I> \
+ struct access::struct_member< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
+ , I \
+ > \
     { \
         typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \
                                                                                 \

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -19,12 +19,6 @@
           : identity<T>
         {};
     }
-
- namespace extension
- {
- template<typename T, int N>
- struct class_member_proxy;
- }
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -89,7 +89,10 @@
     template< \
         BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
> \
- struct struct_member<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ), I> \
+ struct access::struct_member< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
+ , I \
+ > \
     { \
         typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
                                                                                 \

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -22,7 +22,7 @@
     {
         template<typename Seq, typename N>
         struct apply
- : extension::struct_member<
+ : extension::access::struct_member<
                 typename detail::identity<Seq>::type
               , N::value
>::template apply<Seq>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -21,7 +21,7 @@
         {
            typedef typename detail::remove_reference<It>::type it;
            typedef typename
- extension::struct_member<
+ extension::access::struct_member<
                    typename detail::identity<typename it::seq_type>::type
                  , it::index::value
>::template apply<typename it::seq_type>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -27,8 +27,14 @@
     {
         struct no_such_member;
 
- template<typename Seq, int N>
- struct struct_member;
+ struct access
+ {
+ template<typename Seq, int N>
+ struct struct_member;
+
+ template<typename T, int N>
+ struct class_member_proxy;
+ };
 
         template<typename Seq, int N>
         struct struct_member_name;

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -20,7 +20,10 @@
     {
         template<typename Seq, typename N>
         struct apply
- : struct_member<typename detail::identity<Seq>::type, N::value>
+ : access::struct_member<
+ typename detail::identity<Seq>::type
+ , N::value
+ >
         {};
     };
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -22,7 +22,7 @@
             typedef typename detail::remove_reference<It>::type it;
 
             typedef typename
- extension::struct_member<
+ extension::access::struct_member<
                     typename detail::identity<typename it::seq_type>::type
                   , it::index::value
>::type

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -34,7 +34,7 @@
             static type
             call(Seq seq)
             {
- return at_key<Key>(seq.seq.get());
+ return at_key<Key>(seq.seq.template get<Seq>());
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,7 @@
 /*==============================================================================
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2005 Eric Niebler
+ Copyright (c) 2009-2010 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)
@@ -9,6 +10,11 @@
 #ifndef BOOST_FUSION_CONTAINER_LIST_DETAIL_BEGIN_IMPL_HPP
 #define BOOST_FUSION_CONTAINER_LIST_DETAIL_BEGIN_IMPL_HPP
 
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/utility/addressof.hpp>
+
 namespace boost { namespace fusion { namespace extension
 {
     template<typename>
@@ -20,12 +26,32 @@
         template<typename Seq>
         struct apply
         {
- typedef cons_iterator<typename detail::add_lref<Seq>::type> type;
+ typedef typename result_of::empty<Seq>::type empty;
+
+ typedef typename
+ mpl::if_<
+ empty
+ , nil_iterator
+ , cons_iterator<typename detail::add_lref<Seq>::type>
+ >::type
+ type;
+
+ static type
+ call(Seq seq, mpl::false_)
+ {
+ return type(boost::addressof(seq), 0);
+ }
+
+ static type
+ call(Seq, mpl::true_)
+ {
+ return type();
+ }
 
             static type
- call(Seq t)
+ call(Seq seq)
             {
- return type(static_cast<Seq>(t),0);
+ return call(static_cast<Seq>(seq), empty());
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,7 +1,7 @@
 /*==============================================================================
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2005 Eric Niebler
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -25,14 +25,15 @@
         typedef cons_iterator_tag fusion_tag;
         typedef forward_traversal_tag category;
         typedef ConsRef cons_type;
+ typedef typename detail::remove_reference<ConsRef>::type* cons_ptr_type;
 
         template<typename OtherConsRef>
         cons_iterator(cons_iterator<OtherConsRef> const& it)
           : cons(it.cons)
         {}
 
- cons_iterator(cons_type cons, int)
- : cons(&cons)
+ cons_iterator(cons_ptr_type cons, int)
+ : cons(cons)
         {}
 
         template<typename OtherConsRef>
@@ -43,7 +44,7 @@
             return *this;
         }
 
- typename detail::remove_reference<cons_type>::type* cons;
+ cons_ptr_type cons;
     };
 
     struct nil_iterator
@@ -52,42 +53,7 @@
         typedef forward_traversal_tag category;
         typedef cons_iterator_tag fusion_tag;
         typedef nil cons_type;
-
- nil_iterator()
- {}
-
- nil_iterator(nil const&,int)
- {}
     };
-
-#define BOOST_FUSION_NIL_ITERATOR(MODIFIER,_)\
- template<>\
- struct cons_iterator<nil MODIFIER>\
- : nil_iterator\
- {\
- cons_iterator()\
- {}\
- \
- explicit\
- cons_iterator(nil MODIFIER, int)\
- {}\
- };\
- \
- template<>\
- struct cons_iterator<list<> MODIFIER>\
- : nil_iterator\
- {\
- cons_iterator()\
- {}\
- \
- explicit\
- cons_iterator(nil MODIFIER, int)\
- {}\
- };
-
- BOOST_FUSION_ALL_CV_REF_COMBINATIONS(BOOST_FUSION_NIL_ITERATOR,_)
-
-#undef BOOST_FUSION_NIL_ITERATOR
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -20,9 +20,7 @@
         template<typename Seq>
         struct apply
         {
- typedef
- cons_iterator<typename detail::forward_as<Seq,nil>::type>
- type;
+ typedef nil_iterator type;
 
             static type
             call(Seq)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,7 +1,7 @@
 /*==============================================================================
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2005 Eric Niebler
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -10,6 +10,11 @@
 #ifndef BOOST_FUSION_CONTAINER_LIST_DETAIL_NEXT_IMPL_HPP
 #define BOOST_FUSION_CONTAINER_LIST_DETAIL_NEXT_IMPL_HPP
 
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/utility/addressof.hpp>
+
 namespace boost { namespace fusion { namespace extension
 {
     template<typename>
@@ -32,13 +37,32 @@
>::type::cdr_type
>::type
             cdr_type;
+ typedef typename result_of::empty<cdr_type>::type empty;
+
+ typedef typename
+ mpl::if_<
+ empty
+ , nil_iterator
+ , cons_iterator<cdr_type>
+ >::type
+ type;
 
- typedef cons_iterator<cdr_type> type;
+ static type
+ call(It, mpl::true_)
+ {
+ return type();
+ }
+
+ static type
+ call(It it, mpl::false_)
+ {
+ return type(boost::addressof(it.cons->cdr),0);
+ }
 
             static type
             call(It it)
             {
- return type(static_cast<cdr_type>(it.cons->cdr),0);
+ return call(it, empty());
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -10,6 +10,7 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_BEGIN_IMPL_HPP
 
 #include <boost/fusion/iterator/basic_iterator.hpp>
+#include <boost/utility/addressof.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {
@@ -34,7 +35,7 @@
             static type
             call(Seq seq)
             {
- return type(&seq);
+ return type(boost::addressof(seq));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009ö-2010 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)
@@ -10,6 +10,7 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_END_IMPL_HPP
 
 #include <boost/fusion/iterator/basic_iterator.hpp>
+#include <boost/utility/addressof.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {
@@ -34,7 +35,7 @@
             static type
             call(Seq seq)
             {
- return type(&seq);
+ return type(boost::addressof(seq));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -69,8 +69,8 @@
>::type* =NULL)
         {
             return do_get_pointer(
- BOOST_FUSION_FORWARD(T,t),
- boost::addressof(BOOST_FUSION_FORWARD(T,t)));
+ BOOST_FUSION_FORWARD(T,t),
+ boost::addressof(t));
         }
     };
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -10,7 +10,7 @@
 
 #include <boost/detail/workaround.hpp>
 #include <boost/type_traits/is_convertible.hpp>
-#if BOOST_WORKAROUND(__GNUC__,>=4)
+#if !BOOST_WORKAROUND(__GNUC__,<4) && !defined(BOOST_MSVC)
 # include <boost/mpl/or.hpp>
 # include <boost/fusion/support/internal/small_big_type.hpp>
 # include <boost/mpl/bool.hpp>
@@ -20,6 +20,7 @@
 namespace boost { namespace fusion { namespace detail
 {
 //cschmidt: Fall back due to a defect in gcc 3.x's call_expr...
+//... and a bug in MSVC
 #if BOOST_WORKAROUND(__GNUC__,<4) || defined(BOOST_MSVC)
     template<typename From, typename To>
     struct is_explicitly_convertible

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,5 +1,5 @@
 /*==============================================================================
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -11,55 +11,82 @@
 #include <boost/fusion/support/is_view.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/remove_const.hpp>
-
 namespace boost { namespace fusion { namespace detail
 {
- template<typename T>
- struct view_storage
+ template<typename T, bool IsView=traits::is_view<T>::type::value>
+ struct view_storage;
+
+ template<typename View>
+ struct view_storage<View, /*IsView*/true>
     {
- private:
- template<typename OtherT>
- static BOOST_FUSION_R_ELSE_CLREF(OtherT)
- get_init_type(BOOST_FUSION_R_ELSE_LREF(OtherT) other_t, mpl::true_)
+ typedef typename
+ remove_const<typename remove_reference<View>::type>::type
+ type;
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ typedef type const& call_param;
+#endif
+
+#define BOOST_FUSION_VIEW_STORAGE_CTOR(MODIFIER,_)\
+ template<typename OtherT, bool IsView>\
+ view_storage(view_storage<OtherT, IsView> MODIFIER storage)\
+ : view(storage.template get<view_storage<OtherT, IsView> MODIFIER>())\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VIEW_STORAGE_CTOR,_)
+
+#undef BOOST_FUSION_VIEW_STORAGE_CTOR
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ view_storage(call_param view)
+ : view(view)
+ {}
+#else
+ template<typename OtherView>
+ view_storage(OtherView&& view)
+ : view(std::forward<OtherView>(view))
+ {}
+#endif
+
+ template<typename OtherViewStorage>
+ view_storage&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherViewStorage) other_storage)
         {
- return BOOST_FUSION_FORWARD(OtherT,other_t);
+ view=other_storage.template get<OtherViewStorage>();
+ return *this;
         }
 
- template<typename OtherT>
- static typename remove_reference<OtherT>::type*
- get_init_type(BOOST_FUSION_R_ELSE_LREF(OtherT) other_t, mpl::false_)
+ //workaround until we get rvalue refs for this
+ template<typename SelfType>
+ typename forward_as<SelfType, type>::type
+ get()
         {
- return &other_t;
+ return static_cast<typename forward_as<SelfType, type>::type>(view);
         }
 
- public:
- typedef T arg_type;
- typedef typename
- mpl::if_<
- traits::is_view<T>
- , typename remove_reference<T>::type
- , typename add_lref<T>::type
- >::type
- type;
+ template<typename SelfType>
+ typename forward_as<SelfType, type const>::type
+ get()const
+ {
+ return static_cast<
+ typename forward_as<SelfType, type const>::type
+ >(view);
+ }
+
+ type view;
+ };
 
+ template<typename Seq>
+ struct view_storage<Seq, /*IsView*/false>
+ {
+ typedef typename add_lref<Seq>::type type;
 #ifdef BOOST_NO_RVALUE_REFERENCES
- typedef typename
- mpl::if_<
- traits::is_view<T>
- , typename add_lref<typename add_const<T>::type>::type
- , type
- >::type
- call_param;
+ typedef type call_param;
 #endif
 
 #define BOOST_FUSION_VIEW_STORAGE_CTOR(MODIFIER,_)\
- template<typename OtherT>\
- view_storage(view_storage<OtherT> MODIFIER storage)\
- : t(get_init_type(storage.get(), typename traits::is_view<T>::type()))\
+ template<typename OtherSeq>\
+ view_storage(view_storage<OtherSeq, false> MODIFIER storage)\
+ : seq(storage.seq)\
         {}
 
         BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VIEW_STORAGE_CTOR,_)
@@ -67,62 +94,39 @@
 #undef BOOST_FUSION_VIEW_STORAGE_CTOR
 
 #ifdef BOOST_NO_RVALUE_REFERENCES
- view_storage(call_param t)
- : t(get_init_type(t, typename traits::is_view<T>::type()))
+ view_storage(call_param seq)
+ : seq(&seq)
         {}
 #else
- template<typename OtherT>
- view_storage(OtherT&& t)
- : t(get_init_type(
- std::forward<OtherT>(t),
- typename traits::is_view<T>::type()))
+ template<typename OtherSeq>
+ view_storage(OtherSeq&& seq)
+ : seq(&seq)
         {}
 #endif
 
         view_storage&
         operator=(view_storage const& other_storage)
         {
- t=other_storage.t;
+ seq=other_storage.seq;
             return *this;
         }
 
         template<typename OtherViewStorage>
         view_storage&
- operator=(BOOST_FUSION_R_ELSE_CLREF(OtherViewStorage) other_storage)
+ operator=(OtherViewStorage const& other_storage)
         {
- t=BOOST_FUSION_FORWARD(OtherViewStorage,other_storage).t;
+ seq=other_storage.seq;
             return *this;
         }
 
- typename mpl::if_<
- traits::is_view<T>
- , typename add_lref<type>::type
- , type
- >::type
- get() const
- {
- return get(typename traits::is_view<T>::type());
- }
-
- private:
- typename add_lref<type>::type
- get(mpl::true_ /*is_view*/)const
- {
- return t;
- }
-
+ template<typename>
         type
- get(mpl::false_ /*is_view*/)const
+ get()const
         {
- return static_cast<type>(*t);
+ return static_cast<type>(*seq);
         }
 
- typedef typename remove_reference<T>::type non_ref_t;
- mutable typename mpl::if_<
- traits::is_view<T>
- , typename remove_const<non_ref_t>::type
- , non_ref_t*
- >::type t;
+ typename remove_reference<Seq>::type* seq;
     };
 }}}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
             static type
             call(Seq seq)
             {
- return type(fusion::begin(seq.seq.get()),0);
+ return type(fusion::begin(seq.seq.template get<Seq>()),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -40,7 +40,7 @@
             static type
             call(Seq seq)
             {
- return type(fusion::end(seq.seq.get()),0);
+ return type(fusion::end(seq.seq.template get<Seq>()),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -12,7 +12,6 @@
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
-
 #include <boost/mpl/if.hpp>
 
 namespace boost { namespace fusion { namespace extension
@@ -64,15 +63,15 @@
             static type
             call(Seq seq, mpl::true_)
             {
- return type(fusion::begin(seq.seq2.get()),0);
+ return type(fusion::begin(seq.seq2.template get<Seq>()),0);
             }
 
             static type
             call(Seq seq, mpl::false_)
             {
                 return type(
- fusion::begin(seq.seq1.get())
- , fusion::begin(seq.seq2.get()));
+ fusion::begin(seq.seq1.template get<Seq>()),
+ fusion::begin(seq.seq2.template get<Seq>()));
             }
 
             static type

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
             static type
             call(Seq seq)
             {
- return type(fusion::end(seq.seq2.get()),0);
+ return type(fusion::end(seq.seq2.template get<Seq>()),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -85,16 +85,18 @@
 
 #ifdef BOOST_NO_RVALUE_REFERENCES
         explicit
- joint_view(typename storage1_type::call_param seq1,
- typename storage2_type::call_param seq2)
+ joint_view(
+ typename storage1_type::call_param seq1,
+ typename storage2_type::call_param seq2)
           : seq1(seq1)
           , seq2(seq2)
         {}
 #else
         template<typename OtherSeq1, typename OtherSeq2>
         explicit
- joint_view(BOOST_FUSION_R_ELSE_CLREF(OtherSeq1) seq1,
- BOOST_FUSION_R_ELSE_CLREF(OtherSeq2) seq2)
+ joint_view(
+ BOOST_FUSION_R_ELSE_CLREF(OtherSeq1) seq1,
+ BOOST_FUSION_R_ELSE_CLREF(OtherSeq2) seq2)
           : seq1(BOOST_FUSION_FORWARD(OtherSeq1,seq1))
           , seq2(BOOST_FUSION_FORWARD(OtherSeq2,seq2))
         {}

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -33,7 +33,7 @@
             static type
             call(Seq seq)
             {
- return fusion::at<index>(seq.seq.get());
+ return fusion::at<index>(seq.seq.template get<Seq>());
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -36,7 +36,7 @@
             static type
             call(Seq seq)
             {
- return type(seq.seq.get(),0);
+ return type(seq.seq.template get<Seq>(),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -36,7 +36,7 @@
             static type
             call(Seq seq)
             {
- return type(seq.seq.get(),0);
+ return type(seq.seq.template get<Seq>(),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
 /*==============================================================================
     Copyright (c) 2007 Tobias Schwinger
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -10,6 +10,7 @@
 #define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_BEGIN_IMPL_HPP
 
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/utility/addressof.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {
@@ -38,7 +39,9 @@
             static type
             call(Seq seq)
             {
- return type(seq.seq.get(),fusion::begin(seq.seq.get()));
+ return type(
+ boost::addressof(seq.seq.template get<Seq>()),
+ fusion::begin(seq.seq.template get<Seq>()));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
 /*==============================================================================
     Copyright (c) 2007 Tobias Schwinger
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -13,17 +13,18 @@
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/iterator/advance_c.hpp>
 #include <boost/fusion/support/category_of.hpp>
-
 #include <boost/mpl/modulus.hpp>
 #include <boost/mpl/negate.hpp>
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/or.hpp>
 #include <boost/mpl/not.hpp>
+#include <boost/utility/addressof.hpp>
 
 namespace boost { namespace fusion
 {
     namespace detail
     {
+ //TODO ref
         template<
             typename Seq
           , typename MaxIndex
@@ -65,7 +66,7 @@
             static type
             call(Seq seq)
             {
- return type(seq,fusion::end(seq));
+ return fusion::end(seq);
             }
         };
     }
@@ -103,7 +104,9 @@
                 static type
                 call(Seq seq)
                 {
- return type(seq.seq.get(),gen::call(seq.seq.get()));
+ return type(
+ boost::addressof(seq.seq.template get<Seq>()),
+ gen::call(seq.seq.template get<Seq>()));
                 }
             };
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -52,21 +52,21 @@
             type;
 
             static type
- call_impl(It it, mpl::false_ /*new_iterator*/)
+ call(It it, mpl::false_ /*new_iterator*/)
             {
- return type(*it.seq,fusion::next(it.it));
+ return type(it.seq,fusion::next(it.it));
             }
 
             static type
- call_impl(It it, mpl::true_ /*new_iterator*/)
+ call(It it, mpl::true_ /*new_iterator*/)
             {
- return type(*it.seq,begin(*it.seq));
+ return type(it.seq,begin(*it.seq));
             }
 
             static type
             call(It it)
             {
- return call_impl(it,new_iterator());
+ return call(it,new_iterator());
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -51,22 +51,25 @@
             type;
 
             static type
- call_impl(It it, mpl::false_ /*new_iterator*/)
+ call(It it, mpl::false_ /*new_iterator*/)
             {
- return type(it.seq.get(),fusion::prior(it.it));
+ return type(
+ it.seq.template get<typename it::seq_type>(),
+ fusion::prior(it.it));
             }
 
             static type
- call_impl(It it, mpl::true_ /*new_iterator*/)
+ call(It it, mpl::true_ /*new_iterator*/)
             {
- return type(it.seq.get(),
- fusion::prior(fusion::end(*it.seq)));
+ return type(
+ it.seq.template get<typename it::seq_type>(),
+ fusion::prior(fusion::end(*it.seq)));
             }
 
             static type
             call(It it)
             {
- return call_impl(it,new_iterator());
+ return call(it,new_iterator());
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
 /*==============================================================================
     Copyright (c) 2007 Tobias Schwinger
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -12,7 +12,6 @@
 #include <boost/fusion/support/iterator_base.hpp>
 #include <boost/fusion/support/category_of.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
-
 #include <boost/mpl/int.hpp>
 
 namespace boost { namespace fusion
@@ -26,6 +25,7 @@
         typedef SeqRef seq_type;
         typedef It it_type;
         typedef Index index;
+ typedef typename detail::remove_reference<seq_type>::type* seq_ptr_type;
 
         typedef repetitive_view_iterator_tag fusion_tag;
         typedef typename traits::category_of<It>::type category;
@@ -38,8 +38,8 @@
             BOOST_FUSION_TAG_CHECK(OtherIt,repetitive_view_iterator_tag);
         }
 
- repetitive_view_iterator(SeqRef seq, It const& it)
- : seq(&seq)
+ repetitive_view_iterator(seq_ptr_type seq, It const& it)
+ : seq(seq)
           , it(it)
         {}
 
@@ -54,7 +54,7 @@
             return *this;
         }
 
- typename detail::remove_reference<seq_type>::type* seq;
+ seq_ptr_type seq;
         It it;
     };
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -109,7 +109,6 @@
         detail::view_storage<Seq> seq;
     };
 
-
     namespace result_of
     {
         template<

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -39,7 +39,7 @@
             static type
             call(Seq seq)
             {
- return fusion::at<real_n>(seq.seq.get());
+ return fusion::at<real_n>(seq.seq.template get<Seq>());
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
             static type
             call(Seq seq)
             {
- return type(fusion::end(seq.seq.get()),0);
+ return type(fusion::end(seq.seq.template get<Seq>()),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
             static type
             call(Seq seq)
             {
- return type(fusion::begin(seq.seq.get()),0);
+ return type(fusion::begin(seq.seq.template get<Seq>()),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,5 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2009-2010 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)
@@ -8,6 +9,8 @@
 #ifndef BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_BEGIN_IMPL_HPP
 #define BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_BEGIN_IMPL_HPP
 
+#include <boost/utility/addressof.hpp>
+
 namespace boost { namespace fusion { namespace extension
 {
     template<typename>
@@ -35,7 +38,7 @@
             static type
             call(Seq seq)
             {
- return type(seq.val);
+ return type(boost::addressof(seq.val),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,5 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2009-2010 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)
@@ -8,6 +9,8 @@
 #ifndef BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_END_IMPL_HPP
 #define BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_END_IMPL_HPP
 
+#include <boost/utility/addressof.hpp>
+
 namespace boost { namespace fusion { namespace extension
 {
     template<typename>
@@ -35,7 +38,7 @@
             static type
             call(Seq seq)
             {
- return type(seq.val);
+ return type(boost::addressof(seq.val),0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -33,7 +33,7 @@
             static type
             call(It it)
             {
- return type(*it.val);
+ return type(it.val,0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -32,7 +32,7 @@
             static type
             call(It it)
             {
- return type(*it.val);
+ return type(it.val,0);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 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)
@@ -23,33 +23,38 @@
         typedef Value value_type;
         typedef ValueRef value_ref_type;
         typedef mpl::bool_<End> end;
+ typedef typename
+ detail::remove_reference<value_ref_type>::type*
+ value_ptr_type;
 
         typedef single_view_iterator_tag fusion_tag;
         typedef random_access_traversal_tag category;
 
- template<typename OtherIt>
- single_view_iterator(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
- : val(BOOST_FUSION_FORWARD(OtherIt,it).val)
+ single_view_iterator(value_ptr_type val, int)
+ : val(val)
+ {}
+
+ template<typename OtherValueRef>
+ single_view_iterator(
+ single_view_iterator<Value, OtherValueRef, End> const it)
+ : val(it.val)
         {
- BOOST_FUSION_TAG_CHECK(OtherIt,single_view_iterator_tag);
+ BOOST_FUSION_MPL_ASSERT((
+ is_convertible<OtherValueRef, value_ref_type>));
         }
 
- explicit
- single_view_iterator(value_ref_type val)
- : val(&val)
- {}
-
- template<typename OtherIt>
+ template<typename OtherValueRef>
         single_view_iterator&
- operator=(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
+ operator=(single_view_iterator<Value, OtherValueRef, End> const& it)
         {
- BOOST_FUSION_TAG_CHECK(OtherIt,single_view_iterator_tag);
+ BOOST_FUSION_MPL_ASSERT((
+ is_convertible<OtherValueRef, value_ref_type>));
 
- val=BOOST_FUSION_FORWARD(OtherIt,it).val;
+ val=it.val;
             return *this;
         }
 
- typename detail::remove_reference<value_ref_type>::type* val;
+ value_ptr_type val;
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -38,7 +38,7 @@
             static type
             call(Seq seq)
             {
- return seq.f(fusion::at<N>(seq.seq.get()));
+ return seq.f(fusion::at<N>(seq.seq.template get<Seq>()));
             }
         };
     };
@@ -70,8 +70,8 @@
             static type call(Seq seq)
             {
                 return seq.f(
- fusion::at<N>(seq.seq1.get()),
- fusion::at<N>(seq.seq2.get()));
+ fusion::at<N>(seq.seq1.template get<Seq>()),
+ fusion::at<N>(seq.seq2.template get<Seq>()));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -53,7 +53,7 @@
             call(Seq seq)
             {
                 return type(
- fusion::begin(seq.seq.get()),
+ fusion::begin(seq.seq.template get<Seq>()),
                     static_cast<transform_type>(seq.f));
             }
         };
@@ -97,8 +97,8 @@
             call(Seq seq)
             {
                 return type(
- fusion::begin(seq.seq1.get()),
- fusion::begin(seq.seq2.get()),
+ fusion::begin(seq.seq1.template get<Seq>()),
+ fusion::begin(seq.seq2.template get<Seq>()),
                     static_cast<transform_type>(seq.f));
             }
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -24,13 +24,14 @@
         struct apply
         {
             typedef typename detail::remove_reference<It>::type it;
+ typedef typename it::transform_type transform_type;
+ typedef typename detail::get_func_base<transform_type>::type func_base;
+ typedef typename result_of::deref<typename it::it_type>::type deref_res;
 
             typedef typename
                 boost::result_of<
- typename detail::get_func_base<
- typename it::transform_type
- >::type(
- typename result_of::deref<typename it::it_type>::type)
+ func_base(
+ deref_res)
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -48,7 +48,7 @@
             call(Seq seq)
             {
                 return type(
- fusion::end(seq.seq.get()),
+ fusion::end(seq.seq.template get<Seq>()),
                     static_cast<transform_type>(seq.f));
             }
         };
@@ -92,9 +92,9 @@
             call(Seq seq)
             {
                 return type(
- fusion::end(seq.seq1.get())
- , fusion::end(seq.seq2.get())
- , static_cast<transform_type>(seq.f));
+ fusion::end(seq.seq1.template get<Seq>()),
+ fusion::end(seq.seq2.template get<Seq>()),
+ static_cast<transform_type>(seq.f));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -40,19 +40,19 @@
     }
 
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 < 4)));
         BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 > 0)));
     }
 
     {
- boost::fusion::vector<int, short, double, long> t(1, 2, 3.3, 2);
+ boost::fusion::vector<int, long, double, long> t(1, 2, 3.3, 2);
         BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 < 4)));
         BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 > 0)));
     }
 
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 == 1)));
         BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 < 3)));
     }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -35,12 +35,12 @@
 main()
 {
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST(boost::fusion::any(t, boost::lambda::_1 == 2));
     }
 
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST(!boost::fusion::any(t, boost::lambda::_1 == 3));
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -16,12 +16,12 @@
 main()
 {
     {
- boost::fusion::vector<int, short, double> t(1, 1, 1);
+ boost::fusion::vector<int, long, double> t(1, 1, 1);
         BOOST_TEST(boost::fusion::count(t, 1) == 3);
     }
 
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST(boost::fusion::count(t, 3) == 0);
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -17,12 +17,12 @@
 main()
 {
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 2) == 1);
     }
 
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 3) == 0);
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -34,13 +34,13 @@
 main()
 {
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 > 4)));
         BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 < 0)));
     }
 
     {
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
         BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 == 1)));
         BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 < 3)));
     }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -37,7 +37,7 @@
 
     {
         char const* s = "Ruby";
- typedef vector<int, short, double, long, char const*, float> vector_type;
+ typedef vector<int, long, double, long, char const*, float> vector_type;
         //TODO
         vector_type t1(1, 2, 3.3, 4, s, 5.5f);
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -99,14 +99,14 @@
     {
         // conversion from ns::point to vector
         ns::point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -29,7 +29,7 @@
     class point
     {
     public:
-
+
         point() : x(0), y(0) {}
         point(int x, int y) : x(x), y(y) {}
             
@@ -103,7 +103,7 @@
         // conversion from adapted::point to vector
         ns::point basep(5, 3);
         adapted::point p(basep);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
         v = p;
     }
 
@@ -111,7 +111,7 @@
         // conversion from adated::point to list
         ns::point basep(5, 3);
         adapted::point p(basep);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -100,14 +100,14 @@
     {
         // conversion from ns::point to vector
         ns::point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -89,7 +89,7 @@
         // conversion from adapted::point to vector
         ns::point basep = {5, 3};
         adapted::point p(basep);
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
@@ -97,7 +97,7 @@
         // conversion from adapted::point to list
         ns::point basep = {5, 3};
         adapted::point p(basep);
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -103,14 +103,14 @@
     {
         // conversion from point to vector
         point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from point to list
         point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -103,14 +103,14 @@
     {
         // conversion from point to vector
         point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from point to list
         point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -51,6 +51,24 @@
         int x;
         int y;
     };
+
+ class point_with_private_members
+ {
+ friend class boost::fusion::extension::access;
+
+ public:
+ point_with_private_members() : x(0), y(0) {}
+ point_with_private_members(int x, int y) : x(x), y(y) {}
+
+ private:
+ int get_x() const { return x; }
+ int get_y() const { return y; }
+ void set_x(int x_) { x = x_; }
+ void set_y(int y_) { y = y_; }
+
+ int x;
+ int y;
+ };
 }
 
 BOOST_FUSION_ADAPT_CLASS(
@@ -59,6 +77,12 @@
     (int, int, obj.get_y(), obj.set_y(val))
 )
 
+BOOST_FUSION_ADAPT_CLASS(
+ ns::point_with_private_members,
+ (int, int, obj.get_x(), obj.set_x(val))
+ (int, int, obj.get_y(), obj.set_y(val))
+)
+
 int
 main()
 {
@@ -107,14 +131,14 @@
     {
         // conversion from ns::point to vector
         ns::point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
         l = p;
     }
 
@@ -125,6 +149,26 @@
           , boost::mpl::front<ns::point>::type>));
     }
 
+ {
+ BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point_with_private_members>));
+ ns::point_with_private_members p(123, 456);
+
+ std::cout << at_c<0>(p) << std::endl;
+ std::cout << at_c<1>(p) << std::endl;
+ std::cout << p << std::endl;
+ BOOST_TEST(p == make_vector(123, 456));
+
+ at_c<0>(p) = 6;
+ at_c<1>(p) = 9;
+ BOOST_TEST(p == make_vector(6, 9));
+
+ BOOST_STATIC_ASSERT(result_of::size<ns::point_with_private_members>::value == 2);
+ BOOST_STATIC_ASSERT(!result_of::empty<ns::point_with_private_members>::value);
+
+ BOOST_TEST(front(p) == 6);
+ BOOST_TEST(back(p) == 9);
+ }
+
     return boost::report_errors();
 }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -112,7 +112,7 @@
         ns::point basep(5, 3);
         adapted::point p(basep);
 
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
@@ -121,7 +121,7 @@
         ns::point basep(5, 3);
         adapted::point p(basep);
 
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -35,6 +35,19 @@
         int x;
         int y;
     };
+
+ struct point_with_private_attributes
+ {
+ friend class boost::fusion::extension::access;
+
+ private:
+ int x;
+ int y;
+
+ public:
+ point_with_private_attributes(int x, int y):x(x),y(y)
+ {}
+ };
 }
 
 BOOST_FUSION_ADAPT_STRUCT(
@@ -43,6 +56,12 @@
     (int, y)
 )
 
+BOOST_FUSION_ADAPT_STRUCT(
+ ns::point_with_private_attributes,
+ (int, x)
+ (int, y)
+)
+
 struct s { int m; };
 BOOST_FUSION_ADAPT_STRUCT(s, (int, m))
 
@@ -93,14 +112,14 @@
     {
         // conversion from ns::point to vector
         ns::point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 
@@ -113,6 +132,15 @@
         BOOST_MPL_ASSERT((boost::is_same<result_of::next<b>::type, e>));
     }
 
+ {
+ ns::point_with_private_attributes p(123, 456);
+
+ std::cout << at_c<0>(p) << std::endl;
+ std::cout << at_c<1>(p) << std::endl;
+ std::cout << p << std::endl;
+ BOOST_TEST(p == make_vector(123, 456));
+ }
+
     return boost::report_errors();
 }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -103,7 +103,7 @@
         // conversion from adapted::point to vector
         ns::point basep = {5, 3};
         adapted::point p(basep);
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
@@ -111,7 +111,7 @@
         // conversion from adapted::point to list
         ns::point basep = {5, 3};
         adapted::point p(basep);
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -111,14 +111,14 @@
     {
         // conversion from point to vector
         point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from point to list
         point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -98,14 +98,14 @@
     {
         // conversion from point to vector
         point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from point to list
         point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -36,7 +36,7 @@
     using namespace boost::fusion;
 
     FUSION_SEQUENCE<int, float> v1(4, 3.3f);
- FUSION_SEQUENCE<short, float> v2(5, 3.3f);
+ FUSION_SEQUENCE<long, float> v2(5, 3.3f);
     FUSION_SEQUENCE<long, double> v3(5, 4.4);
     BOOST_TEST(v1 < v2);
     BOOST_TEST(v1 <= v2);

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -86,14 +86,14 @@
     {
         // conversion from ns::point to vector
         ns::point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -90,14 +90,14 @@
     {
         // conversion from point to vector
         point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from point to list
         point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -83,14 +83,14 @@
     {
         // conversion from ns::point to vector
         ns::point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -86,14 +86,14 @@
     {
         // conversion from point to vector
         point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
         v = p;
     }
 
     {
         // conversion from point to list
         point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -48,7 +48,7 @@
 } // namespace Core
 
 
-int main(int, char*[])
+int main()
 {
     //TODO
     //std::tr1::tuple<int, int, int, int> test = Core::Demo();

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,4 +1,4 @@
-/*==============================================================================
+/*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -58,7 +58,7 @@
     }
 
     { // testing const vector
- vector1<short> const vec(999);
+ vector1<short> const vec((short)999);
         BOOST_TEST(at_c<0>(vec) == 999);
 
 #ifdef FUSION_TEST_COMPILE_FAIL
@@ -94,7 +94,7 @@
 
     {
         vector2<int, int> t1(123, 456);
- vector2<double, float> t2(t1);
+ vector2<double, double> t2(t1);
         (void)t2;
     }
 
@@ -135,8 +135,7 @@
 
     {
         typedef vector7<bool, char, short, int, long, float, double> type;
- //TODO
- type vec(false, 'x', 3, 4, 5, 6.0f, 7.0);
+ type vec(false, 'x', (short)3, 4, 5, 6.0f, 7.0);
 
         BOOST_TEST(at_c<0>(vec) == false);
         BOOST_TEST(at_c<1>(vec) == 'x');


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