Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r60988 - in sandbox/SOC/2009/fusion/boost/fusion: adapted adapted/detail/struct adapted/struct algorithm/query/detail include iterator sequence/comparison/detail support support/internal
From: mr.chr.schmidt_at_[hidden]
Date: 2010-04-01 07:45:27


Author: cschmidt
Date: 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
New Revision: 60988
URL: http://svn.boost.org/trac/boost/changeset/60988

Log:
added intrusive struct generating macros
Added:
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/define_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/namespace.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/define_assoc_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/define_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/define_assoc_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/define_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/constexpr.hpp (contents, props changed)
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp | 6 +++---
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp | 37 +++----------------------------------
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp | 2 ++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp | 8 +++-----
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp | 9 +++------
   sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp | 13 +++----------
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp | 12 +++---------
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp | 9 +++------
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp | 9 +++------
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp | 9 +++------
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp | 9 +++------
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp | 9 +++------
   sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp | 2 ++
   13 files changed, 37 insertions(+), 97 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -92,18 +92,18 @@
     { \
         typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
                                                                                 \
- template<typename Seq> \
+ template<typename SeqRef> \
         struct apply \
         { \
             typedef typename \
                 detail::forward_as< \
- Seq \
+ SeqRef \
                   , BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \
>::type \
             type; \
                                                                                 \
             static type \
- call(Seq seq) \
+ call(SeqRef seq) \
             { \
                 return seq.PREFIX \
                     BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE); \

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/define_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/define_struct.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -0,0 +1,447 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP
+
+#include <boost/config.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/advance_c.hpp>
+#include <boost/fusion/adapted/detail/struct/adapt_base.hpp>
+#include <boost/fusion/adapted/detail/struct/namespace.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/sequence_assign.hpp>
+#include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/if.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/logical/not.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/seq/seq.hpp>
+#include <boost/preprocessor/seq/for_each.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#ifndef BOOST_NO_RVALUE_REFERENCES
+# include <boost/preprocessor/repetition/enum_params.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#else
+# include <boost/call_traits.hpp>
+#endif
+#include <boost/utility/enable_if.hpp>
+
+#define BOOST_FUSION_DEFINE_STRUCT_COPY_MOVE_CTOR_FILLER_I( \
+ R, DATA, I, ATTRIBUTE) \
+ \
+ BOOST_PP_COMMA_IF(I) \
+ BOOST_PP_TUPLE_ELEM(BOOST_PP_TUPLE_ELEM(3,2,DATA),1,ATTRIBUTE)( \
+ static_cast<self_type BOOST_PP_TUPLE_ELEM(3,0,DATA)>(other_self). \
+ BOOST_PP_TUPLE_ELEM(BOOST_PP_TUPLE_ELEM(3,2,DATA),1,ATTRIBUTE))
+
+#define BOOST_FUSION_DEFINE_STRUCT_COPY_MOVE_CTOR(MODIFIER,DATA) \
+ BOOST_PP_TUPLE_ELEM(3,0,DATA)(self_type MODIFIER other_self) \
+ : BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_COPY_MOVE_CTOR_FILLER_I, \
+ ( \
+ MODIFIER, \
+ BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(3,1,DATA)), \
+ BOOST_PP_TUPLE_ELEM(3,2,DATA) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(3,1,DATA)) \
+ {}
+
+#define BOOST_FUSION_DEFINE_STRUCT_ASSIGN_FILLER_I( \
+ R, ATTRIBUTE_TUPEL_SIZE, I_, ATTRIBUTE) \
+ \
+ BOOST_PP_IF( \
+ I_, \
+ typedef typename \
+ boost::fusion::result_of::next< \
+ BOOST_PP_CAT(I,BOOST_PP_DEC(I_))& \
+ >::type \
+ BOOST_PP_CAT(I,I_); \
+ BOOST_PP_CAT(I,I_) BOOST_PP_CAT(i,I_)= \
+ boost::fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(I_)));, \
+ BOOST_PP_EMPTY() \
+ ) \
+ \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)= \
+ boost::fusion::deref(BOOST_PP_CAT(i,I_));
+
+#define BOOST_FUSION_DEFINE_STRUCT_ASSIGN_OP( \
+ ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ template<typename Seq> \
+ self_type& \
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq) \
+ { \
+ BOOST_FUSION_STATIC_ASSERT(( \
+ BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)==result_of::size<Seq>::value)); \
+ \
+ typedef typename \
+ boost::fusion::result_of::begin< \
+ BOOST_FUSION_R_ELSE_CLREF(Seq) \
+ >::type \
+ I0; \
+ I0 i0=boost::fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)); \
+ \
+ BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_ASSIGN_FILLER_I, \
+ ATTRIBUTE_TUPEL_SIZE, \
+ ATTRIBUTES_SEQ) \
+ \
+ return *this; \
+ }
+
+#define BOOST_FUSION_DEFINE_STRUCT_ATTR_I(R, ATTRIBUTE_TUPEL_SIZE, ATTRIBUTE) \
+ \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,0,ATTRIBUTE) \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE);
+
+#define BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_FILLER_I( \
+ R, DATA, I, ATTRIBUTE) \
+ \
+ BOOST_PP_COMMA_IF(I) \
+ BOOST_PP_TUPLE_ELEM(BOOST_PP_TUPLE_ELEM(2,1,DATA),1,ATTRIBUTE)( \
+ boost::fusion::deref(boost::fusion::advance_c<I>(boost::fusion::begin( \
+ BOOST_PP_TUPLE_ELEM(2,0,DATA)))))
+
+#define BOOST_FUSION_DEFINE_STRUCT_SEQ_ASSIGN_CTOR(MODIFIER, DATA) \
+ \
+ template<typename SeqRef> \
+ BOOST_PP_TUPLE_ELEM(3, 0, DATA)( \
+ boost::fusion::detail::sequence_assign_type<SeqRef> MODIFIER seq_assign)\
+ : BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_FILLER_I, \
+ ( \
+ seq_assign.get(), \
+ BOOST_PP_TUPLE_ELEM(3, 2, DATA) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(3, 1, DATA)) \
+ { \
+ BOOST_FUSION_STATIC_ASSERT(( \
+ BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(3, 1, DATA))== \
+ result_of::size<SeqRef>::value));\
+ }
+
+#define BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_DISABLER( \
+ ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ , typename boost::disable_if< \
+ boost::fusion::detail::is_explicitly_convertible< \
+ BOOST_FUSION_R_ELSE_CLREF(Seq) \
+ , BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE, \
+ 0, \
+ BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))) \
+ > \
+ >::type* =0
+
+#define BOOST_FUSION_DEFINE_STRUCT_SEQ_DEFAULT_CTOR_FILLER_I( \
+ R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \
+ \
+ BOOST_PP_COMMA_IF(I) \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)()
+
+#define BOOST_FUSION_DEFINE_STRUCT_IMPL_IMPL( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_PP_SEQ_FOR_EACH_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_ATTR_I, \
+ ATTRIBUTE_TUPEL_SIZE, \
+ ATTRIBUTES_SEQ) \
+ \
+ BOOST_FUSION_CONSTEXPR \
+ NAME() \
+ : BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_SEQ_DEFAULT_CTOR_FILLER_I, \
+ ATTRIBUTE_TUPEL_SIZE, \
+ ATTRIBUTES_SEQ) \
+ {} \
+ \
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS( \
+ BOOST_FUSION_DEFINE_STRUCT_COPY_MOVE_CTOR, \
+ (NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE)) \
+ \
+ template<typename Seq> \
+ NAME(BOOST_FUSION_R_ELSE_CLREF(Seq) seq \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \
+ BOOST_PP_TUPLE_EAT(2), \
+ BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_DISABLER)( \
+ ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ ) \
+ : BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_FILLER_I, \
+ ( \
+ BOOST_FUSION_FORWARD(Seq,seq), \
+ ATTRIBUTE_TUPEL_SIZE \
+ ), \
+ ATTRIBUTES_SEQ) \
+ { \
+ BOOST_FUSION_STATIC_ASSERT(( \
+ BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)==result_of::size<SeqRef>::value));\
+ } \
+ \
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS( \
+ BOOST_FUSION_DEFINE_STRUCT_SEQ_ASSIGN_CTOR, \
+ (NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE)) \
+ \
+ BOOST_FUSION_DEFINE_STRUCT_ASSIGN_OP(ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE)
+
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ template<typename Arg> \
+ explicit \
+ NAME(BOOST_FUSION_R_ELSE_CLREF(Arg) arg \
+ , typename boost::enable_if< \
+ boost::fusion::detail::is_explicitly_convertible< \
+ BOOST_FUSION_R_ELSE_CLREF(Arg) \
+ , BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,0,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ)) \
+ > \
+ >::type* =0) \
+ : BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,1,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))( \
+ BOOST_FUSION_FORWARD(Arg,arg)) \
+ {} \
+ \
+ template<typename Arg1, typename Arg2, typename... Args> \
+ NAME(BOOST_FUSION_R_ELSE_CLREF(Arg1) arg1 \
+ , BOOST_FUSION_R_ELSE_CLREF(Arg2) arg2 \
+ , BOOST_FUSION_R_ELSE_CLREF(Args)... args) \
+ : BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,1,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))( \
+ BOOST_FUSION_FORWARD(Arg1,arg1), \
+ BOOST_FUSION_FORWARD(Arg2,arg2), \
+ BOOST_FUSION_FORWARD(Args,args)...) \
+ {}
+
+# define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \
+ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE)
+#elif defined(BOOST_NO_RVALUE_REFERENCES)
+# define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ explicit \
+ NAME(boost::call_traits< \
+ BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,0,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ)) \
+ >::param_type arg) \
+ : BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,1,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))(arg) \
+ {}
+
+# define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \
+ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ explicit \
+ NAME(typename boost::call_traits< \
+ typename boost::fusion::detail::get_first_arg< \
+ BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE, \
+ 0, \
+ BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ)) \
+ , BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ) \
+ >::type \
+ >::param_type arg) \
+ : BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,1,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))(arg) \
+ {}
+#else
+# define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ template<typename Arg> \
+ explicit \
+ NAME(Arg&& arg \
+ , typename enable_if< \
+ detail::is_explicitly_convertible< \
+ Arg&& \
+ , BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,0,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ)) \
+ > \
+ >::type* =0) \
+ : BOOST_PP_TUPLE_ELEM( \
+ ATTRIBUTE_TUPEL_SIZE,1,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))( \
+ std::forward<Arg>(arg)) \
+ {}
+
+# define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \
+ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE)
+#endif
+
+#define BOOST_FUSION_DEFINE_STRUCT_CTOR_FILLER_I( \
+ R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \
+ \
+ BOOST_PP_COMMA_IF(I) \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)( \
+ BOOST_FUSION_FORWARD(BOOST_PP_CAT(A,I),BOOST_PP_CAT(_,I)))
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+# define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I(R, DATA, I, ATTRIBUTE) \
+ \
+ BOOST_PP_COMMA_IF(I) \
+ typename boost::call_traits< \
+ typename boost::fusion::detail::get_first_arg< \
+ BOOST_PP_TUPLE_ELEM( \
+ BOOST_PP_TUPLE_ELEM(3,0,DATA), \
+ 0, \
+ ATTRIBUTE) \
+ , BOOST_PP_TUPLE_ELEM(3,2,DATA) \
+ >::type \
+ >::param_type BOOST_PP_CAT(_,I)
+
+# define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N( \
+ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I, \
+ ( \
+ ATTRIBUTE_TUPEL_SIZE, \
+ BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \
+ BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ) \
+ ), \
+ ATTRIBUTES_SEQ)) \
+ : BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_FILLER_I, \
+ ATTRIBUTE_TUPEL_SIZE, \
+ ATTRIBUTES_SEQ) \
+ {}
+
+# define BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I( \
+ R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \
+ \
+ BOOST_PP_COMMA_IF(I) \
+ boost::call_traits< \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,0,ATTRIBUTE) \
+ >::param_type BOOST_PP_CAT(_,I)
+
+# define BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I, \
+ ATTRIBUTE_TUPEL_SIZE, \
+ ATTRIBUTES_SEQ)) \
+ : BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_FILLER_I, \
+ ATTRIBUTE_TUPEL_SIZE, \
+ ATTRIBUTES_SEQ) \
+ {}
+#else
+# define BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ template< \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), typename A) \
+ > \
+ NAME(BOOST_PP_ENUM_BINARY_PARAMS( \
+ BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), A,&& _)) \
+ : BOOST_PP_SEQ_FOR_EACH_I_R( \
+ 1, \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_FILLER_I, \
+ ATTRIBUTE_TUPEL_SIZE, \
+ ATTRIBUTES_SEQ) \
+ {}
+
+# define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N( \
+ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE)
+#endif
+
+#define BOOST_FUSION_DEFINE_STRUCT_CTOR(ATTRIBUTES_SEQ) \
+ BOOST_PP_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_N, \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR_1)
+
+#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR(ATTRIBUTES_SEQ) \
+ BOOST_PP_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \
+ BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N, \
+ BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1)
+
+#define BOOST_FUSION_DEFINE_STRUCT_IMPL( \
+ NAMESPACE_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
+ \
+ struct NAME \
+ { \
+ typedef NAME self_type; \
+ \
+ BOOST_FUSION_DEFINE_STRUCT_IMPL_IMPL( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_FUSION_DEFINE_STRUCT_CTOR(ATTRIBUTES_SEQ)( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ }; \
+ \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)
+
+#define BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL( \
+ TEMPLATE_PARAMS_SEQ, \
+ NAMESPACE_SEQ, \
+ NAME, \
+ ATTRIBUTES_SEQ, \
+ ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
+ \
+ template< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \
+ (0)TEMPLATE_PARAMS_SEQ) \
+ > \
+ struct NAME \
+ { \
+ typedef NAME self_type; \
+ \
+ BOOST_FUSION_DEFINE_STRUCT_IMPL_IMPL( \
+ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ \
+ BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR(ATTRIBUTES_SEQ)( \
+ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
+ }; \
+ \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename A1, typename A2>
+ struct get_first_arg
+ {
+ typedef A1 type;
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/namespace.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/namespace.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -0,0 +1,51 @@
+/*=============================================================================
+ Copyright (c) 2009-2010 Hartmut Kaiser
+ Copyright (c) 2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP
+
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/seq/seq.hpp>
+#include <boost/preprocessor/seq/for_each.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+
+#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_BEGIN_I(R,DATA,ELEM) \
+ namespace ELEM {
+#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_END_I(Z,I,DATA) }
+#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I(Z,I,ELEM) ELEM::
+
+#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
+ BOOST_PP_SEQ_FOR_EACH_R, \
+ BOOST_PP_TUPLE_EAT(4))( \
+ 1, \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_BEGIN_I, \
+ _, \
+ BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ))
+
+#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) \
+ BOOST_PP_REPEAT_1( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_END_I, \
+ _)
+
+#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION(NAMESPACE_SEQ) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
+ BOOST_PP_SEQ_FOR_EACH_R, \
+ BOOST_FUSION_ADAPT_STRUCT_PROXY_DUMMY4)( \
+ 1, \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I, \
+ _, \
+ BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ))
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,30 +9,12 @@
 #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP
 #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP
 
-#include <boost/preprocessor/dec.hpp>
-#include <boost/preprocessor/control/if.hpp>
-#include <boost/preprocessor/seq/seq.hpp>
-#include <boost/preprocessor/seq/for_each.hpp>
-#include <boost/preprocessor/seq/size.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-
-#define BOOST_FUSION_ADAPT_STRUCT_PROXY_DUMMY4(A,B,C,D)
-#define BOOST_FUSION_ADAPT_STRUCT_PROXY_TYPE_NS_BEGIN(R,DATA,ELEM) \
- namespace ELEM {
-#define BOOST_FUSION_ADAPT_STRUCT_PROXY_TYPE_NS_END(Z,I,DATA) }
-#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I(Z,I,ELEM) ELEM::
+#include <boost/fusion/adapted/detail/struct/namespace.hpp>
 
 #define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE( \
     WRAPPED_TYPE,NAMESPACE_SEQ,NAME) \
                                                                                 \
- BOOST_PP_IF( \
- BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
- BOOST_PP_SEQ_FOR_EACH_R, \
- BOOST_FUSION_ADAPT_STRUCT_PROXY_DUMMY4)( \
- 1, \
- BOOST_FUSION_ADAPT_STRUCT_PROXY_TYPE_NS_BEGIN, \
- _, \
- BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ)) \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
                                                                                 \
     struct NAME \
     { \
@@ -43,19 +25,6 @@
         WRAPPED_TYPE& obj; \
     }; \
                                                                                 \
- BOOST_PP_REPEAT_1( \
- BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
- BOOST_FUSION_ADAPT_STRUCT_PROXY_TYPE_NS_END, \
- _)
-
-#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION(NAMESPACE_SEQ) \
- BOOST_PP_IF( \
- BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
- BOOST_PP_SEQ_FOR_EACH_R, \
- BOOST_FUSION_ADAPT_STRUCT_PROXY_DUMMY4)( \
- 1, \
- BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I, \
- _, \
- BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ))
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -14,5 +14,7 @@
 #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
 #include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
+#include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
+#include <boost/fusion/adapted/struct/define_struct.hpp>
 
 #endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/define_assoc_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/define_assoc_struct.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP
+
+#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
+#include <boost/fusion/adapted/detail/struct/define_struct.hpp>
+
+#define BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( \
+ TEMPLATE_PARAMS_SEQ, NAMESPACE_SEQ, NAME, ATTRIBUTES) \
+ \
+ BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL( \
+ TEMPLATE_PARAMS_SEQ, \
+ (0)NAMESPACE_SEQ, \
+ NAME, \
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
+ 3) \
+ \
+ BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( \
+ TEMPLATE_PARAMS_SEQ, \
+ (BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME)\
+ TEMPLATE_PARAMS_SEQ, \
+ ATTRIBUTES)
+
+#define BOOST_FUSION_DEFINE_ASSOC_STRUCT(NAMESPACE_SEQ,NAME,ATTRIBUTES) \
+ BOOST_FUSION_DEFINE_STRUCT_IMPL( \
+ (0)NAMESPACE_SEQ, \
+ NAME, \
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
+ 3) \
+ \
+ BOOST_FUSION_ADAPT_ASSOC_STRUCT( \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME, \
+ ATTRIBUTES)
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/define_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/define_struct.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP
+
+#include <boost/fusion/adapted/struct/adapt_struct.hpp>
+#include <boost/fusion/adapted/detail/struct/define_struct.hpp>
+
+#define BOOST_FUSION_DEFINE_TPL_STRUCT( \
+ TEMPLATE_PARAMS_SEQ, NAMESPACE_SEQ, NAME, ATTRIBUTES) \
+ \
+ BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL( \
+ TEMPLATE_PARAMS_SEQ, \
+ (0)NAMESPACE_SEQ, \
+ NAME, \
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
+ 2) \
+ \
+ BOOST_FUSION_ADAPT_TPL_STRUCT( \
+ TEMPLATE_PARAMS_SEQ, \
+ (BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME) \
+ TEMPLATE_PARAMS_SEQ, \
+ ATTRIBUTES)
+
+#define BOOST_FUSION_DEFINE_STRUCT(NAMESPACE_SEQ,NAME,ATTRIBUTES) \
+ BOOST_FUSION_DEFINE_STRUCT_IMPL( \
+ (0)NAMESPACE_SEQ, \
+ NAME, \
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
+ 2) \
+ \
+ BOOST_FUSION_ADAPT_STRUCT( \
+ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \
+ ATTRIBUTES)
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 Christopher Schmidt
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -15,6 +15,7 @@
 #include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
 
 #include <boost/mpl/bool.hpp>
 
@@ -117,10 +118,7 @@
     struct unrolled_all<0>
     {
         template <typename It0, typename F>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It0 const& it0, BOOST_FUSION_RREF_ELSE_OBJ(F) f)
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,9 +9,9 @@
 #ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_COUNT_HPP
 #define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_COUNT_HPP
 
-#include <boost/config.hpp>
-#include <boost/mpl/or.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
 #include <boost/type_traits/is_convertible.hpp>
+#include <boost/mpl/or.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
@@ -35,10 +35,7 @@
     struct compare_convertible<false>
     {
         template <typename T1, typename T2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(BOOST_FUSION_R_ELSE_CLREF(T1) x, BOOST_FUSION_R_ELSE_CLREF(T2) y)
         {

Added: sandbox/SOC/2009/fusion/boost/fusion/include/define_assoc_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/define_assoc_struct.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_DEFINE_ASSOC_STRUCT_HPP
+#define BOOST_FUSION_INCLUDE_DEFINE_ASSOC_STRUCT_HPP
+
+#include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/define_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/define_struct.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_DEFINE_STRUCT_HPP
+#define BOOST_FUSION_INCLUDE_DEFINE_STRUCT_HPP
+
+#include <boost/fusion/adapted/struct/define_struct.hpp>
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,11 +9,10 @@
 #ifndef BOOST_FUSION_ITERATOR_EQUAL_TO_HPP
 #define BOOST_FUSION_ITERATOR_EQUAL_TO_HPP
 
-#include <boost/config.hpp>
 #include <boost/fusion/support/tag_of.hpp>
 #include <boost/fusion/support/is_iterator.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
-
+#include <boost/fusion/support/internal/constexpr.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/utility/enable_if.hpp>
 
@@ -51,10 +50,7 @@
     namespace iterator_operators
     {
         template <typename It1, typename It2>
- inline
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ inline BOOST_FUSION_CONSTEXPR
         typename enable_if<
             mpl::and_<traits::is_iterator<It1>, traits::is_iterator<It2> >
           , bool
@@ -65,10 +61,7 @@
         }
 
         template <typename It1, typename It2>
- inline
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ inline BOOST_FUSION_CONSTEXPR
         typename enable_if<
             mpl::and_<
                 traits::is_iterator<It1>

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,10 +9,10 @@
 #ifndef BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_EQUAL_TO_HPP
 #define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_EQUAL_TO_HPP
 
-#include <boost/config.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
 
 #include <boost/mpl/bool.hpp>
 
@@ -25,10 +25,7 @@
         typedef typename result_of::end<Seq2Ref>::type end2_type;
 
         template <typename It1, typename It2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It1 const&, It2 const&, mpl::true_)
         {
@@ -57,10 +54,7 @@
     struct sequence_equal_to<Seq1Ref, Seq2Ref, false>
     {
         template <typename It1, typename It2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It1 const&, It2 const&)
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,11 +9,11 @@
 #ifndef BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_GREATER_HPP
 #define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_GREATER_HPP
 
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
+#include <boost/mpl/bool.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
@@ -24,10 +24,7 @@
         typedef typename result_of::end<Seq2>::type end2_type;
 
         template <typename It1, typename I2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It1 const&, I2 const&, mpl::true_)
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,11 +9,11 @@
 #ifndef BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_GREATER_EQUAL_HPP
 #define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_GREATER_EQUAL_HPP
 
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
+#include <boost/mpl/bool.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
@@ -24,10 +24,7 @@
         typedef typename result_of::end<Seq2Ref>::type end2_type;
 
         template <typename It1, typename It2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It1 const&, It2 const&, mpl::true_)
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,11 +9,11 @@
 #ifndef BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_LESS_HPP
 #define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_LESS_HPP
 
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
+#include <boost/mpl/bool.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
@@ -24,10 +24,7 @@
         typedef typename result_of::end<Seq2>::type end2_type;
 
         template <typename It1, typename It2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It1 const&, It2 const&, mpl::true_)
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,11 +9,11 @@
 #ifndef BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_LESS_EQUAL_HPP
 #define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_LESS_EQUAL_HPP
 
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
+#include <boost/mpl/bool.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
@@ -24,10 +24,7 @@
         typedef typename result_of::end<Seq2>::type end2_type;
 
         template <typename It1, typename It2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It1 const&, It2 const&, mpl::true_)
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -9,11 +9,11 @@
 #ifndef BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_NOT_EQUAL_TO_HPP
 #define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_NOT_EQUAL_TO_HPP
 
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
+#include <boost/mpl/bool.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
@@ -24,10 +24,7 @@
         typedef typename result_of::end<Seq2Ref>::type end2_type;
 
         template <typename It1, typename It2>
- static
-#ifndef BOOST_NO_CONSTEXPR
- constexpr
-#endif
+ static BOOST_FUSION_CONSTEXPR
         bool
         call(It1 const&, It2 const&, mpl::true_)
         {

Added: sandbox/SOC/2009/fusion/boost/fusion/support/internal/constexpr.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/constexpr.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_SUPPORT_INTERNAL_CONSTEXPR_HPP
+#define BOOST_FUSION_SUPPORT_INTERNAL_CONSTEXPR_HPP
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_CONSTEXPR
+# define BOOST_FUSION_CONSTEXPR
+#else
+# define BOOST_FUSION_CONSTEXPR constexpr
+#endif
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp 2010-04-01 07:45:25 EDT (Thu, 01 Apr 2010)
@@ -12,6 +12,7 @@
 
 #include <boost/fusion/support/deduce.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/constexpr.hpp>
 #ifndef BOOST_NO_RVALUE_REFERENCES
 # include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
 #endif
@@ -43,6 +44,7 @@
 
 #undef BOOST_FUSION_PAIR_CTOR
 
+ BOOST_FUSION_CONSTEXPR
         pair()
           : second()
         {}


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