Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r66413 - in sandbox/SOC/2009/fusion: boost/fusion/adapted/detail/array boost/fusion/adapted/detail/struct boost/fusion/adapted/detail/tuple boost/fusion/algorithm/transformation/detail boost/fusion/container/ext_ boost/fusion/container/list boost/fusion/container/map boost/fusion/container/set boost/fusion/container/vector/detail/pp boost/fusion/container/vector/detail/variadic_templates boost/fusion/sequence boost/fusion/sequence/intrinsic boost/fusion/support boost/fusion/support/internal boost/fusion/view/ext_ boost/fusion/view/filter_view boost/fusion/view/iterator_range boost/fusion/view/joint_view boost/fusion/view/nview boost/fusion/view/repetitive_view boost/fusion/view/reverse_view boost/fusion/view/single_view boost/fusion/view/transform_view boost/fusion/view/transform_view/detail boost/fusion/view/zip_view libs/fusion/example/extension/struct/detail
From: mr.chr.schmidt_at_[hidden]
Date: 2010-11-06 11:53:56


Author: cschmidt
Date: 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
New Revision: 66413
URL: http://svn.boost.org/trac/boost/changeset/66413

Log:
removed fusion::sequence_base
Added:
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/base.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_fwd.hpp (contents, props changed)
Removed:
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp | 2 +
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp | 6 ++--
   sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp | 7 ++++-
   sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp | 7 +----
   sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp | 3 ++
   sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp | 4 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp | 6 ++--
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp | 7 -----
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp | 7 -----
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp | 8 +++---
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp | 2 -
   sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp | 19 ++++++++++++++-
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp | 48 +++++++++++++++++++++++++--------------
   sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp | 7 ++---
   sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp | 14 ++++-------
   sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp | 13 ++++++++++
   sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp | 16 ++++++++++---
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp | 6 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp | 4 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp | 4 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp | 4 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp | 4 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp | 4 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp | 4 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp | 10 +++-----
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp | 5 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp | 5 ++++
   29 files changed, 134 insertions(+), 94 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -20,6 +20,7 @@
 {
     namespace fusion
     {
+ struct fusion_sequence_tag;
         struct array_tag;
         struct array_iterator_tag;
         struct random_access_traversal_tag;

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-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -162,6 +162,8 @@
 { \
     namespace fusion \
     { \
+ struct fusion_sequence_tag; \
+ \
         namespace traits \
         { \
             BOOST_FUSION_ALL_CV_REF_NON_REF_COMBINATIONS( \

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -20,6 +20,7 @@
 {
     namespace fusion
     {
+ struct fusion_sequence_tag;
         struct std_tuple_tag;
         struct std_tuple_iterator_tag;
         struct boost_tuple_tag;

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 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)
@@ -19,6 +19,8 @@
 #include <boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp>
 #include <boost/fusion/algorithm/transformation/detail/filter_key_view/value_at_key_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(detail::filter_key_view_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -27,7 +29,6 @@
     {
         template<typename Seq, typename Pred>
         struct filter_key_view
- : detail::sequence_base<filter_key_view<Seq, Pred> >
         {
             typedef BOOST_FUSION_DETAIL_VIEW_STROAGE(Seq) storage_type;
             typedef typename storage_type::type seq_type;
@@ -36,7 +37,6 @@
             typedef associative_tag category;
             typedef filter_key_view_tag fusion_tag;
             typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
 
 #define BOOST_FUSION_FILTER_KEY_VIEW_CTOR(MODIFIER,_)\
             template<typename OtherSeq>\

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -47,10 +47,14 @@
        template<typename T>
        struct reference<T &, true> : reference<T, false> {};
    }
+}
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(tree_tag, 0)
+
+namespace boost { namespace fusion
+{
    template<typename Data, typename Left = nil, typename Right = nil>
    struct tree
- : detail::sequence_base<tree<Data, Left, Right> >
    {
        typedef Data data_type;
        typedef Left left_type;
@@ -68,7 +72,6 @@
 
        typedef tree_tag fusion_tag;
        typedef forward_traversal_tag category;
- typedef mpl::false_ is_view;
 
        tree()
        {}

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -19,7 +19,6 @@
 #include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
 #include <boost/fusion/support/internal/assign_tags.hpp>
 #include <boost/fusion/support/internal/sequence_assign.hpp>
-
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/or.hpp>
@@ -39,6 +38,8 @@
 #include <boost/fusion/container/list/detail/value_of_impl.hpp>
 #include <boost/fusion/container/list/detail/equal_to_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(cons_tag, 0)
+
 namespace boost { namespace fusion
 {
     struct void_;
@@ -51,7 +52,6 @@
 #endif
 
     struct nil
- : detail::sequence_base<nil>
     {
         typedef void_ car_type;
         typedef void_ cdr_type;
@@ -59,7 +59,6 @@
         typedef mpl::int_<0> size;
         typedef cons_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
         typedef forward_traversal_tag category;
 
         nil()
@@ -107,7 +106,6 @@
 
     template<typename Car, typename Cdr = nil>
     struct cons
- : detail::sequence_base<cons<Car, Cdr> >
     {
         typedef Car car_type;
         typedef Cdr cdr_type;
@@ -115,7 +113,6 @@
         typedef mpl::int_<Cdr::size::value+1> size;
         typedef cons_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
         typedef forward_traversal_tag category;
 
         cons()

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -15,8 +15,11 @@
 #include <boost/fusion/container/list/detail/cons_gen.hpp>
 #include <boost/fusion/container/generation/vector_tie.hpp>
 #include <boost/fusion/container/detail/forward_interface.hpp>
+#include <boost/fusion/support/internal/sequence_base.hpp>
 #include <boost/fusion/support/internal/template.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(list_tag, 0)
+
 namespace boost { namespace fusion
 {
 #ifdef BOOST_MSVC

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -25,6 +25,8 @@
 #include <boost/fusion/container/map/detail/key_of_impl.hpp>
 #include <boost/fusion/container/detail/forward_interface.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(map_tag, 0)
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -37,12 +39,10 @@
 
     VARIADIC_TEMPLATE(FUSION_MAX_MAP_SIZE)
     struct map
- : detail::sequence_base<map<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)> >
     {
         typedef map_category category;
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
 
         typedef
             vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)>

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -24,6 +24,8 @@
 #include <boost/fusion/container/set/detail/key_of_impl.hpp>
 #include <boost/fusion/container/detail/forward_interface.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(set_tag, 0)
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -36,12 +38,10 @@
 
     VARIADIC_TEMPLATE(FUSION_MAX_SET_SIZE)
     struct set
- : detail::sequence_base<set<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)> >
     {
         typedef set_category category;
         typedef set_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
+ typedef fusion_sequence_tag tag;
 
         typedef
             vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)>

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/base.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -0,0 +1,15 @@
+/*==============================================================================
+ Copyright (c) 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_BASE_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_BASE_HPP
+
+#include <boost/fusion/support/internal/sequence_base.hpp>
+
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(vector_tag, 0)
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -9,17 +9,12 @@
 #ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_HPP
 #define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_HPP
 
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp>
-#include <boost/mpl/at.hpp>
-#include <boost/mpl/bool.hpp>
-
+#include <boost/fusion/support/internal/sequence_base.hpp>
 #include <boost/fusion/container/detail/forward_interface.hpp>
 
 namespace boost { namespace fusion
 {
- struct fusion_sequence_tag;
-
 #ifdef BOOST_MSVC
 # pragma warning(push)
     //'class' : multiple copy constructors specified

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -16,7 +16,6 @@
 # include <boost/fusion/iterator/deref.hpp>
 # include <boost/fusion/iterator/next.hpp>
 # include <boost/fusion/iterator/advance_c.hpp>
-# include <boost/fusion/support/internal/sequence_base.hpp>
 # include <boost/fusion/support/internal/sequence_assign.hpp>
 # include <boost/fusion/support/internal/template.hpp>
 # include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
@@ -37,6 +36,7 @@
 # include <boost/type_traits/add_const.hpp>
 # include <boost/utility/enable_if.hpp>
 
+# include <boost/fusion/container/vector/detail/pp/base.hpp>
 # include <boost/fusion/container/vector/detail/at_impl.hpp>
 # include <boost/fusion/container/vector/detail/value_at_impl.hpp>
 # include <boost/fusion/container/vector/detail/begin_impl.hpp>
@@ -72,7 +72,6 @@
 
     template<>
     struct vector0<void_>
- : detail::sequence_base<vector0<void_> >
 # else
 # ifndef BOOST_FUSION_PREFER_MPL
     template<typename Vector>
@@ -87,9 +86,6 @@
 
     VARIADIC_TEMPLATE(BOOST_FUSION_N)
     struct BOOST_PP_CAT(vector, BOOST_FUSION_N)
- : detail::sequence_base<BOOST_PP_CAT(vector, BOOST_FUSION_N)<
- EXPAND_TEMPLATE_ARGUMENTS(BOOST_FUSION_N)>
- >
 # endif
     {
 # ifdef BOOST_FUSION_PREFER_MPL
@@ -101,7 +97,6 @@
 # endif
         typedef vector_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
         typedef random_access_traversal_tag category;
         typedef mpl::int_<BOOST_FUSION_N> size;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -40,6 +40,8 @@
 
 #include <utility>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(vector_tag, 0)
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -416,14 +418,13 @@
 
     template<typename... Elements>
     struct vector
- : detail::sequence_base<vector<Elements...> >
 #ifdef BOOST_FUSION_TAGGED_VECTOR
- , detail::vector_impl<
+ : detail::vector_impl<
             typename detail::make_package<sizeof...(Elements)>::type
           , Elements...
>
 #else
- , detail::vector_impl<0,Elements...>
+ : detail::vector_impl<0,Elements...>
 #endif
     {
 #ifdef BOOST_FUSION_TAGGED_VECTOR
@@ -445,7 +446,6 @@
 
         typedef vector_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
         typedef random_access_traversal_tag category;
         typedef mpl::int_<sizeof...(Elements)> size;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -16,8 +16,6 @@
 
 namespace boost { namespace fusion
 {
- struct fusion_sequence_tag;
-
     namespace result_of
     {
         template<typename Seq>

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -9,7 +9,6 @@
 #define BOOST_FUSION_SEQUENCE_SEQUENCE_FACADE_HPP
 
 #include <boost/fusion/support/internal/base.hpp>
-#include <boost/fusion/support/internal/sequence_base.hpp>
 #include <boost/fusion/support/internal/facade_generation.hpp>
 #include <boost/mpl/bool.hpp>
 
@@ -30,13 +29,29 @@
 
 namespace boost { namespace fusion
 {
+ struct fusion_sequence_tag;
+
+ namespace extension
+ {
+ template<typename>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<sequence_facade_tag>
+ {
+ template<typename>
+ struct apply
+ : mpl::true_
+ {};
+ };
+ }
+
     template<
         typename Derived
       , typename Category
       , typename IsView = mpl::false_
>
     struct sequence_facade
- : detail::sequence_base<Derived>
     {
         typedef fusion_sequence_tag tag;
         typedef sequence_facade_tag fusion_tag;

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -8,24 +8,38 @@
 #ifndef BOOST_FUSION_SUPPORT_INTERNAL_SEQUENCE_BASE_HPP
 #define BOOST_FUSION_SUPPORT_INTERNAL_SEQUENCE_BASE_HPP
 
-namespace boost { namespace fusion
-{
- struct fusion_sequence_tag;
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/mpl/bool.hpp>
+
+#define BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(TAG, IS_VIEW) \
+namespace boost { namespace fusion { namespace extension \
+{ \
+ template<> \
+ struct is_sequence_impl<TAG> \
+ { \
+ template<typename> \
+ struct apply \
+ : mpl::true_ \
+ {}; \
+ }; \
+ \
+ template<> \
+ struct is_view_impl<TAG> \
+ { \
+ template<typename> \
+ struct apply \
+ : BOOST_PP_IIF(IS_VIEW, mpl::true_, mpl::false_) \
+ {}; \
+ }; \
+}}}
 
- namespace detail
- {
- struct from_sequence_convertible_type
- {};
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct is_sequence_impl;
 
- template<typename>
- struct sequence_base
- {
- operator from_sequence_convertible_type()const
- {
- return from_sequence_convertible_type();
- }
- };
- }
-}}
+ template<typename>
+ struct is_view_impl;
+}}}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -11,8 +11,7 @@
 
 #include <boost/fusion/support/internal/base.hpp>
 #include <boost/fusion/support/tag_of.hpp>
-#include <boost/fusion/support/internal/sequence_base.hpp>
-#include <boost/type_traits/is_convertible.hpp>
+#include <boost/mpl/bool.hpp>
 
 namespace boost { namespace fusion
 {
@@ -21,9 +20,9 @@
         template<typename>
         struct is_sequence_impl
         {
- template<typename Seq>
+ template<typename>
             struct apply
- : is_convertible<Seq, detail::from_sequence_convertible_type>
+ : mpl::false_
             {};
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -1,6 +1,7 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
+ 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,16 +14,11 @@
 
 namespace boost
 {
- namespace fusion
+ namespace fusion { namespace traits
     {
- struct fusion_sequence_tag;
-
- namespace traits
- {
- template<typename Seq, typename Enable=void>
- struct tag_of;
- }
- }
+ template<typename Seq, typename Enable=void>
+ struct tag_of;
+ }}
 
     namespace mpl
     {

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -43,7 +43,6 @@
 
         template<typename Sequence, typename Iterator, bool IsSegmented>
         struct segmented_range
- : detail::sequence_base<segmented_range<Sequence, Iterator, IsSegmented> >
         {
             typedef mpl::bool_<IsSegmented> is_segmented;
             // If this is a range of segments, skip over the empty ones
@@ -89,6 +88,18 @@
 
     namespace extension
     {
+ template<typename>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<segmented_range_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ : mpl::true_
+ {};
+ };
+
         template<>
         struct is_segmented_impl<segmented_range_tag>
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -69,7 +69,6 @@
         // right or the left of a segmented iterator.
         template<typename Tag, typename Cons1, typename Cons2 = void_>
         struct segmented_view
- : detail::sequence_base<segmented_view<Tag, Cons1, Cons2> >
         {
             typedef segmented_view_tag<Tag> fusion_tag;
             typedef fusion_sequence_tag tag;
@@ -88,7 +87,6 @@
         // two segmented iterators
         template<typename Cons1, typename Cons2>
         struct segmented_view<center_view, Cons1, Cons2>
- : detail::sequence_base<segmented_view<center_view, Cons1, Cons2> >
         {
             typedef segmented_view_tag<center_view> fusion_tag;
             typedef fusion_sequence_tag tag;
@@ -183,6 +181,18 @@
 
     namespace extension
     {
+ template<typename>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<detail::segmented_view_tag<Tag> >
+ {
+ template<typename>
+ struct apply
+ : mpl::true_
+ {};
+ };
+
         ////////////////////////////////////////////////////////////////////////////
         template<typename Tag>
         struct is_segmented_impl<detail::segmented_view_tag<Tag> >
@@ -364,7 +374,6 @@
 
     template<typename First, typename Last>
     struct iterator_range<segmented_iterator<First>, segmented_iterator<Last> >
- : detail::sequence_base<iterator_range<segmented_iterator<First>, segmented_iterator<Last> > >
     {
         typedef segmented_iterator<First> begin_type;
         typedef segmented_iterator<Last> end_type;
@@ -374,7 +383,6 @@
         typedef fusion_sequence_tag tag;
         typedef typename traits::category_of<begin_type>::type category;
         typedef typename result_of::distance<begin_type, end_type>::type size;
- typedef mpl::true_ is_view;
 
         iterator_range(segmented_iterator<First> const& first_, segmented_iterator<Last> const& last_)
           : first(first_)

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -33,6 +33,8 @@
 #include <boost/fusion/view/filter_view/detail/key_of_impl.hpp>
 #include <boost/fusion/view/filter_view/detail/value_of_data_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(filter_view_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -43,7 +45,6 @@
       , typename PredIsMetafunction=mpl::true_
>
     struct filter_view
- : detail::sequence_base<filter_view<Seq, Pred, PredIsMetafunction> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>))
@@ -61,8 +62,7 @@
>::type
         category;
         typedef filter_view_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
+ typedef fusion_sequence_tag tag;
 
 #define BOOST_FUSION_FILTER_VIEW_CTOR(MODIFIER,_)\
         template<typename OtherSeq>\

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -24,6 +24,8 @@
 #include <boost/fusion/view/iterator_range/detail/at_impl.hpp>
 #include <boost/fusion/view/iterator_range/detail/value_at_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(iterator_range_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct iterator_range_tag;
@@ -31,7 +33,6 @@
 
     template<typename Begin, typename End>
     struct iterator_range
- : detail::sequence_base<iterator_range<Begin, End> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Begin>))
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Begin>))
@@ -45,7 +46,6 @@
         typedef typename result_of::distance<begin_type, end_type>::type size;
         typedef iterator_range_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
 
         template<typename OtherRange>
         iterator_range(BOOST_FUSION_R_ELSE_CLREF(OtherRange) range)

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-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -34,6 +34,8 @@
 #include <boost/fusion/view/joint_view/detail/key_of_impl.hpp>
 #include <boost/fusion/view/joint_view/detail/value_of_data_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(joint_view_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct forward_traversal_tag;
@@ -41,7 +43,6 @@
 
     template<typename Seq1, typename Seq2>
     struct joint_view
- : detail::sequence_base<joint_view<Seq1, Seq2> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>))
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>))
@@ -65,7 +66,6 @@
         category;
         typedef joint_view_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
         typedef typename
             mpl::plus<
                 result_of::size<seq1_type>

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -46,6 +46,8 @@
 #include <boost/fusion/view/nview/detail/value_at_impl.hpp>
 #include <boost/fusion/view/nview/detail/value_of_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(nview_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct nview_tag;
@@ -54,7 +56,6 @@
 
     template<typename Seq, typename Indices>
     struct nview
- : detail::sequence_base<nview<Seq, Indices> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
         BOOST_FUSION_MPL_ASSERT((traits::is_random_access<Seq>))
@@ -66,7 +67,6 @@
         typedef nview_tag fusion_tag;
         typedef fusion_sequence_tag tag;
         typedef random_access_traversal_tag category;
- typedef mpl::true_ is_view;
         typedef typename mpl::size<Indices>::type size;
 
 #define BOOST_FUSION_NVIEW_CTOR(MODIFIER,_)\

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-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -36,6 +36,8 @@
 #include <boost/fusion/view/repetitive_view/detail/key_of_impl.hpp>
 #include <boost/fusion/view/repetitive_view/detail/value_of_data_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(repetitive_view_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -45,7 +47,6 @@
       , typename Size=mpl::int_<integer_traits<int>::const_max-1>
>
     struct repetitive_view
- : detail::sequence_base<repetitive_view<Seq> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>))
@@ -62,7 +63,6 @@
         typedef Size size;
         typedef repetitive_view_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
 
 #define BOOST_FUSION_REPETITIVE_VIEW_CTOR(MODIFIER,_)\
         template<typename OtherSeq>\

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -36,13 +36,14 @@
 #include <boost/fusion/view/reverse_view/detail/value_at_impl.hpp>
 #include <boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(reverse_view_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
 
     template<typename Seq>
     struct reverse_view
- : detail::sequence_base<reverse_view<Seq> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
         BOOST_FUSION_MPL_ASSERT((traits::is_bidirectional<Seq>))
@@ -54,7 +55,6 @@
         typedef typename result_of::size<seq_type>::type size;
         typedef reverse_view_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
 
 #define BOOST_FUSION_REVERSE_VIEW_CTOR(MODIFIER,_)\
         template<typename OtherSeq>\

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -40,6 +40,8 @@
 #include <boost/fusion/view/single_view/detail/prior_impl.hpp>
 #include <boost/fusion/view/single_view/detail/value_of_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(single_view_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct single_view_tag;
@@ -53,14 +55,12 @@
 
     template<typename T>
     struct single_view
- : detail::sequence_base<single_view<T> >
     {
         typedef T value_type;
 
         typedef single_view_tag fusion_tag;
         typedef fusion_sequence_tag tag;
         typedef random_access_traversal_tag category;
- typedef mpl::true_ is_view;
         typedef mpl::int_<1> size;
 
 #define BOOST_FUSION_SINGLE_VIEW_CTOR(MODIFIER,_)\

Added: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_fwd.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -0,0 +1,28 @@
+/*==============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_TRANSFORM_VIEW_FWD_HPP
+#define BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_TRANSFORM_VIEW_FWD_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct transform_view_tag;
+ struct transform_view2_tag;
+
+ template<
+ typename Seq1
+ , typename Seq2
+ , typename F=mpl::false_
+ , typename IsAssociative=mpl::false_
+ >
+ struct transform_view;
+}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -33,7 +33,7 @@
 #endif
 #include <boost/call_traits.hpp>
 
-#include <boost/fusion/view/transform_view/transform_view_fwd.hpp>
+#include <boost/fusion/view/transform_view/detail/transform_view_fwd.hpp>
 #include <boost/fusion/view/transform_view/detail/at_impl.hpp>
 #include <boost/fusion/view/transform_view/detail/value_at_impl.hpp>
 #include <boost/fusion/view/transform_view/detail/transform_view_iterator.hpp>
@@ -50,6 +50,9 @@
 #include <boost/fusion/view/transform_view/detail/distance_impl.hpp>
 #include <boost/fusion/view/transform_view/detail/equal_to_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(transform_view_tag, 1)
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(transform_view2_tag, 1)
+
 namespace boost { namespace fusion
 {
     struct void_;
@@ -62,7 +65,6 @@
     // Binary Version
     template<typename Seq1, typename Seq2, typename F, typename IsAssociative>
     struct transform_view
- : detail::sequence_base<transform_view<Seq1, Seq2, F,IsAssociative> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>))
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>))
@@ -88,8 +90,6 @@
         strictest_traversal;
 
         typedef transform_view2_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
         typedef typename
             mpl::eval_if_c<
                 is_associative::value
@@ -147,7 +147,6 @@
     // Unary Version implementation
     template<typename Seq, typename F, typename IsAssociative>
     struct unary_transform_view
- : detail::sequence_base<unary_transform_view<Seq, F, void_> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>))
@@ -178,7 +177,6 @@
         typedef typename result_of::size<seq_type>::type size;
         typedef transform_view_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
 
         template<typename OtherView>
         unary_transform_view(BOOST_FUSION_R_ELSE_CLREF(OtherView) view)

Deleted: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
+++ (empty file)
@@ -1,28 +0,0 @@
-/*==============================================================================
- 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)
-==============================================================================*/
-
-#ifndef BOOST_FUSION_VIEW_TRANSFORM_VIEW_TRANSFORM_VIEW_FWD_HPP
-#define BOOST_FUSION_VIEW_TRANSFORM_VIEW_TRANSFORM_VIEW_FWD_HPP
-
-#include <boost/mpl/bool.hpp>
-
-namespace boost { namespace fusion
-{
- struct transform_view_tag;
- struct transform_view2_tag;
-
- template<
- typename Seq1
- , typename Seq2
- , typename F=mpl::false_
- , typename IsAssociative=mpl::false_
- >
- struct transform_view;
-}}
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -45,6 +45,8 @@
 #include <boost/fusion/view/zip_view/detail/value_of_impl.hpp>
 #include <boost/fusion/view/zip_view/detail/equal_to_impl.hpp>
 
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(zip_view_tag, 1)
+
 namespace boost { namespace fusion
 {
     namespace detail
@@ -127,12 +129,10 @@
         };
     }
 
- struct zip_view_tag;
     struct fusion_sequence_tag;
 
     template<typename Seqs>
     struct zip_view
- : detail::sequence_base<zip_view<Seqs> >
     {
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seqs>))
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seqs>))
@@ -152,7 +152,6 @@
         category;
         typedef zip_view_tag fusion_tag;
         typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
         typedef typename
             mpl::eval_if_c<
                 result_of::size<Seqs>::value ? true : false

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -30,6 +30,11 @@
 
 namespace boost
 {
+ namespace fusion
+ {
+ struct fusion_sequence_tag;
+ }
+
     namespace fusion { namespace traits
     {
         template<>


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