Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r69642 - in sandbox/assign_v2/boost/assign/v2/put: container/functor deque frame modulo/fun modulo/modifier
From: erwann.rogard_at_[hidden]
Date: 2011-03-07 20:21:21


Author: e_r
Date: 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
New Revision: 69642
URL: http://svn.boost.org/trac/boost/changeset/69642

Log:
upd assign_v2
Added:
   sandbox/assign_v2/boost/assign/v2/put/container/functor/replace.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/container/functor/result_of.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/deque/replace.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/frame/replace.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/modulo/fun/
   sandbox/assign_v2/boost/assign/v2/put/modulo/fun/make.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/modulo/fun/meta.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/
   sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/keyword.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/make.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/meta.hpp (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/standard.hpp (contents, props changed)

Added: sandbox/assign_v2/boost/assign/v2/put/container/functor/replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/container/functor/replace.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,39 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_CONTAINER_FUNCTOR_REPLACE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_CONTAINER_FUNCTOR_REPLACE_ER_2010_HPP
+#include <boost/assign/v2/put/frame/replace.hpp>
+#include <boost/assign/v2/put/container/functor/fwd.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename C,typename F, typename Tag>
+ struct replace_fun< put_aux::adapter<C, F, Tag> >
+ {
+ template<typename F1>
+ struct apply{ typedef put_aux::adapter<C, F1, Tag> type; };
+ };
+
+ template<typename C, typename F, typename Tag>
+ struct replace_modifier_tag< put_aux::adapter<C, F, Tag> >
+ {
+ template<typename Tag1>
+ struct apply{ typedef put_aux::adapter<C, F, Tag1> type; };
+ };
+
+}// result_of_modulo
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/assign_v2/boost/assign/v2/put/container/functor/result_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/container/functor/result_of.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,34 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_CONTAINER_FUNCTOR_RESULT_OF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_CONTAINER_FUNCTOR_RESULT_OF_ER_2010_HPP
+#include <boost/assign/v2/put/deduce/fun.hpp>
+#include <boost/assign/v2/put/deduce/modifier_tag.hpp>
+#include <boost/assign/v2/put/container/functor/fwd.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace result_of{
+
+ template<typename C>
+ struct put
+ {
+ typedef typename put_aux::deduce_fun<C>::type f_;
+ typedef typename put_aux::deduce_modifier_tag<C>::type modifier_tag_;
+ typedef put_aux::adapter<C, f_, modifier_tag_> type;
+ };
+
+}// result_of
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/assign_v2/boost/assign/v2/put/deque/replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/deque/replace.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,39 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_DEQUE_REPLACE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_DEQUE_REPLACE_ER_2010_HPP
+#include <boost/assign/v2/put/frame/replace.hpp>
+#include <boost/assign/v2/put/deque/fwd.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename T, typename F, typename Tag>
+ struct replace_fun< deque_cont<T, F, Tag> >
+ {
+ template<typename F1>
+ struct apply{ typedef deque_cont<T, F1, Tag> type; };
+ };
+
+ template<typename T, typename F, typename Tag>
+ struct replace_modifier_tag< deque_cont<T, F, Tag> >
+ {
+ template<typename Tag1>
+ struct apply{ typedef deque_cont<T, F, Tag1> type; };
+ };
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/assign_v2/boost/assign/v2/put/frame/replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/frame/replace.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,36 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_FRAME_REPLACE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_FRAME_REPLACE_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename /*<<Inherits crtp\<\> >>*/D>
+ struct /*<<Meta-function class to be specialized on D>>*/replace_fun{
+ template<typename F>
+ struct /*<<Transforms D by replacing F for D::fun_type>>*/apply{};
+ };
+
+ template<typename /*<<Inherits crtp\<\> >>*/ D>
+ struct /*<<Meta-function class to be specialized on D>>*/ replace_modifier_tag{
+ template<typename Tag>
+ struct /*<<Transforms D by replacing Tag for D::modifier_tag>>*/ apply{};
+ };
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/assign_v2/boost/assign/v2/put/modulo/fun/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/fun/make.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,64 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_FUN_MAKE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODULO_FUN_MAKE_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/assign/v2/detail/keyword/ignore.hpp>
+#include <boost/assign/v2/put/frame/fwd.hpp>
+#include <boost/assign/v2/put/modulo/fun/meta.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename F = keyword_aux::ignore>
+ struct modulo_fun
+ {
+ modulo_fun(){}
+ modulo_fun(F f) : f_( f ){}
+
+ F const& fun()const{ return this->f_; }
+
+ private:
+ F f_;
+ };
+
+ struct keyword_fun{
+
+ template<typename F>
+ modulo_fun<F> operator=(F const& f)const{
+ return modulo_fun<F>( f );
+ }
+
+ };
+
+ template<typename C, typename F, typename Tag, typename D, typename F1>
+ typename ::boost::mpl::apply1<result_of::modulo_fun<D>, F1>::type
+ operator%(
+ crtp<C, F, Tag, D> const& lhs,
+ modulo_fun<F1> const& rhs
+ )
+ {
+ typedef result_of::modulo_fun<D> meta_;
+ typedef typename ::boost::mpl::apply1<meta_, F1>::type result_;
+ return result_( lhs.container(), rhs.fun(), lhs.modifier );
+ }
+
+
+}// put_aux
+namespace{
+ const put_aux::keyword_fun _fun = put_aux::keyword_fun();
+}
+}// v2
+}// assign
+}// boost
+
+#endif
\ No newline at end of file

Added: sandbox/assign_v2/boost/assign/v2/put/modulo/fun/meta.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/fun/meta.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,35 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_FUN_META_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODULO_FUN_META_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/assign/v2/put/frame/replace.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace result_of{
+
+ template<typename /*<<Inherits crtp\<\> >>*/D>
+ struct /*<<Meta-function class>>*/ modulo_fun{
+
+ typedef put_aux::replace_fun<D> meta_;
+
+ template<typename F>
+ struct apply : ::boost::mpl::apply1<meta_, F>{};
+
+ };
+
+}// result_of
+}// v2
+}// assign
+}// boost
+
+#endif
\ No newline at end of file

Added: sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/keyword.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/keyword.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,51 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_KEYWORD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_KEYWORD_ER_2010_HPP
+#include <boost/preprocessor/cat.hpp>
+#include <boost/assign/v2/put/modulo/modifier/make.hpp>
+
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_PARAM
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_PARAM(NAME)\
+ put_aux::modulo_modifier<put_aux::BOOST_PP_CAT(keyword_,NAME)>\
+/**/
+#endif
+
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_KEYWORD
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_KEYWORD(NAME)\
+namespace boost{\
+namespace assign{\
+namespace v2{\
+namespace put_aux{\
+\
+ struct BOOST_PP_CAT(keyword_,NAME){\
+\
+ BOOST_PP_CAT(keyword_,NAME)(){}\
+\
+ };\
+\
+}\
+namespace {\
+ BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_PARAM(NAME) const BOOST_PP_CAT(_,NAME)\
+ = BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_PARAM(NAME)();\
+}\
+}\
+}\
+}\
+/**/
+#endif
+
+// The default
+BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_KEYWORD(modifier)
+BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_META_MODIFIER_TAG(modifier, Arg)
+
+#endif
+
+

Added: sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/make.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,75 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_MAKE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_MAKE_ER_2010_HPP
+#include <boost/preprocessor/cat.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/assign/v2/detail/keyword/ignore.hpp>
+#include <boost/assign/v2/put/frame/fwd.hpp>
+#include <boost/assign/v2/put/frame/modifier.hpp>
+#include <boost/assign/v2/put/modulo/modifier/meta.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename Keyword, typename Arg = keyword_aux::ignore>
+ struct modulo_modifier
+ {
+
+ modulo_modifier(){}
+ modulo_modifier(Arg arg):arg_( arg ){}
+
+ Arg const& arg()const{ return this->arg_; }
+
+ template<typename Arg1>
+ modulo_modifier<Keyword, Arg1>
+ operator=(const Arg1& arg1)const{
+ return modulo_modifier<Keyword, Arg1>( arg1 );
+ }
+
+ protected:
+ Arg arg_;
+ };
+
+ template<typename C, typename F, typename Tag, typename D,
+ typename Keyword, typename Arg>
+ typename ::boost::mpl::apply2<
+ result_of::modulo_modifier<D>,
+ Keyword, Arg
+ >::type
+ operator%(
+ crtp<C, F, Tag, D> const& lhs,
+ modulo_modifier<Keyword, Arg> const& rhs
+ )
+ {
+ typedef put_aux::meta_modifier_tag<Keyword, Arg> meta_;
+ typedef typename ::boost::mpl::apply1<meta_, D>::type modifier_tag;
+ typedef put_aux::modifier<modifier_tag> modifier_;
+
+ typedef typename ::boost::mpl::apply2<
+ result_of::modulo_modifier<D>,
+ Keyword, Arg
+ >::type result_;
+
+ return result_(
+ lhs.container(),
+ lhs.fun,
+ modifier_( lhs.modifier, rhs.arg() )
+ );
+ }
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/meta.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/meta.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,73 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_META_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_META_ER_2010_HPP
+#include <boost/preprocessor/cat.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/assign/v2/put/frame/replace.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename Keyword, typename Arg>
+ struct /*<<Meta-function class to be specialized on Keyword>>*/ meta_modifier_tag
+ {
+ template<typename /*<<Inherits crtp\<\> >>*/ D>
+ struct apply;
+ };
+
+}// put_aux
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_META_MODIFIER_TAG
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_META_MODIFIER_TAG(NAME, Result)\
+namespace boost{\
+namespace assign{\
+namespace v2{\
+namespace put_aux{\
+\
+ template<typename Arg>\
+ struct meta_modifier_tag<BOOST_PP_CAT(keyword_,NAME), Arg>\
+ {\
+ template<typename D>\
+ struct apply{ typedef Result type; };\
+ };\
+\
+}\
+}\
+}\
+}\
+/**/
+#endif
+namespace result_of{
+
+ template<typename /*<<Inherits crtp\<\> >>*/D>
+ struct /*<<Meta-function class>>*/ modulo_modifier{
+
+ typedef put_aux::replace_modifier_tag<D> meta_;
+
+ template<typename Keyword, typename Arg>
+ struct apply : ::boost::mpl::apply1<
+ meta_,
+ typename ::boost::mpl::apply1<
+ put_aux::meta_modifier_tag<Keyword, Arg>,
+ D
+ >::type
+ >{};
+
+ };
+
+}// result_of
+}// v2
+}// assign
+}// boost
+
+#endif
+

Added: sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/standard.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/modifier/standard.hpp 2011-03-07 20:21:15 EST (Mon, 07 Mar 2011)
@@ -0,0 +1,98 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to the //
+// Boost Software License, Version 1.0. (See accompanying file //
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_ER_2010_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/assign/v2/detail/keyword/ignore.hpp>
+#include <boost/assign/v2/put/frame/modifier.hpp>
+#include <boost/assign/v2/put/modulo/modifier/keyword.hpp>
+
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL_PTR(FUN)\
+ template<typename C, typename T>\
+ void impl(C& cont, T* t)const{\
+ cont.FUN( t );\
+}\
+/**/
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL_LVALUE(FUN)\
+ template<typename C, typename T>\
+ void impl(C& cont, T& t)const{\
+ cont.FUN( t );\
+}\
+/**/
+
+#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+#if BOOST_ASSIGN_V2_ENABLE_CPP0X
+#include <utility>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_reference.hpp>
+// disable_if necessary to avoid ambiguity resolution with GCC4.4
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL_RVALUE(FUN)\
+ template<typename C, typename T>\
+ typename boost::disable_if<\
+ boost::is_reference<T>,\
+ void\
+ >::type\
+ impl(C& cont, T&& t)const{\
+ cont.FUN( std::move( t ) );\
+ }\
+/**/
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL(FUN)\
+BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL_LVALUE(FUN)\
+BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL_RVALUE(FUN)\
+/**/
+#else
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL(FUN)\
+BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL_LVALUE(FUN)\
+/**/
+#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
+
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_TAG(FUN)\
+namespace boost{\
+namespace assign{\
+namespace v2{\
+namespace modifier_tag{ struct FUN{}; }\
+}\
+}\
+}\
+/**/
+
+// Must be preceded by BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_TAG(FUN)
+#define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD(FUN)\
+namespace boost{\
+namespace assign{\
+namespace v2{\
+namespace put_aux{\
+\
+ template<>\
+ class modifier<modifier_tag::FUN>\
+ {\
+ typedef keyword_aux::ignore ignore_;\
+ public:\
+ modifier(){}\
+ modifier( ignore_, ignore_ ){}\
+ BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_STANDARD_IMPL(FUN)\
+ };\
+\
+}\
+namespace{\
+\
+ put_aux::modulo_modifier<put_aux::keyword_modifier, modifier_tag::FUN> const\
+ BOOST_PP_CAT(_,FUN) = ( \
+ _modifier = modifier_tag::FUN() \
+ );\
+\
+}\
+}\
+}\
+}\
+/**/
+
+#endif


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