Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56178 - in branches/release/boost/fusion: . adapted/boost_tuple algorithm algorithm/query/detail algorithm/transformation container/deque container/generation container/vector container/vector/detail functional functional/adapter functional/generation include iterator support view/ext_
From: joel_at_[hidden]
Date: 2009-09-14 03:40:41


Author: djowel
Date: 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
New Revision: 56178
URL: http://svn.boost.org/trac/boost/changeset/56178

Log:
merge from trunk
Added:
   branches/release/boost/fusion/functional/adapter/unfused.hpp
      - copied unchanged from r54384, /trunk/boost/fusion/functional/adapter/unfused.hpp
   branches/release/boost/fusion/functional/generation/make_unfused.hpp (contents, props changed)
Properties modified:
   branches/release/boost/fusion/ (props changed)
Text files modified:
   branches/release/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp | 36 ++++++++++++++++++++++++++++++++++++
   branches/release/boost/fusion/algorithm/query/detail/all.hpp | 2 +-
   branches/release/boost/fusion/algorithm/transformation.hpp | 2 ++
   branches/release/boost/fusion/algorithm/transformation/clear.hpp | 4 ++--
   branches/release/boost/fusion/container/deque/deque_iterator.hpp | 1 +
   branches/release/boost/fusion/container/generation/make_vector.hpp | 20 ++++++++++----------
   branches/release/boost/fusion/container/vector/detail/as_vector.hpp | 6 +++---
   branches/release/boost/fusion/container/vector/detail/vector_n_chooser.hpp | 2 +-
   branches/release/boost/fusion/container/vector/vector.hpp | 4 ++--
   branches/release/boost/fusion/container/vector/vector10.hpp | 3 ++-
   branches/release/boost/fusion/container/vector/vector_iterator.hpp | 9 +++++++++
   branches/release/boost/fusion/functional/adapter.hpp | 4 +---
   branches/release/boost/fusion/functional/adapter/limits.hpp | 17 ++---------------
   branches/release/boost/fusion/functional/generation.hpp | 4 +---
   branches/release/boost/fusion/include/remove.hpp | 6 +++---
   branches/release/boost/fusion/iterator/iterator_facade.hpp | 10 +++++++++-
   branches/release/boost/fusion/support/deduce.hpp | 12 ++++++++++++
   branches/release/boost/fusion/support/tag_of.hpp | 4 ++--
   branches/release/boost/fusion/support/unused.hpp | 27 +++++++++++++++++++++++++--
   branches/release/boost/fusion/view/ext_/segmented_iterator.hpp | 4 ++--
   20 files changed, 126 insertions(+), 51 deletions(-)

Modified: branches/release/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp (original)
+++ branches/release/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -14,6 +14,9 @@
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/or.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/apply.hpp>
 #include <boost/tuple/tuple.hpp>
 
 namespace boost { namespace fusion
@@ -91,6 +94,39 @@
                 return type(iter.cons.get_tail());
             }
         };
+
+ template <typename I1, typename I2>
+ struct distance;
+
+ // detail
+ template <typename I1, typename I2>
+ struct lazy_next_distance
+ {
+ typedef
+ typename mpl::plus<
+ mpl::int_<1>,
+ typename distance<
+ typename next<I1>::type,
+ I2
+ >::type
+ >::type type;
+ };
+
+ template <typename I1, typename I2>
+ struct distance
+ {
+ typedef typename mpl::eval_if<
+ boost::is_same<I1, I2>,
+ mpl::int_<0>,
+ lazy_next_distance<I1, I2>
+ >::type type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
     };
 
     template <typename Null>

Modified: branches/release/boost/fusion/algorithm/query/detail/all.hpp
==============================================================================
--- branches/release/boost/fusion/algorithm/query/detail/all.hpp (original)
+++ branches/release/boost/fusion/algorithm/query/detail/all.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -108,7 +108,7 @@
         template <typename It, typename F>
         static bool call(It const& it, F f)
         {
- return false;
+ return true;
         }
     };
 

Modified: branches/release/boost/fusion/algorithm/transformation.hpp
==============================================================================
--- branches/release/boost/fusion/algorithm/transformation.hpp (original)
+++ branches/release/boost/fusion/algorithm/transformation.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -14,6 +14,7 @@
 #include <boost/fusion/algorithm/transformation/filter_if.hpp>
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 #include <boost/fusion/algorithm/transformation/insert_range.hpp>
+#include <boost/fusion/algorithm/transformation/join.hpp>
 #include <boost/fusion/algorithm/transformation/pop_back.hpp>
 #include <boost/fusion/algorithm/transformation/pop_front.hpp>
 #include <boost/fusion/algorithm/transformation/push_back.hpp>
@@ -24,5 +25,6 @@
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 #include <boost/fusion/algorithm/transformation/transform.hpp>
+#include <boost/fusion/algorithm/transformation/zip.hpp>
 
 #endif

Modified: branches/release/boost/fusion/algorithm/transformation/clear.hpp
==============================================================================
--- branches/release/boost/fusion/algorithm/transformation/clear.hpp (original)
+++ branches/release/boost/fusion/algorithm/transformation/clear.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -16,7 +16,7 @@
         template <typename Sequence>
         struct clear
         {
- typedef vector0 type;
+ typedef vector0<> type;
         };
     }
 
@@ -24,7 +24,7 @@
     inline typename result_of::clear<Sequence const>::type
     clear(Sequence const& seq)
     {
- return vector0();
+ return vector0<>();
     }
 }}
 

Modified: branches/release/boost/fusion/container/deque/deque_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/container/deque/deque_iterator.hpp (original)
+++ branches/release/boost/fusion/container/deque/deque_iterator.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -12,6 +12,7 @@
 #include <boost/fusion/container/deque/detail/keyed_element.hpp>
 #include <boost/mpl/minus.hpp>
 #include <boost/mpl/equal_to.hpp>
+#include <boost/type_traits/is_const.hpp>
 
 namespace boost { namespace fusion {
 

Modified: branches/release/boost/fusion/container/generation/make_vector.hpp
==============================================================================
--- branches/release/boost/fusion/container/generation/make_vector.hpp (original)
+++ branches/release/boost/fusion/container/generation/make_vector.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- 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)
 ==============================================================================*/
 #ifndef BOOST_PP_IS_ITERATING
@@ -19,7 +19,7 @@
 namespace boost { namespace fusion
 {
     struct void_;
-
+
     namespace result_of
     {
         template <
@@ -28,18 +28,18 @@
           , typename Extra = void_
>
         struct make_vector;
-
+
         template <>
         struct make_vector<>
         {
- typedef vector<> type;
+ typedef vector0<> type;
         };
     }
-
- inline vector<>
+
+ inline vector0<>
     make_vector()
     {
- return vector<>();
+ return vector0<>();
     }
 
 #define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
@@ -74,15 +74,15 @@
         struct make_vector<BOOST_PP_ENUM_PARAMS(N, T)>
 #endif
         {
- typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
         };
     }
 
     template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ inline BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
     make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
     {
- return vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ return BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
             BOOST_PP_ENUM_PARAMS(N, _));
     }
 

Modified: branches/release/boost/fusion/container/vector/detail/as_vector.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/as_vector.hpp (original)
+++ branches/release/boost/fusion/container/vector/detail/as_vector.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -31,14 +31,14 @@
         template <typename Iterator>
         struct apply
         {
- typedef vector<> type;
+ typedef vector0<> type;
         };
 
         template <typename Iterator>
         static typename apply<Iterator>::type
         call(Iterator)
         {
- return vector<>();
+ return vector0<>();
         }
     };
 
@@ -82,7 +82,7 @@
         {
             BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
             BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef vector<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> type;
         };
 
         template <typename Iterator>

Modified: branches/release/boost/fusion/container/vector/detail/vector_n_chooser.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/detail/vector_n_chooser.hpp (original)
+++ branches/release/boost/fusion/container/vector/detail/vector_n_chooser.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -48,7 +48,7 @@
     template <>
     struct vector_n_chooser<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, void_ BOOST_PP_INTERCEPT)>
     {
- typedef vector0 type;
+ typedef vector0<> type;
     };
 
 #define BOOST_PP_FILENAME_1 \

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 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -56,7 +56,7 @@
 
         template <typename Sequence>
         vector(Sequence const& rhs)
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500)
             : vec(ctor_helper(rhs, is_base_of<vector, Sequence>())) {}
 #else
             : vec(rhs) {}
@@ -129,7 +129,7 @@
 
     private:
 
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500)
         static vector_n const&
         ctor_helper(vector const& rhs, mpl::true_)
         {

Modified: branches/release/boost/fusion/container/vector/vector10.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/vector10.hpp (original)
+++ branches/release/boost/fusion/container/vector/vector10.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -39,7 +39,8 @@
     struct fusion_sequence_tag;
     struct random_access_traversal_tag;
 
- struct vector0 : sequence_base<vector0>
+ template <typename Dummy = void>
+ struct vector0 : sequence_base<vector0<Dummy> >
     {
         typedef mpl::vector0<> types;
         typedef vector_tag fusion_tag;

Modified: branches/release/boost/fusion/container/vector/vector_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/container/vector/vector_iterator.hpp (original)
+++ branches/release/boost/fusion/container/vector/vector_iterator.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -7,6 +7,11 @@
 #if !defined(FUSION_VECTOR_ITERATOR_05042005_0635)
 #define FUSION_VECTOR_ITERATOR_05042005_0635
 
+#if defined (BOOST_MSVC)
+# pragma warning(push)
+# pragma warning (disable: 4512) // assignment operator could not be generated.
+#endif
+
 #include <boost/fusion/support/iterator_base.hpp>
 #include <boost/fusion/container/vector/detail/deref_impl.hpp>
 #include <boost/fusion/container/vector/detail/value_of_impl.hpp>
@@ -42,5 +47,9 @@
     };
 }}
 
+#if defined (BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
 #endif
 

Modified: branches/release/boost/fusion/functional/adapter.hpp
==============================================================================
--- branches/release/boost/fusion/functional/adapter.hpp (original)
+++ branches/release/boost/fusion/functional/adapter.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -11,8 +11,6 @@
 #include <boost/fusion/functional/adapter/fused.hpp>
 #include <boost/fusion/functional/adapter/fused_procedure.hpp>
 #include <boost/fusion/functional/adapter/fused_function_object.hpp>
-#include <boost/fusion/functional/adapter/unfused_generic.hpp>
-#include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
-#include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
+#include <boost/fusion/functional/adapter/unfused.hpp>
 #include <boost/fusion/functional/adapter/unfused_typed.hpp>
 #endif

Modified: branches/release/boost/fusion/functional/adapter/limits.hpp
==============================================================================
--- branches/release/boost/fusion/functional/adapter/limits.hpp (original)
+++ branches/release/boost/fusion/functional/adapter/limits.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -11,29 +11,16 @@
 
 # include <boost/fusion/container/vector/limits.hpp>
 
-# if !defined(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY)
-# define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 6
+# if !defined(BOOST_FUSION_UNFUSED_MAX_ARITY)
+# define BOOST_FUSION_UNFUSED_MAX_ARITY 6
 # elif BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
 # error "BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
 # endif
-# if !defined(BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY)
-# define BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY 6
-# elif BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
-# error "BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
-# endif
-# if !defined(BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY)
-# define BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY 6
-# elif BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
-# error "BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
-# endif
 # if !defined(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY)
 # define BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY 6
 # elif BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
 # error "BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
 # endif
-# if !defined(BOOST_FUSION_CONSTRUCTOR_MAX_ARITY)
-# define BOOST_FUSION_CONSTRUCTOR_MAX_ARITY 6
-# endif
 
 #endif
 

Modified: branches/release/boost/fusion/functional/generation.hpp
==============================================================================
--- branches/release/boost/fusion/functional/generation.hpp (original)
+++ branches/release/boost/fusion/functional/generation.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -12,8 +12,6 @@
 #include <boost/fusion/functional/generation/make_fused.hpp>
 #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
 #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
-#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
-#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
-#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
+#include <boost/fusion/functional/generation/make_unfused.hpp>
 
 #endif

Added: branches/release/boost/fusion/functional/generation/make_unfused.hpp
==============================================================================
--- (empty file)
+++ branches/release/boost/fusion/functional/generation/make_unfused.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ Use modification and distribution are subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP_INCLUDED
+
+#include <boost/fusion/functional/adapter/unfused.hpp>
+
+#define BOOST_FUSION_CLASS_TPL_NAME unfused
+#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+
+#endif
+

Modified: branches/release/boost/fusion/include/remove.hpp
==============================================================================
--- branches/release/boost/fusion/include/remove.hpp (original)
+++ branches/release/boost/fusion/include/remove.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -4,9 +4,9 @@
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
-#if !defined(FUSION_INCLUDE_REMOVE_IF)
-#define FUSION_INCLUDE_REMOVE_IF
+#if !defined(FUSION_INCLUDE_REMOVE)
+#define FUSION_INCLUDE_REMOVE
 
-#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+#include <boost/fusion/algorithm/transformation/remove.hpp>
 
 #endif

Modified: branches/release/boost/fusion/iterator/iterator_facade.hpp
==============================================================================
--- branches/release/boost/fusion/iterator/iterator_facade.hpp (original)
+++ branches/release/boost/fusion/iterator/iterator_facade.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- 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)
 ==============================================================================*/
 #if !defined(FUSION_ITERATOR_FACADE_09252006_1011)
@@ -9,6 +9,7 @@
 
 #include <boost/fusion/support/iterator_base.hpp>
 #include <boost/fusion/iterator/detail/advance.hpp>
+#include <boost/fusion/iterator/detail/distance.hpp>
 #include <boost/fusion/support/category_of.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/mpl/assert.hpp>
@@ -44,6 +45,13 @@
         {
             BOOST_MPL_ASSERT_NOT((traits::is_random_access<Iterator>));
         };
+
+ // default implementation
+ template <typename First, typename Last>
+ struct distance :
+ distance_detail::linear_distance<First, Last>
+ {
+ };
     };
 }}
 

Modified: branches/release/boost/fusion/support/deduce.hpp
==============================================================================
--- branches/release/boost/fusion/support/deduce.hpp (original)
+++ branches/release/boost/fusion/support/deduce.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -88,6 +88,18 @@
     // Keep references on arrays, even if const
 
     template <typename T, int N>
+ struct deduce<T(&)[N]>
+ {
+ typedef T(&type)[N];
+ };
+
+ template <typename T, int N>
+ struct deduce<volatile T(&)[N]>
+ {
+ typedef volatile T(&type)[N];
+ };
+
+ template <typename T, int N>
     struct deduce<const T(&)[N]>
     {
         typedef const T(&type)[N];

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 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -85,11 +85,11 @@
     {
         template <typename Sequence, typename Active>
         struct tag_of
- : mpl::if_< detail::is_mpl_sequence<Sequence>,
+ : mpl::if_< fusion::detail::is_mpl_sequence<Sequence>,
               mpl::identity<mpl_sequence_tag>,
               mpl::identity<non_fusion_tag> >::type
         {
- BOOST_MPL_ASSERT_NOT((detail::is_specialized<Sequence>));
+ BOOST_MPL_ASSERT_NOT((fusion::detail::is_specialized<Sequence>));
         };
 
         template <typename Sequence>

Modified: branches/release/boost/fusion/support/unused.hpp
==============================================================================
--- branches/release/boost/fusion/support/unused.hpp (original)
+++ branches/release/boost/fusion/support/unused.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- 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)
 ==============================================================================*/
 #if !defined(BOOST_FUSION_SUPPORT_UNUSED_20070305_1038)
@@ -13,7 +13,10 @@
 # pragma warning(disable: 4522) // multiple assignment operators specified warning
 #endif
 
-namespace boost { namespace fusion {
+#define BOOST_FUSION_UNUSED_HAS_IO
+
+namespace boost { namespace fusion
+{
     struct unused_type
     {
         unused_type()
@@ -53,6 +56,26 @@
     };
 
     unused_type const unused = unused_type();
+
+ namespace detail
+ {
+ struct unused_only
+ {
+ unused_only(unused_type const&) {}
+ };
+ }
+
+ template <typename Out>
+ inline Out& operator<<(Out& out, detail::unused_only const&)
+ {
+ return out;
+ }
+
+ template <typename In>
+ inline In& operator>>(In& in, unused_type&)
+ {
+ return in;
+ }
 }}
 
 #if defined(BOOST_MSVC)

Modified: branches/release/boost/fusion/view/ext_/segmented_iterator.hpp
==============================================================================
--- branches/release/boost/fusion/view/ext_/segmented_iterator.hpp (original)
+++ branches/release/boost/fusion/view/ext_/segmented_iterator.hpp 2009-09-14 03:40:39 EDT (Mon, 14 Sep 2009)
@@ -327,8 +327,8 @@
         typedef typename Cons::car_type car_type;
         typedef typename Cons::cdr_type cdr_type;
 
- explicit segmented_iterator(Cons const &cons)
- : cons_(cons)
+ explicit segmented_iterator(Cons const &c)
+ : cons_(c)
         {}
 
         cons_type const &cons() const { return this->cons_; };


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