$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r57159 - in trunk: boost/proto boost/proto/context boost/proto/detail boost/proto/transform libs/proto/test
From: eric_at_[hidden]
Date: 2009-10-26 11:15:10
Author: eric_niebler
Date: 2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
New Revision: 57159
URL: http://svn.boost.org/trac/boost/changeset/57159
Log:
accomodate recent change to fusion::fold, remove old support for Doxygen and pre-1.35 Fusion, fixes #3553
Removed:
   trunk/boost/proto/detail/prefix.hpp
   trunk/boost/proto/detail/suffix.hpp
Text files modified: 
   trunk/boost/proto/args.hpp                   |    61 ++---                                   
   trunk/boost/proto/context.hpp                |     2                                         
   trunk/boost/proto/context/callable.hpp       |     6                                         
   trunk/boost/proto/context/default.hpp        |     6                                         
   trunk/boost/proto/context/null.hpp           |     4                                         
   trunk/boost/proto/core.hpp                   |     2                                         
   trunk/boost/proto/debug.hpp                  |     2                                         
   trunk/boost/proto/deep_copy.hpp              |     2                                         
   trunk/boost/proto/detail/as_lvalue.hpp       |     2                                         
   trunk/boost/proto/detail/decltype.hpp        |    21 -                                       
   trunk/boost/proto/detail/deprecated.hpp      |     2                                         
   trunk/boost/proto/domain.hpp                 |   153 +++++++-------                          
   trunk/boost/proto/eval.hpp                   |     2                                         
   trunk/boost/proto/expr.hpp                   |    13                                         
   trunk/boost/proto/extends.hpp                |   344 ++++++++++++++++-----------------       
   trunk/boost/proto/fusion.hpp                 |    66 -----                                   
   trunk/boost/proto/generate.hpp               |   405 +++++++++++++++++++-------------------- 
   trunk/boost/proto/literal.hpp                |     4                                         
   trunk/boost/proto/make_expr.hpp              |    62 ++---                                   
   trunk/boost/proto/matches.hpp                |    12                                         
   trunk/boost/proto/operators.hpp              |   112 +++++-----                              
   trunk/boost/proto/proto.hpp                  |     2                                         
   trunk/boost/proto/proto_fwd.hpp              |    83 +-------                                
   trunk/boost/proto/proto_typeof.hpp           |     2                                         
   trunk/boost/proto/repeat.hpp                 |     2                                         
   trunk/boost/proto/tags.hpp                   |     2                                         
   trunk/boost/proto/traits.hpp                 |    26 +-                                      
   trunk/boost/proto/transform.hpp              |     2                                         
   trunk/boost/proto/transform/arg.hpp          |     2                                         
   trunk/boost/proto/transform/call.hpp         |     2                                         
   trunk/boost/proto/transform/default.hpp      |     4                                         
   trunk/boost/proto/transform/fold.hpp         |    60 -----                                   
   trunk/boost/proto/transform/fold_tree.hpp    |     2                                         
   trunk/boost/proto/transform/impl.hpp         |     2                                         
   trunk/boost/proto/transform/lazy.hpp         |     2                                         
   trunk/boost/proto/transform/make.hpp         |     2                                         
   trunk/boost/proto/transform/pass_through.hpp |     2                                         
   trunk/boost/proto/transform/when.hpp         |     4                                         
   trunk/libs/proto/test/examples.cpp           |    11                                         
   trunk/libs/proto/test/lambda.cpp             |    13 -                                       
   trunk/libs/proto/test/make_expr.cpp          |     5                                         
   trunk/libs/proto/test/proto_fusion.cpp       |     5                                         
   trunk/libs/proto/test/proto_fusion_s.cpp     |     5                                         
   trunk/libs/proto/test/toy_spirit2.cpp        |    26 --                                      
   44 files changed, 626 insertions(+), 923 deletions(-)
Modified: trunk/boost/proto/args.hpp
==============================================================================
--- trunk/boost/proto/args.hpp	(original)
+++ trunk/boost/proto/args.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -11,7 +11,6 @@
     #ifndef BOOST_PROTO_ARGS_HPP_EAN_04_01_2005
     #define BOOST_PROTO_ARGS_HPP_EAN_04_01_2005
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/config.hpp>
     #include <boost/detail/workaround.hpp>
     #include <boost/preprocessor/cat.hpp>
@@ -24,7 +23,6 @@
     #include <boost/mpl/if.hpp>
     #include <boost/mpl/void.hpp>
     #include <boost/proto/proto_fwd.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
@@ -123,46 +121,45 @@
         }
 
         ////////////////////////////////////////////////////////////////////////////////////////////
-        BOOST_PROTO_BEGIN_ADL_NAMESPACE(argsns_)
-
-        #define BOOST_PROTO_DEFINE_CHILD_N(Z, N, DATA)                                              \
-            typedef BOOST_PP_CAT(Arg, N) BOOST_PP_CAT(child, N);                                    \
-            /**< INTERNAL ONLY */
-
-        #define BOOST_PROTO_DEFINE_VOID_N(z, n, data)                                               \
-            typedef mpl::void_ BOOST_PP_CAT(child, n);                                              \
-            /**< INTERNAL ONLY */
-
-        /// \brief A type sequence, for use as the 2nd parameter to the \c expr\<\> class template.
-        ///
-        /// A type sequence, for use as the 2nd parameter to the \c expr\<\> class template.
-        /// The types in the sequence correspond to the children of a node in an expression tree.
-        template< typename Arg0 >
-        struct term
+        namespace argsns_
         {
-            BOOST_STATIC_CONSTANT(long, arity = 0);
-            typedef Arg0 child0;
 
-            #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
-            BOOST_PP_REPEAT_FROM_TO(1, BOOST_PROTO_MAX_ARITY, BOOST_PROTO_DEFINE_VOID_N, ~)
-            #endif
+            #define BOOST_PROTO_DEFINE_CHILD_N(Z, N, DATA)                                              \
+                typedef BOOST_PP_CAT(Arg, N) BOOST_PP_CAT(child, N);                                    \
+                /**< INTERNAL ONLY */
+
+            #define BOOST_PROTO_DEFINE_VOID_N(z, n, data)                                               \
+                typedef mpl::void_ BOOST_PP_CAT(child, n);                                              \
+                /**< INTERNAL ONLY */
 
-            /// INTERNAL ONLY
+            /// \brief A type sequence, for use as the 2nd parameter to the \c expr\<\> class template.
             ///
-            typedef Arg0 back_;
-        };
+            /// A type sequence, for use as the 2nd parameter to the \c expr\<\> class template.
+            /// The types in the sequence correspond to the children of a node in an expression tree.
+            template< typename Arg0 >
+            struct term
+            {
+                BOOST_STATIC_CONSTANT(long, arity = 0);
+                typedef Arg0 child0;
+
+                #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+                BOOST_PP_REPEAT_FROM_TO(1, BOOST_PROTO_MAX_ARITY, BOOST_PROTO_DEFINE_VOID_N, ~)
+                #endif
+
+                /// INTERNAL ONLY
+                ///
+                typedef Arg0 back_;
+            };
 
-        #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, BOOST_PROTO_MAX_ARITY, <boost/proto/args.hpp>))
-        #include BOOST_PP_ITERATE()
+            #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, BOOST_PROTO_MAX_ARITY, <boost/proto/args.hpp>))
+            #include BOOST_PP_ITERATE()
 
-        #undef BOOST_PROTO_DEFINE_CHILD_N
+            #undef BOOST_PROTO_DEFINE_CHILD_N
 
-        BOOST_PROTO_END_ADL_NAMESPACE(argsns_)
+        }
         ////////////////////////////////////////////////////////////////////////////////////////////
 
-        #ifndef BOOST_PROTO_BUILDING_DOCS
         using namespace argsns_;
-        #endif
     }}
     #endif
 
Modified: trunk/boost/proto/context.hpp
==============================================================================
--- trunk/boost/proto/context.hpp	(original)
+++ trunk/boost/proto/context.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,10 +9,8 @@
 #ifndef BOOST_PROTO_CONTEXT_HPP_EAN_06_23_2007
 #define BOOST_PROTO_CONTEXT_HPP_EAN_06_23_2007
 
-#include <boost/proto/detail/prefix.hpp> // must be first include
 #include <boost/proto/context/null.hpp>
 #include <boost/proto/context/default.hpp>
 #include <boost/proto/context/callable.hpp>
-#include <boost/proto/detail/suffix.hpp> // must be last include
 
 #endif
Modified: trunk/boost/proto/context/callable.hpp
==============================================================================
--- trunk/boost/proto/context/callable.hpp	(original)
+++ trunk/boost/proto/context/callable.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -14,7 +14,6 @@
     #ifndef BOOST_PROTO_CONTEXT_CALLABLE_HPP_EAN_06_23_2007
     #define BOOST_PROTO_CONTEXT_CALLABLE_HPP_EAN_06_23_2007
 
-    #include <boost/proto/detail/prefix.hpp> // must be first include
     #include <boost/config.hpp>
     #include <boost/detail/workaround.hpp>
     #include <boost/preprocessor/cat.hpp>
@@ -32,7 +31,6 @@
     #include <boost/type_traits/remove_cv.hpp>
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/traits.hpp> // for child_c
-    #include <boost/proto/detail/suffix.hpp> // must be last include
 
     namespace boost { namespace proto
     {
@@ -86,7 +84,7 @@
             template<
                 typename Expr
               , typename Context
-              , long Arity          BOOST_PROTO_WHEN_BUILDING_DOCS(= Expr::proto_arity_c)
+              , long Arity          // = Expr::proto_arity_c
             >
             struct callable_eval
             {};
@@ -191,7 +189,7 @@
             /// \endcode
             template<
                 typename Context
-              , typename DefaultCtx BOOST_PROTO_WHEN_BUILDING_DOCS(= default_context)
+              , typename DefaultCtx // = default_context
             >
             struct callable_context
             {
Modified: trunk/boost/proto/context/default.hpp
==============================================================================
--- trunk/boost/proto/context/default.hpp	(original)
+++ trunk/boost/proto/context/default.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -12,7 +12,6 @@
     #ifndef BOOST_PROTO_CONTEXT_DEFAULT_HPP_EAN_01_08_2007
     #define BOOST_PROTO_CONTEXT_DEFAULT_HPP_EAN_01_08_2007
 
-    #include <boost/proto/detail/prefix.hpp> // must be first include
     #include <boost/config.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
     #include <boost/preprocessor/repetition/enum_shifted.hpp>
@@ -28,7 +27,6 @@
     #include <boost/proto/eval.hpp>
     #include <boost/proto/traits.hpp> // for proto::child_c()
     #include <boost/proto/detail/decltype.hpp>
-    #include <boost/proto/detail/suffix.hpp> // must be last include
 
     namespace boost { namespace proto
     {
@@ -41,8 +39,8 @@
             template<
                 typename Expr
               , typename Context
-              , typename Tag        BOOST_PROTO_WHEN_BUILDING_DOCS(= typename Expr::proto_tag)
-              , long Arity          BOOST_PROTO_WHEN_BUILDING_DOCS(= Expr::proto_arity_c)
+              , typename Tag        // = typename Expr::proto_tag
+              , long Arity          // = Expr::proto_arity_c
             >
             struct default_eval
             {};
Modified: trunk/boost/proto/context/null.hpp
==============================================================================
--- trunk/boost/proto/context/null.hpp	(original)
+++ trunk/boost/proto/context/null.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -12,13 +12,11 @@
     #ifndef BOOST_PROTO_CONTEXT_NULL_HPP_EAN_06_24_2007
     #define BOOST_PROTO_CONTEXT_NULL_HPP_EAN_06_24_2007
 
-    #include <boost/proto/detail/prefix.hpp> // must be first include
     #include <boost/preprocessor/iteration/iterate.hpp>
     #include <boost/preprocessor/repetition/repeat.hpp>
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/eval.hpp>
     #include <boost/proto/traits.hpp>
-    #include <boost/proto/detail/suffix.hpp> // must be last include
 
     namespace boost { namespace proto { namespace context
     {
@@ -26,7 +24,7 @@
         template<
             typename Expr
           , typename Context
-          , long Arity          BOOST_PROTO_WHEN_BUILDING_DOCS(= Expr::proto_arity_c)
+          , long Arity          // = Expr::proto_arity_c
         >
         struct null_eval
         {};
Modified: trunk/boost/proto/core.hpp
==============================================================================
--- trunk/boost/proto/core.hpp	(original)
+++ trunk/boost/proto/core.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
 #ifndef BOOST_PROTO_CORE_HPP_EAN_04_01_2005
 #define BOOST_PROTO_CORE_HPP_EAN_04_01_2005
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/args.hpp>
 #include <boost/proto/tags.hpp>
@@ -27,6 +26,5 @@
 #include <boost/proto/operators.hpp>
 #include <boost/proto/deep_copy.hpp>
 #include <boost/proto/make_expr.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 #endif
Modified: trunk/boost/proto/debug.hpp
==============================================================================
--- trunk/boost/proto/debug.hpp	(original)
+++ trunk/boost/proto/debug.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,7 +9,6 @@
 #ifndef BOOST_PROTO_DEBUG_HPP_EAN_12_31_2006
 #define BOOST_PROTO_DEBUG_HPP_EAN_12_31_2006
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/preprocessor/iteration/local.hpp>
 #include <boost/preprocessor/repetition/repeat.hpp>
 #include <iomanip>
@@ -19,7 +18,6 @@
 #include <boost/proto/expr.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/detail/dont_care.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
Modified: trunk/boost/proto/deep_copy.hpp
==============================================================================
--- trunk/boost/proto/deep_copy.hpp	(original)
+++ trunk/boost/proto/deep_copy.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
     #ifndef BOOST_PROTO_DEEP_COPY_HPP_EAN_11_21_2006
     #define BOOST_PROTO_DEEP_COPY_HPP_EAN_11_21_2006
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/preprocessor/cat.hpp>
     #include <boost/preprocessor/repetition/enum.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
@@ -19,7 +18,6 @@
     #include <boost/type_traits/remove_reference.hpp>
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/expr.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
Modified: trunk/boost/proto/detail/as_lvalue.hpp
==============================================================================
--- trunk/boost/proto/detail/as_lvalue.hpp	(original)
+++ trunk/boost/proto/detail/as_lvalue.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,9 +9,7 @@
 #ifndef BOOST_PROTO_TRANSFORM_AS_LVALUE_HPP_EAN_12_27_2007
 #define BOOST_PROTO_TRANSFORM_AS_LVALUE_HPP_EAN_12_27_2007
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/proto/proto_fwd.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
Modified: trunk/boost/proto/detail/decltype.hpp
==============================================================================
--- trunk/boost/proto/detail/decltype.hpp	(original)
+++ trunk/boost/proto/detail/decltype.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,7 +9,6 @@
 #ifndef BOOST_PROTO_DETAIL_DECLTYPE_HPP_EAN_04_04_2008
 #define BOOST_PROTO_DETAIL_DECLTYPE_HPP_EAN_04_04_2008
 
-#include <boost/proto/detail/prefix.hpp> // must be first include
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
 #include <boost/get_pointer.hpp>
@@ -35,15 +34,11 @@
 #include <boost/utility/result_of.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/proto/repeat.hpp>
-#include <boost/proto/detail/suffix.hpp> // must be last include
 
-// If we're generating doxygen documentation, hide all the nasty
-// Boost.Typeof gunk.
-#ifndef BOOST_PROTO_BUILDING_DOCS
-# ifdef BOOST_HAS_DECLTYPE
-#  define BOOST_PROTO_DECLTYPE_(EXPR, TYPE) typedef decltype(EXPR) TYPE;
-# else
-#  define BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL_(NESTED, EXPR)                                    \
+#ifdef BOOST_HAS_DECLTYPE
+# define BOOST_PROTO_DECLTYPE_(EXPR, TYPE) typedef decltype(EXPR) TYPE;
+#else
+# define BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL_(NESTED, EXPR)                                     \
     BOOST_TYPEOF_NESTED_TYPEDEF_TPL(BOOST_PP_CAT(nested_and_hidden_, NESTED), EXPR)                 \
     static int const sz = sizeof(boost::proto::detail::check_reference(EXPR));                      \
     struct NESTED                                                                                   \
@@ -53,15 +48,9 @@
           , typename BOOST_PP_CAT(nested_and_hidden_, NESTED)::type                                 \
         >                                                                                           \
     {};
-#  define BOOST_PROTO_DECLTYPE_(EXPR, TYPE)                                                         \
+# define BOOST_PROTO_DECLTYPE_(EXPR, TYPE)                                                          \
     BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL_(BOOST_PP_CAT(nested_, TYPE), (EXPR))                   \
     typedef typename BOOST_PP_CAT(nested_, TYPE)::type TYPE;
-# endif
-#else
-/// INTERNAL ONLY
-///
-# define BOOST_PROTO_DECLTYPE_(EXPR, TYPE)                                                          \
-    typedef detail::unspecified TYPE;
 #endif
 
 namespace boost { namespace proto
Modified: trunk/boost/proto/detail/deprecated.hpp
==============================================================================
--- trunk/boost/proto/detail/deprecated.hpp	(original)
+++ trunk/boost/proto/detail/deprecated.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
 #ifndef BOOST_PROTO_DETAIL_DEPRECATED_HPP_EAN_11_25_2008
 #define BOOST_PROTO_DETAIL_DEPRECATED_HPP_EAN_11_25_2008
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/facilities/intercept.hpp>
 #include <boost/preprocessor/arithmetic/inc.hpp>
@@ -37,7 +36,6 @@
 #include <boost/preprocessor/repetition/enum_binary_params.hpp>
 #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
 #include <boost/proto/proto_fwd.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 /// INTERNAL ONLY
 ///
Deleted: trunk/boost/proto/detail/prefix.hpp
==============================================================================
--- trunk/boost/proto/detail/prefix.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
+++ (empty file)
@@ -1,10 +0,0 @@
-#if defined(__WAVE__) && defined(BOOST_PROTO_BUILDING_DOCS)
-#pragma wave option(output:push)
-#pragma wave option(output:null)
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//  Copyright 2008 Eric Niebler. 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)
-///////////////////////////////////////////////////////////////////////////////
Deleted: trunk/boost/proto/detail/suffix.hpp
==============================================================================
--- trunk/boost/proto/detail/suffix.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
+++ (empty file)
@@ -1,16 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//  Copyright 2008 Eric Niebler. 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(__WAVE__) && defined(BOOST_PROTO_BUILDING_DOCS)
-#pragma wave option(output:pop)
-#endif
-
-#ifndef BOOST_PROTO_SUFFIX_DUMMY_STRUCT_DEFINED
-#define BOOST_PROTO_SUFFIX_DUMMY_STRUCT_DEFINED
-/// INTERNAL ONLY
-///
-struct a_dummy_struct;
-#endif
Modified: trunk/boost/proto/domain.hpp
==============================================================================
--- trunk/boost/proto/domain.hpp	(original)
+++ trunk/boost/proto/domain.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -11,12 +11,10 @@
 #ifndef BOOST_PROTO_DOMAIN_HPP_EAN_02_13_2007
 #define BOOST_PROTO_DOMAIN_HPP_EAN_02_13_2007
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/ref.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/generate.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
@@ -30,84 +28,83 @@
         {};
     }
 
-    BOOST_PROTO_BEGIN_ADL_NAMESPACE(domainns_)
-
-    /// \brief For use in defining domain tags to be used
-    /// with \c proto::extends\<\>. A \e Domain associates
-    /// an expression type with a \e Generator, and optionally
-    /// a \e Grammar.
-    ///
-    /// The Generator determines how new expressions in the
-    /// domain are constructed. Typically, a generator wraps
-    /// all new expressions in a wrapper that imparts
-    /// domain-specific behaviors to expressions within its
-    /// domain. (See \c proto::extends\<\>.)
-    ///
-    /// The Grammar determines whether a given expression is
-    /// valid within the domain, and automatically disables
-    /// any operator overloads which would cause an invalid
-    /// expression to be created. By default, the Grammar
-    /// parameter defaults to the wildcard, \c proto::_, which
-    /// makes all expressions valid within the domain.
-    ///
-    /// Example:
-    /// \code
-    /// template<typename Expr>
-    /// struct MyExpr;
-    ///
-    /// struct MyGrammar
-    ///   : or_< terminal<_>, plus<MyGrammar, MyGrammar> >
-    /// {};
-    ///
-    /// // Define MyDomain, in which all expressions are
-    /// // wrapped in MyExpr<> and only expressions that
-    /// // conform to MyGrammar are allowed.
-    /// struct MyDomain
-    ///   : domain<generator<MyExpr>, MyGrammar>
-    /// {};
-    ///
-    /// // Use MyDomain to define MyExpr
-    /// template<typename Expr>
-    /// struct MyExpr
-    ///   : extends<Expr, MyExpr<Expr>, MyDomain>
-    /// {
-    ///     // ...
-    /// };
-    /// \endcode
-    ///
-    template<
-        typename Generator BOOST_PROTO_WHEN_BUILDING_DOCS(= default_generator)
-      , typename Grammar   BOOST_PROTO_WHEN_BUILDING_DOCS(= proto::_)
-    >
-    struct domain
-      : Generator
+    namespace domainns_
     {
-        typedef Grammar proto_grammar;
+        /// \brief For use in defining domain tags to be used
+        /// with \c proto::extends\<\>. A \e Domain associates
+        /// an expression type with a \e Generator, and optionally
+        /// a \e Grammar.
+        ///
+        /// The Generator determines how new expressions in the
+        /// domain are constructed. Typically, a generator wraps
+        /// all new expressions in a wrapper that imparts
+        /// domain-specific behaviors to expressions within its
+        /// domain. (See \c proto::extends\<\>.)
+        ///
+        /// The Grammar determines whether a given expression is
+        /// valid within the domain, and automatically disables
+        /// any operator overloads which would cause an invalid
+        /// expression to be created. By default, the Grammar
+        /// parameter defaults to the wildcard, \c proto::_, which
+        /// makes all expressions valid within the domain.
+        ///
+        /// Example:
+        /// \code
+        /// template<typename Expr>
+        /// struct MyExpr;
+        ///
+        /// struct MyGrammar
+        ///   : or_< terminal<_>, plus<MyGrammar, MyGrammar> >
+        /// {};
+        ///
+        /// // Define MyDomain, in which all expressions are
+        /// // wrapped in MyExpr<> and only expressions that
+        /// // conform to MyGrammar are allowed.
+        /// struct MyDomain
+        ///   : domain<generator<MyExpr>, MyGrammar>
+        /// {};
+        ///
+        /// // Use MyDomain to define MyExpr
+        /// template<typename Expr>
+        /// struct MyExpr
+        ///   : extends<Expr, MyExpr<Expr>, MyDomain>
+        /// {
+        ///     // ...
+        /// };
+        /// \endcode
+        ///
+        template<
+            typename Generator // = default_generator
+          , typename Grammar   // = proto::_
+        >
+        struct domain
+          : Generator
+        {
+            typedef Grammar proto_grammar;
 
-        /// INTERNAL ONLY
-        typedef void proto_is_domain_;
-    };
+            /// INTERNAL ONLY
+            typedef void proto_is_domain_;
+        };
 
-    /// \brief The domain expressions have by default, if
-    /// \c proto::extends\<\> has not been used to associate
-    /// a domain with an expression.
-    ///
-    struct default_domain
-      : domain<>
-    {};
-
-    /// \brief A pseudo-domain for use in functions and
-    /// metafunctions that require a domain parameter. It
-    /// indicates that the domain of the parent node should
-    /// be inferred from the domains of the child nodes.
-    ///
-    /// \attention \c deduce_domain is not itself a valid domain.
-    ///
-    struct deduce_domain
-      : domain<detail::not_a_generator, detail::not_a_grammar>
-    {};
+        /// \brief The domain expressions have by default, if
+        /// \c proto::extends\<\> has not been used to associate
+        /// a domain with an expression.
+        ///
+        struct default_domain
+          : domain<>
+        {};
 
-    BOOST_PROTO_END_ADL_NAMESPACE(domainns_)
+        /// \brief A pseudo-domain for use in functions and
+        /// metafunctions that require a domain parameter. It
+        /// indicates that the domain of the parent node should
+        /// be inferred from the domains of the child nodes.
+        ///
+        /// \attention \c deduce_domain is not itself a valid domain.
+        ///
+        struct deduce_domain
+          : domain<detail::not_a_generator, detail::not_a_grammar>
+        {};
+    }
 
     namespace result_of
     {
@@ -116,7 +113,7 @@
         /// \c mpl::false_ otherwise. If \c T inherits from
         /// \c proto::domain\<\>, \c is_domain\<T\> is
         /// \c mpl::true_.
-        template<typename T, typename Void  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)>
+        template<typename T, typename Void  /* = void*/>
         struct is_domain
           : mpl::false_
         {};
@@ -133,7 +130,7 @@
         /// type, it returns that expression's associated
         /// domain. If not, it returns
         /// \c proto::default_domain.
-        template<typename T, typename Void  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)>
+        template<typename T, typename Void /* = void*/>
         struct domain_of
         {
             typedef default_domain type;
Modified: trunk/boost/proto/eval.hpp
==============================================================================
--- trunk/boost/proto/eval.hpp	(original)
+++ trunk/boost/proto/eval.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,10 +9,8 @@
 #ifndef BOOST_PROTO_EVAL_HPP_EAN_03_29_2007
 #define BOOST_PROTO_EVAL_HPP_EAN_03_29_2007
 
-#include <boost/proto/detail/prefix.hpp> // must be first include
 #include <boost/proto/proto_fwd.hpp> // BOOST_PROTO_CALLABLE
 #include <boost/type_traits/remove_reference.hpp>
-#include <boost/proto/detail/suffix.hpp> // must be last include
 
 namespace boost { namespace proto
 {
Modified: trunk/boost/proto/expr.hpp
==============================================================================
--- trunk/boost/proto/expr.hpp	(original)
+++ trunk/boost/proto/expr.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
     #ifndef BOOST_PROTO_EXPR_HPP_EAN_04_01_2005
     #define BOOST_PROTO_EXPR_HPP_EAN_04_01_2005
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/preprocessor/cat.hpp>
     #include <boost/preprocessor/arithmetic/dec.hpp>
     #include <boost/preprocessor/selection/max.hpp>
@@ -26,7 +25,6 @@
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/args.hpp>
     #include <boost/proto/traits.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     #if defined(_MSC_VER) && (_MSC_VER >= 1020)
     # pragma warning(push)
@@ -136,10 +134,11 @@
         // a basic_expr because they should be layout compatible. Or not, because
         // that would incur an extra template instantiation. :-(
 
-        BOOST_PROTO_BEGIN_ADL_NAMESPACE(exprns_)
-        #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PROTO_MAX_ARITY, <boost/proto/expr.hpp>))
-        #include BOOST_PP_ITERATE()
-        BOOST_PROTO_END_ADL_NAMESPACE(exprns_)
+        namespace exprns_
+        {
+            #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PROTO_MAX_ARITY, <boost/proto/expr.hpp>))
+            #include BOOST_PP_ITERATE()
+        }
 
         #undef BOOST_PROTO_CHILD
         #undef BOOST_PROTO_VOID
@@ -221,7 +220,7 @@
             typedef BOOST_PP_CAT(list, BOOST_PP_ITERATION())<BOOST_PP_ENUM_PARAMS(ARG_COUNT, Arg)> proto_args;
             #endif
             typedef default_domain proto_domain;
-            BOOST_PROTO_FUSION_DEFINE_TAG(proto::tag::proto_expr)
+            typedef proto::tag::proto_expr fusion_tag;
             typedef expr proto_derived_expr;
             typedef void proto_is_expr_; /**< INTERNAL ONLY */
 
Modified: trunk/boost/proto/extends.hpp
==============================================================================
--- trunk/boost/proto/extends.hpp	(original)
+++ trunk/boost/proto/extends.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,7 +9,6 @@
 #ifndef BOOST_PROTO_EXTENDS_HPP_EAN_11_1_2006
 #define BOOST_PROTO_EXTENDS_HPP_EAN_11_1_2006
 
-#include <boost/proto/detail/prefix.hpp>
 #include <cstddef> // for offsetof
 #include <boost/preprocessor/tuple/elem.hpp>
 #include <boost/preprocessor/control/if.hpp>
@@ -30,7 +29,6 @@
 #include <boost/proto/args.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/generate.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
@@ -158,7 +156,7 @@
         typedef typename proto_base_expr::address_of_hack_type_ proto_address_of_hack_type_;        \
         typedef void proto_is_expr_; /**< INTERNAL ONLY */                                          \
         BOOST_STATIC_CONSTANT(long, proto_arity_c = proto_base_expr::proto_arity_c);                \
-        BOOST_PROTO_FUSION_DEFINE_TAG(boost::proto::tag::proto_expr)                                \
+        typedef boost::proto::tag::proto_expr fusion_tag;                                \
         BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, BOOST_PROTO_EXTENDS_CHILD, ~)                        \
                                                                                                     \
         static proto_derived_expr const make(Expr const &e)                                         \
@@ -413,192 +411,192 @@
         BOOST_PROTO_EXTENDS_FUNCTION()                                                              \
         /**/
 
-    BOOST_PROTO_BEGIN_ADL_NAMESPACE(exprns_)
-
-    /// \brief Empty type to be used as a dummy template parameter of
-    ///     POD expression wrappers. It allows argument-dependent lookup
-    ///     to find Proto's operator overloads.
-    ///
-    /// \c proto::is_proto_expr allows argument-dependent lookup
-    ///     to find Proto's operator overloads. For example:
-    ///
-    /// \code
-    /// template<typename T, typename Dummy = proto::is_proto_expr>
-    /// struct my_terminal
-    /// {
-    ///     BOOST_PROTO_BASIC_EXTENDS(
-    ///         typename proto::terminal<T>::type
-    ///       , my_terminal<T>
-    ///       , default_domain
-    ///     )
-    /// };
-    ///
-    /// // ...
-    /// my_terminal<int> _1, _2;
-    /// _1 + _2; // OK, uses proto::operator+
-    /// \endcode
-    ///
-    /// Without the second \c Dummy template parameter, Proto's operator
-    /// overloads would not be considered by name lookup.
-    struct is_proto_expr
-    {};
-
-    /// \brief extends\<\> class template for adding behaviors to a Proto expression template
-    ///
-    template<
-        typename Expr
-      , typename Derived
-      , typename Domain     BOOST_PROTO_WHEN_BUILDING_DOCS(= proto::default_domain)
-      , long Arity          BOOST_PROTO_WHEN_BUILDING_DOCS(= Expr::proto_arity_c)
-    >
-    struct extends
+    namespace exprns_
     {
-        extends()
-          : proto_expr_()
-        {}
-
-        extends(extends const &that)
-          : proto_expr_(that.proto_expr_)
-        {}
-
-        extends(Expr const &expr_)
-          : proto_expr_(expr_)
-        {}
-
-        BOOST_PROTO_BASIC_EXTENDS_(Expr, Derived, Domain)
-        BOOST_PROTO_EXTENDS_ASSIGN_CONST()
-        BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST()
-
-        // Instead of using BOOST_PROTO_EXTENDS_FUNCTION, which uses
-        // nested preprocessor loops, use file iteration here to generate
-        // the operator() overloads, which is more efficient.
-        BOOST_PROTO_EXTENDS_FUNCTION_()
-
-    #ifdef BOOST_HAS_VARIADIC_TMPL
-        BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(1)
-    #else
-        /// INTERNAL ONLY
+        /// \brief Empty type to be used as a dummy template parameter of
+        ///     POD expression wrappers. It allows argument-dependent lookup
+        ///     to find Proto's operator overloads.
         ///
-    #define BOOST_PP_LOCAL_MACRO(N)                                                             \
-        BOOST_PROTO_DEFINE_FUN_OP_CONST(1, N, ~)                                                \
-        /**/
-
-        /// INTERNAL ONLY
+        /// \c proto::is_proto_expr allows argument-dependent lookup
+        ///     to find Proto's operator overloads. For example:
         ///
-    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC(BOOST_PROTO_MAX_FUNCTION_CALL_ARITY))
-    #include BOOST_PP_LOCAL_ITERATE()
-
-    #endif
-    };
-
-    /// \brief extends\<\> class template for adding behaviors to a Proto expression template
-    ///
-    template<typename Expr, typename Derived, typename Domain>
-    struct extends<Expr, Derived, Domain, 0>
-    {
-        extends()
-          : proto_expr_()
-        {}
-
-        extends(extends const &that)
-          : proto_expr_(that.proto_expr_)
-        {}
-
-        extends(Expr const &expr_)
-          : proto_expr_(expr_)
-        {}
-
-        BOOST_PROTO_BASIC_EXTENDS_(Expr, Derived, Domain)
-        BOOST_PROTO_EXTENDS_ASSIGN()
-        BOOST_PROTO_EXTENDS_SUBSCRIPT()
-
-        // Instead of using BOOST_PROTO_EXTENDS_FUNCTION, which uses
-        // nested preprocessor loops, use file iteration here to generate
-        // the operator() overloads, which is more efficient.
-        BOOST_PROTO_EXTENDS_FUNCTION_()
-
-    #ifdef BOOST_HAS_VARIADIC_TMPL
-        BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(0)
-        BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(1)
-    #else
-
-        /// INTERNAL ONLY
+        /// \code
+        /// template<typename T, typename Dummy = proto::is_proto_expr>
+        /// struct my_terminal
+        /// {
+        ///     BOOST_PROTO_BASIC_EXTENDS(
+        ///         typename proto::terminal<T>::type
+        ///       , my_terminal<T>
+        ///       , default_domain
+        ///     )
+        /// };
         ///
-    #define BOOST_PP_LOCAL_MACRO(N)                                                             \
-        BOOST_PROTO_DEFINE_FUN_OP(1, N, ~)                                                      \
-        /**/
+        /// // ...
+        /// my_terminal<int> _1, _2;
+        /// _1 + _2; // OK, uses proto::operator+
+        /// \endcode
+        ///
+        /// Without the second \c Dummy template parameter, Proto's operator
+        /// overloads would not be considered by name lookup.
+        struct is_proto_expr
+        {};
 
-        /// INTERNAL ONLY
+        /// \brief extends\<\> class template for adding behaviors to a Proto expression template
         ///
-    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC(BOOST_PROTO_MAX_FUNCTION_CALL_ARITY))
-    #include BOOST_PP_LOCAL_ITERATE()
+        template<
+            typename Expr
+          , typename Derived
+          , typename Domain     // = proto::default_domain
+          , long Arity          // = Expr::proto_arity_c
+        >
+        struct extends
+        {
+            extends()
+              : proto_expr_()
+            {}
+
+            extends(extends const &that)
+              : proto_expr_(that.proto_expr_)
+            {}
+
+            extends(Expr const &expr_)
+              : proto_expr_(expr_)
+            {}
+
+            BOOST_PROTO_BASIC_EXTENDS_(Expr, Derived, Domain)
+            BOOST_PROTO_EXTENDS_ASSIGN_CONST()
+            BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST()
+
+            // Instead of using BOOST_PROTO_EXTENDS_FUNCTION, which uses
+            // nested preprocessor loops, use file iteration here to generate
+            // the operator() overloads, which is more efficient.
+            BOOST_PROTO_EXTENDS_FUNCTION_()
+
+        #ifdef BOOST_HAS_VARIADIC_TMPL
+            BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(1)
+        #else
+            /// INTERNAL ONLY
+            ///
+        #define BOOST_PP_LOCAL_MACRO(N)                                                             \
+            BOOST_PROTO_DEFINE_FUN_OP_CONST(1, N, ~)                                                \
+            /**/
 
-    #endif
-    };
+            /// INTERNAL ONLY
+            ///
+        #define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC(BOOST_PROTO_MAX_FUNCTION_CALL_ARITY))
+        #include BOOST_PP_LOCAL_ITERATE()
 
-    /// INTERNAL ONLY
-    ///
-    template<typename This, typename Fun, typename Domain>
-    struct virtual_member
-    {
-        typedef
-            expr<tag::member, list2<This &, expr<tag::terminal, term<Fun> > const &>, 2>
-        proto_base_expr;
-        typedef Domain proto_domain;
-        typedef virtual_member<This, Fun, Domain> proto_derived_expr;
-        typedef typename proto_base_expr::proto_tag proto_tag;
-        typedef typename proto_base_expr::proto_args proto_args;
-        typedef typename proto_base_expr::proto_arity proto_arity;
-        typedef typename proto_base_expr::address_of_hack_type_ proto_address_of_hack_type_;
-        typedef void proto_is_expr_; /**< INTERNAL ONLY */
-        BOOST_STATIC_CONSTANT(long, proto_arity_c = proto_base_expr::proto_arity_c);
-        BOOST_PROTO_FUSION_DEFINE_TAG(boost::proto::tag::proto_expr)
-        BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, BOOST_PROTO_EXTENDS_CHILD, ~)
-        typedef void proto_is_aggregate_; /**< INTERNAL ONLY */
-
-        BOOST_PROTO_EXTENDS_ASSIGN()
-        BOOST_PROTO_EXTENDS_SUBSCRIPT()
-        BOOST_PROTO_EXTENDS_FUNCTION()
+        #endif
+        };
 
-        proto_base_expr const proto_base() const
+        /// \brief extends\<\> class template for adding behaviors to a Proto expression template
+        ///
+        template<typename Expr, typename Derived, typename Domain>
+        struct extends<Expr, Derived, Domain, 0>
         {
-            proto_base_expr that = {this->child0(), this->child1()};
-            return that;
-        }
+            extends()
+              : proto_expr_()
+            {}
+
+            extends(extends const &that)
+              : proto_expr_(that.proto_expr_)
+            {}
+
+            extends(Expr const &expr_)
+              : proto_expr_(expr_)
+            {}
+
+            BOOST_PROTO_BASIC_EXTENDS_(Expr, Derived, Domain)
+            BOOST_PROTO_EXTENDS_ASSIGN()
+            BOOST_PROTO_EXTENDS_SUBSCRIPT()
+
+            // Instead of using BOOST_PROTO_EXTENDS_FUNCTION, which uses
+            // nested preprocessor loops, use file iteration here to generate
+            // the operator() overloads, which is more efficient.
+            BOOST_PROTO_EXTENDS_FUNCTION_()
+
+        #ifdef BOOST_HAS_VARIADIC_TMPL
+            BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(0)
+            BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(1)
+        #else
+
+            /// INTERNAL ONLY
+            ///
+        #define BOOST_PP_LOCAL_MACRO(N)                                                             \
+            BOOST_PROTO_DEFINE_FUN_OP(1, N, ~)                                                      \
+            /**/
 
-        proto_child0 child0() const
-        {
-            return *(This *)((char *)this - BOOST_PROTO_OFFSETOF(This, proto_member_union_start_));
-        }
+            /// INTERNAL ONLY
+            ///
+        #define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC(BOOST_PROTO_MAX_FUNCTION_CALL_ARITY))
+        #include BOOST_PP_LOCAL_ITERATE()
+
+        #endif
+        };
 
-        proto_child1 child1() const
+        /// INTERNAL ONLY
+        ///
+        template<typename This, typename Fun, typename Domain>
+        struct virtual_member
         {
-            static expr<tag::terminal, term<Fun>, 0> const that = {Fun()};
-            return that;
-        }
-    };
+            typedef
+                expr<tag::member, list2<This &, expr<tag::terminal, term<Fun> > const &>, 2>
+            proto_base_expr;
+            typedef Domain proto_domain;
+            typedef virtual_member<This, Fun, Domain> proto_derived_expr;
+            typedef typename proto_base_expr::proto_tag proto_tag;
+            typedef typename proto_base_expr::proto_args proto_args;
+            typedef typename proto_base_expr::proto_arity proto_arity;
+            typedef typename proto_base_expr::address_of_hack_type_ proto_address_of_hack_type_;
+            typedef void proto_is_expr_; /**< INTERNAL ONLY */
+            BOOST_STATIC_CONSTANT(long, proto_arity_c = proto_base_expr::proto_arity_c);
+            typedef boost::proto::tag::proto_expr fusion_tag;
+            BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, BOOST_PROTO_EXTENDS_CHILD, ~)
+            typedef void proto_is_aggregate_; /**< INTERNAL ONLY */
+
+            BOOST_PROTO_EXTENDS_ASSIGN()
+            BOOST_PROTO_EXTENDS_SUBSCRIPT()
+            BOOST_PROTO_EXTENDS_FUNCTION()
+
+            proto_base_expr const proto_base() const
+            {
+                proto_base_expr that = {this->child0(), this->child1()};
+                return that;
+            }
+
+            proto_child0 child0() const
+            {
+                return *(This *)((char *)this - BOOST_PROTO_OFFSETOF(This, proto_member_union_start_));
+            }
+
+            proto_child1 child1() const
+            {
+                static expr<tag::terminal, term<Fun>, 0> const that = {Fun()};
+                return that;
+            }
+        };
 
-    /// INTERNAL ONLY
-    ///
-    #define BOOST_PROTO_EXTENDS_MEMBER_(R, DATA, ELEM)                                              \
-        boost::proto::exprns_::virtual_member<                                                      \
-            proto_derived_expr                                                                      \
-          , BOOST_PP_TUPLE_ELEM(2, 0, ELEM)                                                         \
-          , proto_domain                                                                            \
-        > BOOST_PP_TUPLE_ELEM(2, 1, ELEM);                                                          \
-        /**/
+        /// INTERNAL ONLY
+        ///
+        #define BOOST_PROTO_EXTENDS_MEMBER_(R, DATA, ELEM)                                              \
+            boost::proto::exprns_::virtual_member<                                                      \
+                proto_derived_expr                                                                      \
+              , BOOST_PP_TUPLE_ELEM(2, 0, ELEM)                                                         \
+              , proto_domain                                                                            \
+            > BOOST_PP_TUPLE_ELEM(2, 1, ELEM);                                                          \
+            /**/
 
-    /// \brief For declaring virtual data members in an extension class.
-    ///
-    #define BOOST_PROTO_EXTENDS_MEMBERS(SEQ)                                                        \
-        union                                                                                       \
-        {                                                                                           \
-            char proto_member_union_start_;                                                         \
-            BOOST_PP_SEQ_FOR_EACH(BOOST_PROTO_EXTENDS_MEMBER_, ~, SEQ)                              \
-        };                                                                                          \
-        /**/
+        /// \brief For declaring virtual data members in an extension class.
+        ///
+        #define BOOST_PROTO_EXTENDS_MEMBERS(SEQ)                                                        \
+            union                                                                                       \
+            {                                                                                           \
+                char proto_member_union_start_;                                                         \
+                BOOST_PP_SEQ_FOR_EACH(BOOST_PROTO_EXTENDS_MEMBER_, ~, SEQ)                              \
+            };                                                                                          \
+            /**/
 
-    BOOST_PROTO_END_ADL_NAMESPACE(exprns_)
+    }
 
 }}
 
Modified: trunk/boost/proto/fusion.hpp
==============================================================================
--- trunk/boost/proto/fusion.hpp	(original)
+++ trunk/boost/proto/fusion.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,14 +9,11 @@
 #ifndef BOOST_PROTO_FUSION_HPP_EAN_11_04_2006
 #define BOOST_PROTO_FUSION_HPP_EAN_11_04_2006
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/config.hpp>
-#include <boost/version.hpp>
 #include <boost/type_traits/remove_reference.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/long.hpp>
 #include <boost/mpl/sequence_tag_fwd.hpp>
-#if BOOST_VERSION >= 103500
 #include <boost/fusion/include/is_view.hpp>
 #include <boost/fusion/include/tag_of_fwd.hpp>
 #include <boost/fusion/include/category_of.hpp>
@@ -30,21 +27,9 @@
 #include <boost/fusion/sequence/intrinsic/ext_/segments.hpp>
 #include <boost/fusion/sequence/intrinsic/ext_/size_s.hpp>
 #include <boost/fusion/view/ext_/segmented_iterator.hpp>
-#else
-#include <boost/spirit/fusion/sequence/is_sequence.hpp>
-#include <boost/spirit/fusion/sequence/begin.hpp>
-#include <boost/spirit/fusion/sequence/end.hpp>
-#include <boost/spirit/fusion/sequence/at.hpp>
-#include <boost/spirit/fusion/sequence/value_at.hpp>
-#include <boost/spirit/fusion/sequence/single_view.hpp>
-#include <boost/spirit/fusion/sequence/transform_view.hpp>
-#include <boost/proto/detail/reverse.hpp>
-#include <boost/proto/detail/pop_front.hpp>
-#endif
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/eval.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 #if BOOST_MSVC
 #pragma warning(push)
@@ -70,8 +55,8 @@
             typedef Expr expr_type;
             typedef typename Expr::proto_tag proto_tag;
             BOOST_STATIC_CONSTANT(long, index = Pos);
-            BOOST_PROTO_FUSION_DEFINE_CATEGORY(fusion::random_access_traversal_tag)
-            BOOST_PROTO_FUSION_DEFINE_TAG(tag::proto_expr_iterator)
+            typedef fusion::random_access_traversal_tag category;
+            typedef tag::proto_expr_iterator fusion_tag;
 
             expr_iterator(Expr const &e)
               : expr(e)
@@ -85,8 +70,8 @@
         {
             typedef Expr expr_type;
             typedef typename Expr::proto_tag proto_tag;
-            BOOST_PROTO_FUSION_DEFINE_CATEGORY(fusion::forward_traversal_tag)
-            BOOST_PROTO_FUSION_DEFINE_TAG(tag::proto_flat_view)
+            typedef fusion::forward_traversal_tag category;
+            typedef tag::proto_flat_view fusion_tag;
 
             explicit flat_view(Expr &e)
               : expr_(e)
@@ -190,12 +175,12 @@
             struct result<This(Expr)>
             {
                 typedef
-                    typename fusion::BOOST_PROTO_FUSION_RESULT_OF::pop_front<UNREF(Expr) const>::type
+                    typename fusion::result_of::pop_front<UNREF(Expr) const>::type
                 type;
             };
 
             template<typename Expr>
-            typename fusion::BOOST_PROTO_FUSION_RESULT_OF::pop_front<Expr const>::type
+            typename fusion::result_of::pop_front<Expr const>::type
             operator ()(Expr const &e) const
             {
                 return fusion::pop_front(e);
@@ -221,12 +206,12 @@
             struct result<This(Expr)>
             {
                 typedef
-                    typename fusion::BOOST_PROTO_FUSION_RESULT_OF::reverse<UNREF(Expr) const>::type
+                    typename fusion::result_of::reverse<UNREF(Expr) const>::type
                 type;
             };
 
             template<typename Expr>
-            typename fusion::BOOST_PROTO_FUSION_RESULT_OF::reverse<Expr const>::type
+            typename fusion::result_of::reverse<Expr const>::type
             operator ()(Expr const &e) const
             {
                 return fusion::reverse(e);
@@ -305,26 +290,9 @@
     };
 }}
 
-// Don't bother emitting all this into the Doxygen-generated
-// reference section. It's enough to say that Proto expressions
-// are valid Fusion sequence without showing all this gunk.
-#ifndef BOOST_PROTO_BUILDING_DOCS
-
 namespace boost { namespace fusion
 {
-    #if BOOST_VERSION < 103500
-    template<typename Tag, typename Args, long Arity>
-    struct is_sequence<proto::expr<Tag, Args, Arity> >
-      : mpl::true_
-    {};
-
-    template<typename Tag, typename Args, long Arity>
-    struct is_sequence<proto::expr<Tag, Args, Arity> const>
-      : mpl::true_
-    {};
-    #endif
-
-    namespace BOOST_PROTO_FUSION_EXTENSION
+    namespace extension
     {
 
         template<typename Tag>
@@ -379,16 +347,6 @@
             };
         };
 
-        #if BOOST_VERSION < 103500
-        template<typename Tag>
-        struct value_impl;
-
-        template<>
-        struct value_impl<proto::tag::proto_expr_iterator>
-          : value_of_impl<proto::tag::proto_expr_iterator>
-        {};
-        #endif
-
         template<typename Tag>
         struct deref_impl;
 
@@ -489,7 +447,6 @@
             {};
         };
 
-        #if BOOST_VERSION >= 103500
         template<typename Tag>
         struct category_of_impl;
 
@@ -502,7 +459,6 @@
                 typedef random_access_traversal_tag type;
             };
         };
-        #endif
 
         template<typename Tag>
         struct size_impl;
@@ -631,7 +587,6 @@
             };
         };
 
-        #if BOOST_VERSION >= 103500
         template<typename Tag>
         struct is_segmented_impl;
 
@@ -703,7 +658,6 @@
               : fusion::segmented_size<Sequence>
             {};
         };
-        #endif
 
     }
 
@@ -718,8 +672,6 @@
     };
 }} 
 
-#endif // BOOST_PROTO_BUILDING_DOCS
-
 #undef UNREF
 
 #if BOOST_MSVC
Modified: trunk/boost/proto/generate.hpp
==============================================================================
--- trunk/boost/proto/generate.hpp	(original)
+++ trunk/boost/proto/generate.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -11,7 +11,6 @@
     #ifndef BOOST_PROTO_GENERATE_HPP_EAN_02_13_2007
     #define BOOST_PROTO_GENERATE_HPP_EAN_02_13_2007
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/config.hpp>
     #include <boost/utility/result_of.hpp>
     #include <boost/preprocessor/cat.hpp>
@@ -20,7 +19,6 @@
     #include <boost/utility/enable_if.hpp>
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/args.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
@@ -75,242 +73,241 @@
 
         }
 
-        BOOST_PROTO_BEGIN_ADL_NAMESPACE(generatorns_)
-
-        /// \brief A simple generator that passes an expression
-        /// through unchanged.
-        ///
-        /// Generators are intended for use as the first template parameter
-        /// to the \c domain\<\> class template and control if and how
-        /// expressions within that domain are to be customized.
-        /// The \c default_generator makes no modifications to the expressions
-        /// passed to it.
-        struct default_generator
+        namespace generatorns_
         {
-            BOOST_PROTO_CALLABLE()
-
-            template<typename Sig>
-            struct result;
-
-            template<typename This, typename Expr>
-            struct result<This(Expr)>
+            /// \brief A simple generator that passes an expression
+            /// through unchanged.
+            ///
+            /// Generators are intended for use as the first template parameter
+            /// to the \c domain\<\> class template and control if and how
+            /// expressions within that domain are to be customized.
+            /// The \c default_generator makes no modifications to the expressions
+            /// passed to it.
+            struct default_generator
             {
-                typedef Expr type;
-            };
-
-            /// \param expr A Proto expression
-            /// \return expr
-            template<typename Expr>
-            #ifdef BOOST_HAS_DECLTYPE
-            Expr
-            #else
-            Expr const &
-            #endif
-            operator ()(Expr const &e) const
-            {
-                return e;
-            }
-        };
-
-        /// \brief A generator that wraps expressions passed
-        /// to it in the specified extension wrapper.
-        ///
-        /// Generators are intended for use as the first template parameter
-        /// to the \c domain\<\> class template and control if and how
-        /// expressions within that domain are to be customized.
-        /// \c generator\<\> wraps each expression passed to it in
-        /// the \c Extends\<\> wrapper.
-        template<template<typename> class Extends>
-        struct generator
-        {
-            BOOST_PROTO_CALLABLE()
+                BOOST_PROTO_CALLABLE()
 
-            template<typename Sig>
-            struct result;
+                template<typename Sig>
+                struct result;
 
-            template<typename This, typename Expr>
-            struct result<This(Expr)>
-            {
-                typedef Extends<Expr> type;
-            };
+                template<typename This, typename Expr>
+                struct result<This(Expr)>
+                {
+                    typedef Expr type;
+                };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr &)>
-            {
-                typedef Extends<Expr> type;
+                /// \param expr A Proto expression
+                /// \return expr
+                template<typename Expr>
+                #ifdef BOOST_HAS_DECLTYPE
+                Expr
+                #else
+                Expr const &
+                #endif
+                operator ()(Expr const &e) const
+                {
+                    return e;
+                }
             };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr const &)>
+            /// \brief A generator that wraps expressions passed
+            /// to it in the specified extension wrapper.
+            ///
+            /// Generators are intended for use as the first template parameter
+            /// to the \c domain\<\> class template and control if and how
+            /// expressions within that domain are to be customized.
+            /// \c generator\<\> wraps each expression passed to it in
+            /// the \c Extends\<\> wrapper.
+            template<template<typename> class Extends>
+            struct generator
             {
-                typedef Extends<Expr> type;
-            };
+                BOOST_PROTO_CALLABLE()
 
-            /// \param expr A Proto expression
-            /// \return Extends<Expr>(expr)
-            template<typename Expr>
-            Extends<Expr> operator ()(Expr const &e) const
-            {
-                return Extends<Expr>(e);
-            }
-        };
+                template<typename Sig>
+                struct result;
 
-        /// \brief A generator that wraps expressions passed
-        /// to it in the specified extension wrapper and uses
-        /// aggregate initialization for the wrapper.
-        ///
-        /// Generators are intended for use as the first template parameter
-        /// to the \c domain\<\> class template and control if and how
-        /// expressions within that domain are to be customized.
-        /// \c pod_generator\<\> wraps each expression passed to it in
-        /// the \c Extends\<\> wrapper, and uses aggregate initialzation
-        /// for the wrapped object.
-        template<template<typename> class Extends>
-        struct pod_generator
-        {
-            BOOST_PROTO_CALLABLE()
+                template<typename This, typename Expr>
+                struct result<This(Expr)>
+                {
+                    typedef Extends<Expr> type;
+                };
 
-            template<typename Sig>
-            struct result;
+                template<typename This, typename Expr>
+                struct result<This(Expr &)>
+                {
+                    typedef Extends<Expr> type;
+                };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr)>
-            {
-                typedef Extends<Expr> type;
-            };
+                template<typename This, typename Expr>
+                struct result<This(Expr const &)>
+                {
+                    typedef Extends<Expr> type;
+                };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr &)>
-            {
-                typedef Extends<Expr> type;
+                /// \param expr A Proto expression
+                /// \return Extends<Expr>(expr)
+                template<typename Expr>
+                Extends<Expr> operator ()(Expr const &e) const
+                {
+                    return Extends<Expr>(e);
+                }
             };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr const &)>
+            /// \brief A generator that wraps expressions passed
+            /// to it in the specified extension wrapper and uses
+            /// aggregate initialization for the wrapper.
+            ///
+            /// Generators are intended for use as the first template parameter
+            /// to the \c domain\<\> class template and control if and how
+            /// expressions within that domain are to be customized.
+            /// \c pod_generator\<\> wraps each expression passed to it in
+            /// the \c Extends\<\> wrapper, and uses aggregate initialzation
+            /// for the wrapped object.
+            template<template<typename> class Extends>
+            struct pod_generator
             {
-                typedef Extends<Expr> type;
-            };
+                BOOST_PROTO_CALLABLE()
 
-            /// \param expr The expression to wrap
-            /// \return <tt>Extends\<Expr\> that = {expr}; return that;</tt>
-            template<typename Expr>
-            Extends<Expr> operator ()(Expr const &e) const
-            {
-                Extends<Expr> that = {e};
-                return that;
-            }
-        };
+                template<typename Sig>
+                struct result;
 
-        /// \brief A generator that replaces child nodes held by
-        /// reference with ones held by value. Use with
-        /// \c compose_generators to forward that result to another
-        /// generator.
-        ///
-        /// Generators are intended for use as the first template parameter
-        /// to the \c domain\<\> class template and control if and how
-        /// expressions within that domain are to be customized.
-        /// \c by_value_generator ensures all child nodes are
-        /// held by value. This generator is typically composed with a
-        /// second generator for further processing, as
-        /// <tt>compose_generators\<by_value_generator, MyGenerator\></tt>.
-        struct by_value_generator
-        {
-            BOOST_PROTO_CALLABLE()
+                template<typename This, typename Expr>
+                struct result<This(Expr)>
+                {
+                    typedef Extends<Expr> type;
+                };
 
-            template<typename Sig>
-            struct result;
+                template<typename This, typename Expr>
+                struct result<This(Expr &)>
+                {
+                    typedef Extends<Expr> type;
+                };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr)>
-            {
-                typedef
-                    typename detail::by_value_generator_<Expr>::type
-                type;
-            };
+                template<typename This, typename Expr>
+                struct result<This(Expr const &)>
+                {
+                    typedef Extends<Expr> type;
+                };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr &)>
-            {
-                typedef
-                    typename detail::by_value_generator_<Expr>::type
-                type;
+                /// \param expr The expression to wrap
+                /// \return <tt>Extends\<Expr\> that = {expr}; return that;</tt>
+                template<typename Expr>
+                Extends<Expr> operator ()(Expr const &e) const
+                {
+                    Extends<Expr> that = {e};
+                    return that;
+                }
             };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr const &)>
+            /// \brief A generator that replaces child nodes held by
+            /// reference with ones held by value. Use with
+            /// \c compose_generators to forward that result to another
+            /// generator.
+            ///
+            /// Generators are intended for use as the first template parameter
+            /// to the \c domain\<\> class template and control if and how
+            /// expressions within that domain are to be customized.
+            /// \c by_value_generator ensures all child nodes are
+            /// held by value. This generator is typically composed with a
+            /// second generator for further processing, as
+            /// <tt>compose_generators\<by_value_generator, MyGenerator\></tt>.
+            struct by_value_generator
             {
-                typedef
-                    typename detail::by_value_generator_<Expr>::type
-                type;
-            };
+                BOOST_PROTO_CALLABLE()
 
-            /// \param expr The expression to modify.
-            /// \return <tt>deep_copy(expr)</tt>
-            template<typename Expr>
-            typename result<by_value_generator(Expr)>::type operator ()(Expr const &e) const
-            {
-                return detail::by_value_generator_<Expr>::make(e);
-            }
-        };
+                template<typename Sig>
+                struct result;
 
-        /// \brief A composite generator that first applies one
-        /// transform to an expression and then forwards the result
-        /// on to another generator for further transformation.
-        ///
-        /// Generators are intended for use as the first template parameter
-        /// to the \c domain\<\> class template and control if and how
-        /// expressions within that domain are to be customized.
-        /// \c compose_generators\<\> is a composite generator that first
-        /// applies one transform to an expression and then forwards the
-        /// result on to another generator for further transformation.
-        template<typename First, typename Second>
-        struct compose_generators
-        {
-            BOOST_PROTO_CALLABLE()
+                template<typename This, typename Expr>
+                struct result<This(Expr)>
+                {
+                    typedef
+                        typename detail::by_value_generator_<Expr>::type
+                    type;
+                };
 
-            template<typename Sig>
-            struct result;
+                template<typename This, typename Expr>
+                struct result<This(Expr &)>
+                {
+                    typedef
+                        typename detail::by_value_generator_<Expr>::type
+                    type;
+                };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr)>
-            {
-                typedef
-                    typename Second::template result<
-                        Second(typename First::template result<First(Expr)>::type)
-                    >::type
-                type;
+                template<typename This, typename Expr>
+                struct result<This(Expr const &)>
+                {
+                    typedef
+                        typename detail::by_value_generator_<Expr>::type
+                    type;
+                };
+
+                /// \param expr The expression to modify.
+                /// \return <tt>deep_copy(expr)</tt>
+                template<typename Expr>
+                typename result<by_value_generator(Expr)>::type operator ()(Expr const &e) const
+                {
+                    return detail::by_value_generator_<Expr>::make(e);
+                }
             };
 
-            template<typename This, typename Expr>
-            struct result<This(Expr &)>
+            /// \brief A composite generator that first applies one
+            /// transform to an expression and then forwards the result
+            /// on to another generator for further transformation.
+            ///
+            /// Generators are intended for use as the first template parameter
+            /// to the \c domain\<\> class template and control if and how
+            /// expressions within that domain are to be customized.
+            /// \c compose_generators\<\> is a composite generator that first
+            /// applies one transform to an expression and then forwards the
+            /// result on to another generator for further transformation.
+            template<typename First, typename Second>
+            struct compose_generators
             {
-                typedef
-                    typename Second::template result<
-                        Second(typename First::template result<First(Expr)>::type)
-                    >::type
-                type;
-            };
+                BOOST_PROTO_CALLABLE()
 
-            template<typename This, typename Expr>
-            struct result<This(Expr const &)>
-            {
-                typedef
-                    typename Second::template result<
-                        Second(typename First::template result<First(Expr)>::type)
-                    >::type
-                type;
-            };
+                template<typename Sig>
+                struct result;
 
-            /// \param expr The expression to modify.
-            /// \return Second()(First()(expr))
-            template<typename Expr>
-            typename result<compose_generators(Expr)>::type operator ()(Expr const &e) const
-            {
-                return Second()(First()(e));
-            }
-        };
+                template<typename This, typename Expr>
+                struct result<This(Expr)>
+                {
+                    typedef
+                        typename Second::template result<
+                            Second(typename First::template result<First(Expr)>::type)
+                        >::type
+                    type;
+                };
+
+                template<typename This, typename Expr>
+                struct result<This(Expr &)>
+                {
+                    typedef
+                        typename Second::template result<
+                            Second(typename First::template result<First(Expr)>::type)
+                        >::type
+                    type;
+                };
 
-        BOOST_PROTO_END_ADL_NAMESPACE(generatorns_)
+                template<typename This, typename Expr>
+                struct result<This(Expr const &)>
+                {
+                    typedef
+                        typename Second::template result<
+                            Second(typename First::template result<First(Expr)>::type)
+                        >::type
+                    type;
+                };
+
+                /// \param expr The expression to modify.
+                /// \return Second()(First()(expr))
+                template<typename Expr>
+                typename result<compose_generators(Expr)>::type operator ()(Expr const &e) const
+                {
+                    return Second()(First()(e));
+                }
+            };
+        }
 
         /// INTERNAL ONLY
         template<>
Modified: trunk/boost/proto/literal.hpp
==============================================================================
--- trunk/boost/proto/literal.hpp	(original)
+++ trunk/boost/proto/literal.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,13 +10,11 @@
 #ifndef BOOST_PROTO_LITERAL_HPP_EAN_01_03_2007
 #define BOOST_PROTO_LITERAL_HPP_EAN_01_03_2007
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/config.hpp>
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/expr.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/extends.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
@@ -33,7 +31,7 @@
         /// \c proto::default_domain.
         template<
             typename T
-          , typename Domain BOOST_PROTO_WHEN_BUILDING_DOCS(= default_domain)
+          , typename Domain // = default_domain
         >
         struct literal
           : extends<expr<tag::terminal, term<T>, 0>, literal<T, Domain>, Domain>
Modified: trunk/boost/proto/make_expr.hpp
==============================================================================
--- trunk/boost/proto/make_expr.hpp	(original)
+++ trunk/boost/proto/make_expr.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -12,8 +12,6 @@
     #ifndef BOOST_PROTO_MAKE_EXPR_HPP_EAN_04_01_2005
     #define BOOST_PROTO_MAKE_EXPR_HPP_EAN_04_01_2005
 
-    #include <boost/proto/detail/prefix.hpp>
-    #include <boost/version.hpp>
     #include <boost/config.hpp>
     #include <boost/detail/workaround.hpp>
     #include <boost/preprocessor/cat.hpp>
@@ -28,7 +26,6 @@
     #include <boost/preprocessor/repetition/enum_binary_params.hpp>
     #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
     #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
-    #include <boost/preprocessor/repetition/enum_shifted_binary_params.hpp>
     #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
     #include <boost/preprocessor/repetition/repeat.hpp>
     #include <boost/ref.hpp>
@@ -46,20 +43,12 @@
     #include <boost/proto/traits.hpp>
     #include <boost/proto/domain.hpp>
     #include <boost/proto/generate.hpp>
-    #if BOOST_VERSION >= 103500
-    # include <boost/fusion/include/begin.hpp>
-    # include <boost/fusion/include/next.hpp>
-    # include <boost/fusion/include/value_of.hpp>
-    # include <boost/fusion/include/size.hpp>
-    #else
-    # include <boost/spirit/fusion/sequence/begin.hpp>
-    # include <boost/spirit/fusion/iterator/next.hpp>
-    # include <boost/spirit/fusion/iterator/value_of.hpp>
-    # include <boost/spirit/fusion/sequence/size.hpp>
-    #endif
+    #include <boost/fusion/include/begin.hpp>
+    #include <boost/fusion/include/next.hpp>
+    #include <boost/fusion/include/value_of.hpp>
+    #include <boost/fusion/include/size.hpp>
     #include <boost/proto/detail/poly_function.hpp>
     #include <boost/proto/detail/deprecated.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     #ifdef _MSC_VER
     # pragma warning(push)
@@ -102,7 +91,7 @@
     /// INTERNAL ONLY
     ///
     #define BOOST_PROTO_FUSION_NEXT_ITERATOR_TYPE(Z, N, DATA)                                       \
-        typedef typename fusion::BOOST_PROTO_FUSION_RESULT_OF::next<                                \
+        typedef typename fusion::result_of::next<                                \
             BOOST_PP_CAT(fusion_iterator, N)>::type                                                 \
                 BOOST_PP_CAT(fusion_iterator, BOOST_PP_INC(N));                                     \
         /**/
@@ -111,7 +100,7 @@
     ///
     #define BOOST_PROTO_FUSION_ITERATORS_TYPE(N)                                                    \
         typedef                                                                                     \
-            typename fusion::BOOST_PROTO_FUSION_RESULT_OF::begin<Sequence const>::type              \
+            typename fusion::result_of::begin<Sequence const>::type              \
         fusion_iterator0;                                                                           \
         BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_PROTO_FUSION_NEXT_ITERATOR_TYPE, fusion_iterator)    \
         /**/
@@ -120,7 +109,7 @@
     ///
     #define BOOST_PROTO_FUSION_AT_TYPE(Z, N, DATA)                                                  \
         typename add_const<                                                                         \
-            typename fusion::BOOST_PROTO_FUSION_RESULT_OF::value_of<                                \
+            typename fusion::result_of::value_of<                                \
                 BOOST_PP_CAT(fusion_iterator, N)                                                    \
             >::type                                                                                 \
         >::type                                                                                     \
@@ -254,8 +243,8 @@
             {
                 typedef
                     typename add_const<
-                        typename fusion::BOOST_PROTO_FUSION_RESULT_OF::value_of<
-                            typename fusion::BOOST_PROTO_FUSION_RESULT_OF::begin<Sequence>::type
+                        typename fusion::result_of::value_of<
+                            typename fusion::result_of::begin<Sequence>::type
                         >::type
                     >::type
                 terminal_type;
@@ -269,7 +258,7 @@
 
                 static type const call(Sequence const &sequence)
                 {
-                    return proto::detail::protoify_<terminal_type, Domain>::call(fusion::BOOST_PROTO_FUSION_AT_C(0, sequence));
+                    return proto::detail::protoify_<terminal_type, Domain>::call(fusion::at_c<0>(sequence));
                 }
             };
 
@@ -398,14 +387,9 @@
             /// specialization is selected.)
             template<
                 typename Tag
-              , typename A0
-              , BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(
-                    BOOST_PROTO_MAX_ARITY
-                  , typename A
-                  , BOOST_PROTO_WHEN_BUILDING_DOCS(= void) BOOST_PP_INTERCEPT
-                )
-              , typename Void1  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
-              , typename Void2  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
+              , BOOST_PP_ENUM_PARAMS(BOOST_PROTO_MAX_ARITY, typename A)
+              , typename Void1  // = void
+              , typename Void2  // = void
             >
             struct make_expr
             {
@@ -489,8 +473,8 @@
             template<
                 typename Tag
               , typename Sequence
-              , typename Void1  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
-              , typename Void2  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
+              , typename Void1  // = void
+              , typename Void2  // = void
             >
             struct unpack_expr
             {
@@ -505,7 +489,7 @@
                         Tag
                       , deduce_domain
                       , Sequence
-                      , fusion::BOOST_PROTO_FUSION_RESULT_OF::size<Sequence>::type::value
+                      , fusion::result_of::size<Sequence>::type::value
                     >::type
                 type;
             };
@@ -529,7 +513,7 @@
                         Tag
                       , Domain
                       , Sequence
-                      , fusion::BOOST_PROTO_FUSION_RESULT_OF::size<Sequence>::type::value
+                      , fusion::result_of::size<Sequence>::type::value
                     >::type
                 type;
             };
@@ -545,7 +529,7 @@
             ///
             /// <tt>functional::make_expr\<Tag\>()(a0, ... aN)</tt>
             /// is equivalent to <tt>proto::make_expr\<Tag\>(a0, ... aN)</tt>.
-            template<typename Tag, typename Domain  BOOST_PROTO_WHEN_BUILDING_DOCS(= deduce_domain)>
+            template<typename Tag, typename Domain  /* = deduce_domain*/>
             struct make_expr
             {
                 BOOST_PROTO_CALLABLE()
@@ -619,7 +603,7 @@
             ///
             /// <tt>functional::unpack_expr\<Tag\>()(seq)</tt>
             /// is equivalent to <tt>proto::unpack_expr\<Tag\>(seq)</tt>.
-            template<typename Tag, typename Domain  BOOST_PROTO_WHEN_BUILDING_DOCS(= deduce_domain)>
+            template<typename Tag, typename Domain /* = deduce_domain*/>
             struct unpack_expr
             {
                 BOOST_PROTO_CALLABLE()
@@ -653,7 +637,7 @@
                         Tag
                       , Domain
                       , Sequence const
-                      , fusion::BOOST_PROTO_FUSION_RESULT_OF::size<Sequence>::type::value
+                      , fusion::result_of::size<Sequence>::type::value
                     >::call(sequence);
                 }
             };
@@ -688,7 +672,7 @@
                         Tag
                       , Domain
                       , Sequence const
-                      , fusion::BOOST_PROTO_FUSION_RESULT_OF::size<Sequence>::type::value
+                      , fusion::result_of::size<Sequence>::type::value
                     >::call(sequence);
                 }
             };
@@ -805,7 +789,7 @@
                 Tag
               , deduce_domain
               , Sequence const
-              , fusion::BOOST_PROTO_FUSION_RESULT_OF::size<Sequence>::type::value
+              , fusion::result_of::size<Sequence>::type::value
             >::call(sequence);
         }
 
@@ -819,7 +803,7 @@
                 Tag
               , Domain
               , Sequence2 const
-              , fusion::BOOST_PROTO_FUSION_RESULT_OF::size<Sequence2>::type::value
+              , fusion::result_of::size<Sequence2>::type::value
             >::call(sequence2);
         }
 
Modified: trunk/boost/proto/matches.hpp
==============================================================================
--- trunk/boost/proto/matches.hpp	(original)
+++ trunk/boost/proto/matches.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -11,7 +11,6 @@
     #ifndef BOOST_PROTO_MATCHES_HPP_EAN_11_03_2006
     #define BOOST_PROTO_MATCHES_HPP_EAN_11_03_2006
 
-    #include <boost/proto/detail/prefix.hpp> // must be first include
     #include <boost/config.hpp>
     #include <boost/detail/workaround.hpp>
     #include <boost/preprocessor/cat.hpp>
@@ -43,7 +42,6 @@
     #include <boost/proto/traits.hpp>
     #include <boost/proto/transform/when.hpp>
     #include <boost/proto/transform/impl.hpp>
-    #include <boost/proto/detail/suffix.hpp> // must be last include
 
     // Some compilers (like GCC) need extra help figuring out a template's arity.
     // I use MPL's BOOST_MPL_AUX_LAMBDA_ARITY_PARAM() macro to disambiguate, which
@@ -517,7 +515,8 @@
             {};
         }
 
-        BOOST_PROTO_BEGIN_ADL_NAMESPACE(wildcardns_)
+        namespace wildcardns_
+        {
 
             /// \brief A wildcard grammar element that matches any expression,
             /// and a transform that returns the current expression unchanged.
@@ -586,8 +585,7 @@
                     }
                 };
             };
-
-        BOOST_PROTO_END_ADL_NAMESPACE(wildcardns_)
+        }
 
         namespace control
         {
@@ -679,8 +677,8 @@
             /// \endcode
             template<
                 typename If
-              , typename Then   BOOST_PROTO_WHEN_BUILDING_DOCS(= _)
-              , typename Else   BOOST_PROTO_WHEN_BUILDING_DOCS(= not_<_>)
+              , typename Then   // = _
+              , typename Else   // = not_<_>
             >
             struct if_ : transform<if_<If, Then, Else> >
             {
Modified: trunk/boost/proto/operators.hpp
==============================================================================
--- trunk/boost/proto/operators.hpp	(original)
+++ trunk/boost/proto/operators.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
 #ifndef BOOST_PROTO_OPERATORS_HPP_EAN_04_01_2005
 #define BOOST_PROTO_OPERATORS_HPP_EAN_04_01_2005
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/preprocessor/punctuation/comma.hpp>
 #include <boost/preprocessor/seq/seq.hpp>
 #include <boost/mpl/or.hpp>
@@ -22,7 +21,6 @@
 #include <boost/proto/matches.hpp>
 #include <boost/proto/generate.hpp>
 #include <boost/proto/make_expr.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
@@ -274,63 +272,63 @@
     }                                                                                               \
     /**/
 
-    BOOST_PROTO_BEGIN_ADL_NAMESPACE(exprns_)
-
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(+, tag::unary_plus, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(-, tag::negate, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(*, tag::dereference, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(~, tag::complement, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(&, tag::address_of, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(!, tag::logical_not, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(++, tag::pre_inc, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(--, tag::pre_dec, 0)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(++, tag::post_inc, 1)
-    BOOST_PROTO_DEFINE_UNARY_OPERATOR(--, tag::post_dec, 1)
-
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(<<, tag::shift_left)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(>>, tag::shift_right)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(*, tag::multiplies)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(/, tag::divides)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(%, tag::modulus)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(+, tag::plus)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(-, tag::minus)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(<, tag::less)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(>, tag::greater)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(<=, tag::less_equal)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(>=, tag::greater_equal)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(==, tag::equal_to)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(!=, tag::not_equal_to)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(||, tag::logical_or)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(&&, tag::logical_and)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(&, tag::bitwise_and)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(|, tag::bitwise_or)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(^, tag::bitwise_xor)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(BOOST_PP_COMMA(), tag::comma)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(->*, tag::mem_ptr)
-
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(<<=, tag::shift_left_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(>>=, tag::shift_right_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(*=, tag::multiplies_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(/=, tag::divides_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(%=, tag::modulus_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(+=, tag::plus_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(-=, tag::minus_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(&=, tag::bitwise_and_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(|=, tag::bitwise_or_assign)
-    BOOST_PROTO_DEFINE_BINARY_OPERATOR(^=, tag::bitwise_xor_assign)
-
-    /// if_else
-    ///
-    template<typename A0, typename A1, typename A2>
-    typename functional::make_expr<tag::if_else_>::impl<A0 const &, A1 const &, A2 const &>::result_type const
-    if_else(A0 const &a0, A1 const &a1, A2 const &a2)
+    namespace exprns_
     {
-        return functional::make_expr<tag::if_else_>::impl<A0 const &, A1 const &, A2 const &>()(a0, a1, a2);
-    }
 
-    BOOST_PROTO_END_ADL_NAMESPACE(exprns_)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(+, tag::unary_plus, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(-, tag::negate, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(*, tag::dereference, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(~, tag::complement, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(&, tag::address_of, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(!, tag::logical_not, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(++, tag::pre_inc, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(--, tag::pre_dec, 0)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(++, tag::post_inc, 1)
+        BOOST_PROTO_DEFINE_UNARY_OPERATOR(--, tag::post_dec, 1)
+
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(<<, tag::shift_left)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(>>, tag::shift_right)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(*, tag::multiplies)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(/, tag::divides)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(%, tag::modulus)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(+, tag::plus)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(-, tag::minus)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(<, tag::less)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(>, tag::greater)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(<=, tag::less_equal)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(>=, tag::greater_equal)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(==, tag::equal_to)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(!=, tag::not_equal_to)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(||, tag::logical_or)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(&&, tag::logical_and)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(&, tag::bitwise_and)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(|, tag::bitwise_or)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(^, tag::bitwise_xor)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(BOOST_PP_COMMA(), tag::comma)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(->*, tag::mem_ptr)
+
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(<<=, tag::shift_left_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(>>=, tag::shift_right_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(*=, tag::multiplies_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(/=, tag::divides_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(%=, tag::modulus_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(+=, tag::plus_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(-=, tag::minus_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(&=, tag::bitwise_and_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(|=, tag::bitwise_or_assign)
+        BOOST_PROTO_DEFINE_BINARY_OPERATOR(^=, tag::bitwise_xor_assign)
+
+        /// if_else
+        ///
+        template<typename A0, typename A1, typename A2>
+        typename functional::make_expr<tag::if_else_>::impl<A0 const &, A1 const &, A2 const &>::result_type const
+        if_else(A0 const &a0, A1 const &a1, A2 const &a2)
+        {
+            return functional::make_expr<tag::if_else_>::impl<A0 const &, A1 const &, A2 const &>()(a0, a1, a2);
+        }
+    }
 
-    BOOST_PROTO_WHEN_NOT_BUILDING_DOCS(using exprns_::if_else;)
+    using exprns_::if_else;
 
 #undef BOOST_PROTO_DEFINE_UNARY_OPERATOR
 #undef BOOST_PROTO_DEFINE_BINARY_OPERATOR
@@ -437,13 +435,11 @@
       : mpl::false_
     {};
 
-    #ifndef BOOST_PROTO_BUILDING_DOCS
     namespace exops
     {
         BOOST_PROTO_DEFINE_OPERATORS(is_extension, default_domain)
         using proto::if_else;
     }
-    #endif
 
 }}
 
Modified: trunk/boost/proto/proto.hpp
==============================================================================
--- trunk/boost/proto/proto.hpp	(original)
+++ trunk/boost/proto/proto.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,11 +9,9 @@
 #ifndef BOOST_PROTO_HPP_EAN_04_01_2005
 #define BOOST_PROTO_HPP_EAN_04_01_2005
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/proto/core.hpp>
 #include <boost/proto/debug.hpp>
 #include <boost/proto/context.hpp>
 #include <boost/proto/transform.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 #endif
Modified: trunk/boost/proto/proto_fwd.hpp
==============================================================================
--- trunk/boost/proto/proto_fwd.hpp	(original)
+++ trunk/boost/proto/proto_fwd.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,11 +9,9 @@
 #ifndef BOOST_PROTO_FWD_HPP_EAN_04_01_2005
 #define BOOST_PROTO_FWD_HPP_EAN_04_01_2005
 
-#include <boost/proto/detail/prefix.hpp> // must be first include
 #include <cstddef>
 #include <climits>
 #include <boost/config.hpp>
-#include <boost/version.hpp>
 #include <boost/detail/workaround.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/punctuation/comma.hpp>
@@ -82,59 +80,6 @@
 # endif
 #endif
 
-#if BOOST_VERSION < 103500
-#define BOOST_PROTO_FUSION_DEFINE_TAG(X)        typedef X tag;
-#define BOOST_PROTO_FUSION_DEFINE_CATEGORY(X)
-#define BOOST_PROTO_FUSION_RESULT_OF            meta
-#define BOOST_PROTO_FUSION_EXTENSION            meta
-#define BOOST_PROTO_FUSION_AT_C(N, X)           at<N>(X)
-#else
-#define BOOST_PROTO_FUSION_DEFINE_TAG(X)        typedef X fusion_tag;
-#define BOOST_PROTO_FUSION_DEFINE_CATEGORY(X)   typedef X category;
-#define BOOST_PROTO_FUSION_RESULT_OF            result_of
-#define BOOST_PROTO_FUSION_EXTENSION            extension
-#define BOOST_PROTO_FUSION_AT_C(N, X)           at_c<N>(X)
-#endif
-
-#include <boost/proto/detail/suffix.hpp> // must be last include
-
-#ifdef BOOST_PROTO_BUILDING_DOCS
-// HACKHACK so Doxygen shows inheritance from mpl::true_ and mpl::false_
-namespace boost
-{
-    /// INTERNAL ONLY
-    ///
-    namespace mpl
-    {
-        /// INTERNAL ONLY
-        ///
-        struct true_ {};
-        /// INTERNAL ONLY
-        ///
-        struct false_ {};
-    }
-
-    /// INTERNAL ONLY
-    ///
-    namespace fusion
-    {
-        /// INTERNAL ONLY
-        ///
-        template<typename Function>
-        class unfused_generic {};
-    }
-}
-#define BOOST_PROTO_WHEN_BUILDING_DOCS(x) x
-#define BOOST_PROTO_WHEN_NOT_BUILDING_DOCS(x)
-#define BOOST_PROTO_BEGIN_ADL_NAMESPACE(x)
-#define BOOST_PROTO_END_ADL_NAMESPACE(x)
-#else
-#define BOOST_PROTO_WHEN_BUILDING_DOCS(x)
-#define BOOST_PROTO_WHEN_NOT_BUILDING_DOCS(x) x
-#define BOOST_PROTO_BEGIN_ADL_NAMESPACE(x) namespace x {
-#define BOOST_PROTO_END_ADL_NAMESPACE(x) }
-#endif
-
 namespace boost { namespace proto
 {
     namespace detail
@@ -254,17 +199,17 @@
     }
 
     ////////////////////////////////////////////////////////////////////////////////////////////////
-    BOOST_PROTO_BEGIN_ADL_NAMESPACE(wildcardns_)
+    namespace wildcardns_
+    {
         struct _;
-    BOOST_PROTO_END_ADL_NAMESPACE(wildcardns_)
+    }
     ////////////////////////////////////////////////////////////////////////////////////////////////
 
-    #ifndef BOOST_PROTO_BUILDING_DOCS
     using wildcardns_::_;
-    #endif
 
     ////////////////////////////////////////////////////////////////////////////////////////////////
-    BOOST_PROTO_BEGIN_ADL_NAMESPACE(generatorns_)
+    namespace generatorns_
+    {
         struct default_generator;
 
         template<template<typename> class Extends>
@@ -277,36 +222,34 @@
 
         template<typename First, typename Second>
         struct compose_generators;
-    BOOST_PROTO_END_ADL_NAMESPACE(generatorns_)
+    }
     ////////////////////////////////////////////////////////////////////////////////////////////////
 
-    #ifndef BOOST_PROTO_BUILDING_DOCS
     using generatorns_::default_generator;
     using generatorns_::generator;
     using generatorns_::pod_generator;
     using generatorns_::by_value_generator;
     using generatorns_::compose_generators;
-    #endif
 
     ////////////////////////////////////////////////////////////////////////////////////////////////
-    BOOST_PROTO_BEGIN_ADL_NAMESPACE(domainns_)
+    namespace domainns_
+    {
         template<typename Generator = default_generator, typename Grammar = proto::_>
         struct domain;
 
         struct default_domain;
 
         struct deduce_domain;
-    BOOST_PROTO_END_ADL_NAMESPACE(domainns_)
+    }
     ////////////////////////////////////////////////////////////////////////////////////////////////
 
-    #ifndef BOOST_PROTO_BUILDING_DOCS
     using domainns_::domain;
     using domainns_::default_domain;
     using domainns_::deduce_domain;
-    #endif
 
     ////////////////////////////////////////////////////////////////////////////////////////////////
-    BOOST_PROTO_BEGIN_ADL_NAMESPACE(exprns_)
+    namespace exprns_
+    {
         template<typename Tag, typename Args, long Arity = Args::arity>
         struct expr;
 
@@ -322,14 +265,12 @@
         struct virtual_member;
         
         struct is_proto_expr;
-    BOOST_PROTO_END_ADL_NAMESPACE(exprns_)
+    }
     ////////////////////////////////////////////////////////////////////////////////////////////////
 
-    #ifndef BOOST_PROTO_BUILDING_DOCS
     using exprns_::expr;
     using exprns_::extends;
     using exprns_::is_proto_expr;
-    #endif
 
     namespace control
     {
Modified: trunk/boost/proto/proto_typeof.hpp
==============================================================================
--- trunk/boost/proto/proto_typeof.hpp	(original)
+++ trunk/boost/proto/proto_typeof.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,13 +10,11 @@
 #ifndef BOOST_XPRESSIVE_PROTO_PROTO_TYPEOF_H
 #define BOOST_XPRESSIVE_PROTO_PROTO_TYPEOF_H
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/config.hpp>
 #include <boost/typeof/typeof.hpp>
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/deep_copy.hpp>
 #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-#include <boost/proto/detail/suffix.hpp>
 
 BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::terminal)
 BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::unary_plus)
Modified: trunk/boost/proto/repeat.hpp
==============================================================================
--- trunk/boost/proto/repeat.hpp	(original)
+++ trunk/boost/proto/repeat.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,7 +9,6 @@
 #ifndef BOOST_PROTO_REPEAT_HPP_EAN_11_24_2008
 #define BOOST_PROTO_REPEAT_HPP_EAN_11_24_2008
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/facilities/intercept.hpp>
 #include <boost/preprocessor/repetition/enum.hpp>
@@ -18,7 +17,6 @@
 #include <boost/preprocessor/iteration/local.hpp>
 #include <boost/preprocessor/tuple/elem.hpp>
 #include <boost/proto/proto_fwd.hpp> // for BOOST_PROTO_MAX_ARITY
-#include <boost/proto/detail/suffix.hpp>
 
 ////////////////////////////////////////////
 /// INTERNAL ONLY
Modified: trunk/boost/proto/tags.hpp
==============================================================================
--- trunk/boost/proto/tags.hpp	(original)
+++ trunk/boost/proto/tags.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,9 +9,7 @@
 #ifndef BOOST_PROTO_TAGS_HPP_EAN_04_01_2005
 #define BOOST_PROTO_TAGS_HPP_EAN_04_01_2005
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/proto/proto_fwd.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto { namespace tag
 {
Modified: trunk/boost/proto/traits.hpp
==============================================================================
--- trunk/boost/proto/traits.hpp	(original)
+++ trunk/boost/proto/traits.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -12,7 +12,6 @@
     #ifndef BOOST_PROTO_ARG_TRAITS_HPP_EAN_04_01_2005
     #define BOOST_PROTO_ARG_TRAITS_HPP_EAN_04_01_2005
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/config.hpp>
     #include <boost/detail/workaround.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
@@ -44,7 +43,6 @@
     #include <boost/proto/args.hpp>
     #include <boost/proto/tags.hpp>
     #include <boost/proto/transform/pass_through.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     #if BOOST_WORKAROUND( BOOST_MSVC, >= 1400 )
         #pragma warning(push)
@@ -155,7 +153,7 @@
         {};
 
         /// TODO document me!
-        template<typename T, typename Void BOOST_PROTO_WHEN_BUILDING_DOCS(= void)>
+        template<typename T, typename Void /* = void*/>
         struct is_transform
           : mpl::false_
         {};
@@ -176,7 +174,7 @@
             /// from <tt>proto::extends\<\></tt> or that uses the
             /// <tt>BOOST_PROTO_BASIC_EXTENDS()</tt> macro.) Otherwise,
             /// <tt>is_expr\<T\>::::value</tt> is \c false.
-            template<typename T, typename Void  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)>
+            template<typename T, typename Void /* = void*/>
             struct is_expr
               : mpl::false_
             {};
@@ -242,10 +240,10 @@
             /// <tt>boost::result_of\<Domain(expr\< tag::terminal, term\<A\> \>)\>::::type</tt>.
             template<
                 typename T
-              , typename Domain BOOST_PROTO_WHEN_BUILDING_DOCS(= default_domain)
-              , typename Void   BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
+              , typename Domain // = default_domain
+              , typename Void   // = void
               #ifdef BOOST_PROTO_BROKEN_PTS
-              , typename Void2  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
+              , typename Void2  // = void
               #endif
             >
             struct as_expr
@@ -337,10 +335,10 @@
             /// <tt>boost::result_of\<Domain(expr\< tag::terminal, term\<T &\> \>)\>::::type</tt>.
             template<
                 typename T
-              , typename Domain BOOST_PROTO_WHEN_BUILDING_DOCS(= default_domain)
-              , typename Void   BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
+              , typename Domain // = default_domain
+              , typename Void   // = void
               #ifdef BOOST_PROTO_BROKEN_PTS
-              , typename Void2  BOOST_PROTO_WHEN_BUILDING_DOCS(= void)
+              , typename Void2  // = void
               #endif
             >
             struct as_child
@@ -432,7 +430,7 @@
             ///
             /// <tt>result_of::child\<Expr, N\></tt> is equivalent to
             /// <tt>result_of::child_c\<Expr, N::value\></tt>.
-            template<typename Expr, typename N  BOOST_PROTO_WHEN_BUILDING_DOCS(= mpl::long_<0>) >
+            template<typename Expr, typename N /* = mpl::long_<0>*/>
             struct child
               : child_c<Expr, N::value>
             {};
@@ -791,7 +789,7 @@
         {
             /// \brief A callable PolymorphicFunctionObject that is
             /// equivalent to the \c as_expr() function.
-            template<typename Domain    BOOST_PROTO_WHEN_BUILDING_DOCS(= default_domain)>
+            template<typename Domain   /* = default_domain*/>
             struct as_expr
             {
                 BOOST_PROTO_CALLABLE()
@@ -845,7 +843,7 @@
 
             /// \brief A callable PolymorphicFunctionObject that is
             /// equivalent to the \c as_child() function.
-            template<typename Domain    BOOST_PROTO_WHEN_BUILDING_DOCS(= default_domain)>
+            template<typename Domain   /* = default_domain*/>
             struct as_child
             {
                 BOOST_PROTO_CALLABLE()
@@ -926,7 +924,7 @@
             /// A callable PolymorphicFunctionObject that is
             /// equivalent to the \c child() function. \c N is required
             /// to be an MPL Integral Constant.
-            template<typename N BOOST_PROTO_WHEN_BUILDING_DOCS(= mpl::long_<0>) >
+            template<typename N /* = mpl::long_<0>*/>
             struct child
             {
                 BOOST_PROTO_CALLABLE()
Modified: trunk/boost/proto/transform.hpp
==============================================================================
--- trunk/boost/proto/transform.hpp	(original)
+++ trunk/boost/proto/transform.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,7 +9,6 @@
 #ifndef BOOST_PROTO_TRANSFORM_HPP_EAN_06_23_2007
 #define BOOST_PROTO_TRANSFORM_HPP_EAN_06_23_2007
 
-#include <boost/proto/detail/prefix.hpp> // must be first include
 #include <boost/proto/transform/arg.hpp>
 #include <boost/proto/transform/call.hpp>
 #include <boost/proto/transform/default.hpp>
@@ -19,6 +18,5 @@
 #include <boost/proto/transform/make.hpp>
 #include <boost/proto/transform/pass_through.hpp>
 #include <boost/proto/transform/when.hpp>
-#include <boost/proto/detail/suffix.hpp> // must be last include
 
 #endif
Modified: trunk/boost/proto/transform/arg.hpp
==============================================================================
--- trunk/boost/proto/transform/arg.hpp	(original)
+++ trunk/boost/proto/transform/arg.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,12 +9,10 @@
 #ifndef BOOST_PROTO_TRANSFORM_ARG_HPP_EAN_11_01_2007
 #define BOOST_PROTO_TRANSFORM_ARG_HPP_EAN_11_01_2007
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/transform/impl.hpp>
 #include <boost/type_traits/is_array.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
Modified: trunk/boost/proto/transform/call.hpp
==============================================================================
--- trunk/boost/proto/transform/call.hpp	(original)
+++ trunk/boost/proto/transform/call.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
     #ifndef BOOST_PROTO_TRANSFORM_CALL_HPP_EAN_11_02_2007
     #define BOOST_PROTO_TRANSFORM_CALL_HPP_EAN_11_02_2007
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/preprocessor/cat.hpp>
     #include <boost/preprocessor/facilities/intercept.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
@@ -27,7 +26,6 @@
     #include <boost/proto/detail/dont_care.hpp>
     #include <boost/proto/detail/as_lvalue.hpp>
     #include <boost/proto/detail/poly_function.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
Modified: trunk/boost/proto/transform/default.hpp
==============================================================================
--- trunk/boost/proto/transform/default.hpp	(original)
+++ trunk/boost/proto/transform/default.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -11,7 +11,6 @@
     #ifndef BOOST_PROTO_TRANSFORM_DEFAULT_HPP_EAN_04_04_2008
     #define BOOST_PROTO_TRANSFORM_DEFAULT_HPP_EAN_04_04_2008
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
     #include <boost/preprocessor/repetition/repeat.hpp>
     #include <boost/preprocessor/repetition/enum_shifted.hpp>
@@ -27,11 +26,10 @@
     #include <boost/proto/transform/impl.hpp>
     #include <boost/proto/transform/arg.hpp>
     #include <boost/proto/detail/decltype.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
-        template<typename Grammar BOOST_PROTO_WHEN_BUILDING_DOCS(= detail::_default)>
+        template<typename Grammar /*= detail::_default*/>
         struct _default
           : transform<_default<Grammar> >
         {
Modified: trunk/boost/proto/transform/fold.hpp
==============================================================================
--- trunk/boost/proto/transform/fold.hpp	(original)
+++ trunk/boost/proto/transform/fold.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,24 +10,17 @@
     #ifndef BOOST_PROTO_TRANSFORM_FOLD_HPP_EAN_11_04_2007
     #define BOOST_PROTO_TRANSFORM_FOLD_HPP_EAN_11_04_2007
 
-    #include <boost/proto/detail/prefix.hpp>
-    #include <boost/version.hpp>
     #include <boost/preprocessor/cat.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
     #include <boost/preprocessor/arithmetic/inc.hpp>
     #include <boost/preprocessor/arithmetic/sub.hpp>
     #include <boost/preprocessor/repetition/repeat.hpp>
-    #if BOOST_VERSION >= 103500
     #include <boost/fusion/include/fold.hpp>
-    #else
-    #include <boost/spirit/fusion/algorithm/fold.hpp>
-    #endif
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/fusion.hpp>
     #include <boost/proto/traits.hpp>
     #include <boost/proto/transform/call.hpp>
     #include <boost/proto/transform/impl.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
@@ -43,24 +36,17 @@
                 template<typename Sig>
                 struct result;
 
-                template<typename This, typename Expr, typename State>
-                struct result<This(Expr, State)>
+                template<typename This, typename State, typename Expr>
+                struct result<This(State, Expr)>
                 {
                     typedef
                         typename when<_, Transform>::template impl<Expr, State, Data>::result_type
                     type;
                 };
 
-                #if BOOST_VERSION < 103500
-                template<typename Expr, typename State>
-                struct apply
-                  : result<as_callable(Expr, State)>
-                {};
-                #endif
-
-                template<typename Expr, typename State>
+                template<typename State, typename Expr>
                 typename when<_, Transform>::template impl<Expr &, State const &, Data>::result_type
-                operator ()(Expr &e, State const &s) const
+                operator ()(State const &s, Expr &e) const
                 {
                     return typename when<_, Transform>::template impl<Expr &, State const &, Data>()(e, s, this->v_);
                 }
@@ -69,38 +55,6 @@
                 Data v_;
             };
 
-            #if BOOST_VERSION < 103500
-            template<typename Sequence, typename Void = void>
-            struct as_fusion_sequence_type
-            {
-                typedef Sequence const type;
-            };
-
-            template<typename Sequence>
-            Sequence const &as_fusion_sequence(Sequence const &sequence, ...)
-            {
-                return sequence;
-            }
-
-            template<typename Sequence>
-            struct as_fusion_sequence_type<Sequence, typename Sequence::proto_is_expr_>
-            {
-                typedef typename Sequence::proto_base_expr const type;
-            };
-
-            template<typename Sequence>
-            typename Sequence::proto_base_expr const &as_fusion_sequence(Sequence const &sequence, int)
-            {
-                return sequence.proto_base();
-            }
-
-            #define BOOST_PROTO_AS_FUSION_SEQUENCE_TYPE(X) typename detail::as_fusion_sequence_type<X>::type
-            #define BOOST_PROTO_AS_FUSION_SEQUENCE(X) detail::as_fusion_sequence(X, 0)
-            #else
-            #define BOOST_PROTO_AS_FUSION_SEQUENCE_TYPE(X) X
-            #define BOOST_PROTO_AS_FUSION_SEQUENCE(X) X
-            #endif
-
             template<
                 typename State0
               , typename Fun
@@ -220,8 +174,8 @@
                 fun;
 
                 typedef
-                    typename fusion::BOOST_PROTO_FUSION_RESULT_OF::fold<
-                        BOOST_PROTO_AS_FUSION_SEQUENCE_TYPE(sequence)
+                    typename fusion::result_of::fold<
+                        sequence
                       , state0
                       , fun
                     >::type
@@ -245,7 +199,7 @@
                     typename when<_, Sequence>::template impl<Expr, State, Data> seq;
                     detail::as_callable<Fun, Data> f(d);
                     return fusion::fold(
-                        BOOST_PROTO_AS_FUSION_SEQUENCE(seq(e, s, d))
+                        seq(e, s, d)
                       , typename when<_, State0>::template impl<Expr, State, Data>()(e, s, d)
                       , f
                     );
Modified: trunk/boost/proto/transform/fold_tree.hpp
==============================================================================
--- trunk/boost/proto/transform/fold_tree.hpp	(original)
+++ trunk/boost/proto/transform/fold_tree.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,14 +9,12 @@
 #ifndef BOOST_PROTO_TRANSFORM_FOLD_TREE_HPP_EAN_11_05_2007
 #define BOOST_PROTO_TRANSFORM_FOLD_TREE_HPP_EAN_11_05_2007
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/matches.hpp>
 #include <boost/proto/transform/fold.hpp>
 #include <boost/proto/transform/impl.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
Modified: trunk/boost/proto/transform/impl.hpp
==============================================================================
--- trunk/boost/proto/transform/impl.hpp	(original)
+++ trunk/boost/proto/transform/impl.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -9,9 +9,7 @@
 #ifndef BOOST_PROTO_TRANSFORM_IMPL_HPP_EAN_04_03_2008
 #define BOOST_PROTO_TRANSFORM_IMPL_HPP_EAN_04_03_2008
 
-#include <boost/proto/detail/prefix.hpp>
 #include <boost/proto/proto_fwd.hpp>
-#include <boost/proto/detail/suffix.hpp>
 
 namespace boost { namespace proto
 {
Modified: trunk/boost/proto/transform/lazy.hpp
==============================================================================
--- trunk/boost/proto/transform/lazy.hpp	(original)
+++ trunk/boost/proto/transform/lazy.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
     #ifndef BOOST_PROTO_TRANSFORM_LAZY_HPP_EAN_12_02_2007
     #define BOOST_PROTO_TRANSFORM_LAZY_HPP_EAN_12_02_2007
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
     #include <boost/preprocessor/repetition/enum_params.hpp>
     #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
@@ -18,7 +17,6 @@
     #include <boost/proto/transform/make.hpp>
     #include <boost/proto/transform/call.hpp>
     #include <boost/proto/transform/impl.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
Modified: trunk/boost/proto/transform/make.hpp
==============================================================================
--- trunk/boost/proto/transform/make.hpp	(original)
+++ trunk/boost/proto/transform/make.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
     #ifndef BOOST_PROTO_TRANSFORM_MAKE_HPP_EAN_12_02_2007
     #define BOOST_PROTO_TRANSFORM_MAKE_HPP_EAN_12_02_2007
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/detail/workaround.hpp>
     #include <boost/preprocessor/repetition/enum.hpp>
     #include <boost/preprocessor/repetition/enum_params.hpp>
@@ -35,7 +34,6 @@
     #include <boost/proto/transform/impl.hpp>
     #include <boost/proto/detail/as_lvalue.hpp>
     #include <boost/proto/detail/ignore_unused.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
Modified: trunk/boost/proto/transform/pass_through.hpp
==============================================================================
--- trunk/boost/proto/transform/pass_through.hpp	(original)
+++ trunk/boost/proto/transform/pass_through.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -13,7 +13,6 @@
     #ifndef BOOST_PROTO_TRANSFORM_PASS_THROUGH_HPP_EAN_12_26_2006
     #define BOOST_PROTO_TRANSFORM_PASS_THROUGH_HPP_EAN_12_26_2006
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/preprocessor/cat.hpp>
     #include <boost/preprocessor/repetition/enum.hpp>
     #include <boost/preprocessor/iteration/iterate.hpp>
@@ -22,7 +21,6 @@
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/args.hpp>
     #include <boost/proto/transform/impl.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
Modified: trunk/boost/proto/transform/when.hpp
==============================================================================
--- trunk/boost/proto/transform/when.hpp	(original)
+++ trunk/boost/proto/transform/when.hpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,7 +10,6 @@
     #ifndef BOOST_PROTO_TRANSFORM_WHEN_HPP_EAN_10_29_2007
     #define BOOST_PROTO_TRANSFORM_WHEN_HPP_EAN_10_29_2007
 
-    #include <boost/proto/detail/prefix.hpp>
     #include <boost/preprocessor/cat.hpp>
     #include <boost/preprocessor/repetition/enum_params.hpp>
     #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
@@ -21,7 +20,6 @@
     #include <boost/proto/transform/call.hpp>
     #include <boost/proto/transform/make.hpp>
     #include <boost/proto/transform/impl.hpp>
-    #include <boost/proto/detail/suffix.hpp>
 
     namespace boost { namespace proto
     {
@@ -53,7 +51,7 @@
         ///
         /// <tt>when\<G,T\>()(e,s,v)</tt> is the same as
         /// <tt>T()(e,s,v)</tt>.
-        template<typename Grammar, typename PrimitiveTransform BOOST_PROTO_WHEN_BUILDING_DOCS(= Grammar)>
+        template<typename Grammar, typename PrimitiveTransform /*= Grammar*/>
         struct when
           : PrimitiveTransform
         {
Modified: trunk/libs/proto/test/examples.cpp
==============================================================================
--- trunk/libs/proto/test/examples.cpp	(original)
+++ trunk/libs/proto/test/examples.cpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -11,14 +11,9 @@
 #include <boost/proto/core.hpp>
 #include <boost/proto/transform.hpp>
 #include <boost/utility/result_of.hpp>
-#if BOOST_VERSION < 103500
-# include <boost/spirit/fusion/sequence/cons.hpp>
-# include <boost/spirit/fusion/sequence/tuple.hpp>
-#else
-# include <boost/fusion/include/cons.hpp>
-# include <boost/fusion/include/tuple.hpp>
-# include <boost/fusion/include/pop_front.hpp>
-#endif
+#include <boost/fusion/include/cons.hpp>
+#include <boost/fusion/include/tuple.hpp>
+#include <boost/fusion/include/pop_front.hpp>
 #include <boost/test/unit_test.hpp>
 
 namespace mpl = boost::mpl;
Modified: trunk/libs/proto/test/lambda.cpp
==============================================================================
--- trunk/libs/proto/test/lambda.cpp	(original)
+++ trunk/libs/proto/test/lambda.cpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -6,19 +6,12 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <sstream>
-#include <boost/version.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/min_max.hpp>
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/mpl/next_prior.hpp>
-#if BOOST_VERSION < 103500
-# include <boost/spirit/fusion/sequence/at.hpp>
-# include <boost/spirit/fusion/sequence/tuple.hpp>
-namespace boost { namespace fusion { namespace result_of { using namespace meta; }}}
-#else
-# include <boost/fusion/tuple.hpp>
-#endif
+#include <boost/fusion/tuple.hpp>
 #include <boost/typeof/typeof.hpp>
 #include <boost/typeof/std/sstream.hpp>
 #include <boost/typeof/std/ostream.hpp>
@@ -95,11 +88,7 @@
     typename fusion::result_of::at<Tuple, I>::type
     operator ()(proto::tag::terminal, placeholder<I> const &) const
     {
-        #if BOOST_VERSION < 103500
-        return fusion::at<I::value>(this->args_);
-        #else
         return fusion::at<I>(this->args_);
-        #endif
     }
 
     Tuple args_;
Modified: trunk/libs/proto/test/make_expr.cpp
==============================================================================
--- trunk/libs/proto/test/make_expr.cpp	(original)
+++ trunk/libs/proto/test/make_expr.cpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -6,15 +6,10 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <sstream>
-#include <boost/version.hpp>
 #include <boost/proto/core.hpp>
 #include <boost/proto/transform.hpp>
 #include <boost/utility/addressof.hpp>
-#if BOOST_VERSION >= 103500
 #include <boost/fusion/tuple.hpp>
-#else
-#include <boost/spirit/fusion/sequence/make_tuple.hpp>
-#endif
 #include <boost/test/unit_test.hpp>
 
 using namespace boost;
Modified: trunk/libs/proto/test/proto_fusion.cpp
==============================================================================
--- trunk/libs/proto/test/proto_fusion.cpp	(original)
+++ trunk/libs/proto/test/proto_fusion.cpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -5,11 +5,6 @@
 //  Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <boost/version.hpp>
-#if BOOST_VERSION < 103500
-# error This test only works on Boost v1.35
-#endif
-
 #include <boost/proto/core.hpp>
 #include <boost/proto/fusion.hpp>
 #include <boost/fusion/include/for_each.hpp>
Modified: trunk/libs/proto/test/proto_fusion_s.cpp
==============================================================================
--- trunk/libs/proto/test/proto_fusion_s.cpp	(original)
+++ trunk/libs/proto/test/proto_fusion_s.cpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -5,11 +5,6 @@
 //  Software License, Version 1.0. (See accompanying file
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-#include <boost/version.hpp>
-#if BOOST_VERSION < 103500
-# error This test only works on Boost v1.35
-#endif
-
 #include <boost/proto/core.hpp>
 #include <boost/proto/fusion.hpp>
 #include <boost/fusion/algorithm/iteration/ext_/for_each_s.hpp>
Modified: trunk/libs/proto/test/toy_spirit2.cpp
==============================================================================
--- trunk/libs/proto/test/toy_spirit2.cpp	(original)
+++ trunk/libs/proto/test/toy_spirit2.cpp	2009-10-26 11:15:05 EDT (Mon, 26 Oct 2009)
@@ -10,24 +10,16 @@
 #include <cstring>
 #include <iomanip>
 #include <iostream>
-#include <boost/version.hpp>
 #include <boost/assert.hpp>
 #include <boost/mpl/assert.hpp>
 #include <boost/utility/result_of.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/proto/core.hpp>
 #include <boost/proto/transform.hpp>
-#if BOOST_VERSION < 103500
-# include <boost/spirit/fusion/algorithm/for_each.hpp>
-# include <boost/spirit/fusion/algorithm/fold.hpp>
-# include <boost/spirit/fusion/algorithm/any.hpp>
-# include <boost/spirit/fusion/sequence/cons.hpp>
-#else
-# include <boost/fusion/include/for_each.hpp>
-# include <boost/fusion/include/fold.hpp>
-# include <boost/fusion/include/cons.hpp>
-# include <boost/fusion/include/any.hpp>
-#endif
+#include <boost/fusion/include/for_each.hpp>
+#include <boost/fusion/include/fold.hpp>
+#include <boost/fusion/include/cons.hpp>
+#include <boost/fusion/include/any.hpp>
 #include <boost/test/unit_test.hpp>
 
 namespace boost
@@ -291,18 +283,10 @@
           : parse(p)
         {}
 
-        #if BOOST_VERSION < 103500
-        template<typename, typename>
-        struct apply
-        {
-            typedef bool type;
-        };
-        #else
         typedef bool result_type;
-        #endif
 
         template<typename T>
-        bool operator ()(T const &t, bool success) const
+        bool operator ()(bool success, T const &t) const
         {
             return success && this->parse(t);
         }