$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70676 - in sandbox/assign_v2/boost/assign/v2: detail detail/functor detail/traits detail/traits/aux_ interpreter option option/data_generator
From: erwann.rogard_at_[hidden]
Date: 2011-03-28 19:25:40
Author: e_r
Date: 2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
New Revision: 70676
URL: http://svn.boost.org/trac/boost/changeset/70676
Log:
upd assign_v2
Text files modified: 
   sandbox/assign_v2/boost/assign/v2/detail/functor.hpp                     |     4                                         
   sandbox/assign_v2/boost/assign/v2/detail/functor/constructor.hpp         |    98 --------------------------------------- 
   sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp   |     6 ++                                      
   sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp                     |     1                                         
   sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/ptr_container.hpp   |    91 ++++++++++++++++++++----------------    
   sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/value_container.hpp |    20 ++++++++                                
   sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp            |    24 ++------                                
   sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp         |    21 ++++++--                                
   sandbox/assign_v2/boost/assign/v2/option/data_generator.hpp              |     1                                         
   sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp    |    74 ++++++++++++++++++++++++-----           
   sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp          |    79 -------------------------------         
   11 files changed, 163 insertions(+), 256 deletions(-)
Modified: sandbox/assign_v2/boost/assign/v2/detail/functor.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/functor.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/functor.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -10,7 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_DETAIL_FUNCTOR_ER_2010_HPP
 #define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_ER_2010_HPP
 #include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
-#include <boost/assign/v2/detail/functor/constructor.hpp>
-#include <boost/assign/v2/detail/functor/new.hpp>
+#include <boost/assign/v2/detail/functor/pair.hpp>
+#include <boost/assign/v2/detail/functor/value.hpp>
 
 #endif // BOOST_ASSIGN_V2_DETAIL_FUNCTOR_ER_2010_HPP
Modified: sandbox/assign_v2/boost/assign/v2/detail/functor/constructor.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/functor/constructor.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/functor/constructor.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -1,97 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  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_DETAIL_FUNCTOR_CONSTRUCTOR_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_CONSTRUCTOR_ER_2010_HPP
-#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
-#include <boost/assign/v2/detail/keyword/nil.hpp>
-#include <boost/assign/v2/detail/pp/ignore.hpp>
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
-#include <utility>
-#else
-#include <boost/assign/v2/detail/config/limit_arity.hpp>
-#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
-#include <boost/mpl/always.hpp>
-#include <boost/preprocessor/arithmetic.hpp>
-#include <boost/preprocessor/repetition.hpp>
-#endif
-
-namespace boost{
-namespace assign{
-namespace v2{
-//syntax_detail_functor_constructor
-namespace functor_aux{
-
-    template<typename T = keyword_aux::nil>
-    class constructor/*<-*/
-#if !BOOST_ASSIGN_V2_ENABLE_CPP0X
-    : public functor_aux::crtp_unary_and_up<
-        functor_aux::constructor<T>,
-        ::boost::mpl::always<T>
-    >
-#endif
-    /*->*/
-    {
-//<-
-        typedef functor_aux::constructor<T> this_;
-//->
-        public:
-
-        constructor()/*<-*/{}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-
-//<-
-        template<typename U>
-        constructor<U> type()const{ return constructor<U>(); }
-
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
-//->
-        template<typename... Args>
-        T operator()(Args&&...args)const/*<-*/
-        {
-            return T( std::forward<Args>(args)... );
-        }/*->*/BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-//<-
-
-#else
-
-        protected:
-            typedef ::boost::mpl::always<T> meta_result_;
-            typedef functor_aux::crtp_unary_and_up<this_, meta_result_> super_;
-
-        public:
-
-        using super_::operator();
-        T operator()()const{ return T(); }
-
-#define BOOST_ASSIGN_V2_MACRO(z, N,data) \
-    template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
-    T impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
-        return T( BOOST_PP_ENUM_PARAMS(N, _) ); \
-    } \
-/**/
-BOOST_PP_REPEAT_FROM_TO(
-    1,
-    BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
-    BOOST_ASSIGN_V2_MACRO,
-    ~
-)
-#undef BOOST_ASSIGN_V2_MACRO
-
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
-
-//->
-    };
-
-}// functor_aux
-//]
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_DETAIL_FUNCTOR_CONSTRUCTOR_ER_2010_HPP
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -78,12 +78,16 @@
         ::boost::mpl::vector<BOOST_ASSIGN_V2_TPL_ARG_LIST(SeqU)> \
     >::type \
     operator()( BOOST_ASSIGN_V2_PARAMETER_LIST(SeqU, _) )const{ \
-        return this->derived().template impl<BOOST_ASSIGN_V2_TPL_ARG_LIST(SeqU)>( \
+        return this->derived().impl( \
             BOOST_ASSIGN_V2_ARG_LIST(SeqU, _) \
         ); \
     } \
 /**/
 
+// TODO remove
+// return this->derived().template impl<BOOST_ASSIGN_V2_TPL_ARG_LIST(SeqU)>( \
+
+
 #define BOOST_ASSIGN_V2_MACRO2(z, n, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT(\
     BOOST_ASSIGN_V2_MACRO1, \
     BOOST_PP_SEQ_FIRST_N(BOOST_PP_INC(n), BOOST_ASSIGN_V2_SEQ_TPL_BINARY_ARG_LIST)\
Modified: sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -9,6 +9,7 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_DETAIL_KEYWORD_ER_2010_HPP
 #define BOOST_ASSIGN_V2_DETAIL_KEYWORD_ER_2010_HPP
+#include <boost/assign/v2/detail/keyword/key.hpp>
 #include <boost/assign/v2/detail/keyword/ignore.hpp>
 #include <boost/assign/v2/detail/keyword/nil.hpp>
 
Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/ptr_container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/ptr_container.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/ptr_container.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -14,17 +14,50 @@
 #include <utility> // std::pair
 #include <boost/assign/v2/detail/traits/aux_/fwd_container.hpp>
 #include <boost/mpl/size_t.hpp>
+#include <boost/type_traits/remove_reference.hpp>
 
 namespace boost{
 namespace assign{
 namespace v2{
 namespace container_aux{
 
-	// FWD
     
-    template<typename C> struct mapped;
-    template<typename C> struct key;
-    template<typename C> struct value; // Some specializations below
+	// DATA-MEMBER
+
+    template<typename PtrC>
+    struct to_value_key{ typedef typename PtrC::key_type type; };
+
+    template<typename PtrC>
+    struct to_value_value : boost::remove_reference<
+    	typename PtrC::reference
+    >{};
+
+    template<typename PtrC>
+    struct to_value_mapped : boost::remove_reference<
+    	typename PtrC::mapped_reference
+    >{};
+
+    template
+    <
+        class Key,
+        class Mapped,
+        class Compare,
+        class CloneAllocator,
+        class Allocator
+    >
+    struct to_value_value<
+    	boost::ptr_map<Key, Mapped, Compare, CloneAllocator, Allocator>
+    >{
+
+		typedef boost::ptr_map<
+        	Key, Mapped, Compare, CloneAllocator, Allocator
+        > ptr_c_;
+        typedef std::pair<
+        	const typename to_value_key<ptr_c_>::type, 
+            typename to_value_mapped<ptr_c_>::type
+        > type;
+    };
+    
 
 
     // ALLOCATOR
@@ -32,7 +65,7 @@
     template<typename PtrC>
     struct to_value_allocator
     {
-        typedef std::allocator<typename value<PtrC>::type> type;
+        typedef std::allocator<typename to_value_value<PtrC>::type> type;
     };
 
 
@@ -50,7 +83,7 @@
     struct to_value_array
     {
         typedef boost::array<
-            typename value<PtrC>::type,
+            typename to_value_value<PtrC>::type,
             helper_size<PtrC>::value
         > type;
     };
@@ -61,7 +94,7 @@
     struct to_value_sequence {
 
         typedef C<
-            typename value<PtrC>::type,
+            typename to_value_value<PtrC>::type,
             typename to_value_allocator<PtrC>::type
         > type;
 
@@ -75,15 +108,11 @@
     >
     struct to_value_map{
 
-		typedef typename key<PtrC>::type k_;
-		typedef typename mapped<PtrC>::type m_;
-        typedef std::pair<const k_, m_> p_;
-	
         typedef C<
-            k_,
-            m_,
+            typename to_value_key<PtrC>::type,
+            typename to_value_mapped<PtrC>::type,
             typename PtrC::key_compare,
-			std::allocator<p_>
+			typename to_value_allocator<PtrC>::type
         > type;
 
     };
@@ -94,7 +123,7 @@
     struct to_value_set{
 
         typedef C<
-            typename PtrC::key_type,
+            typename to_value_key<PtrC>::type,
             typename PtrC::key_compare,
             typename to_value_allocator<PtrC>::type
         > type;
@@ -108,8 +137,8 @@
     struct to_value_unordered_map{
 
         typedef C<
-            typename PtrC::key_type,
-            typename mapped<PtrC>::type,
+            typename to_value_key<PtrC>::type,
+            typename to_value_mapped<PtrC>::type,
             typename PtrC::hasher,
             typename PtrC::key_equal,
             typename to_value_allocator<PtrC>::type
@@ -124,7 +153,7 @@
     struct to_value_unordered_set{
 
         typedef C<
-            typename PtrC::key_type,
+            typename to_value_key<PtrC>::type,
             typename PtrC::hasher,
             typename PtrC::key_equal,
             typename to_value_allocator<PtrC>::type
@@ -134,11 +163,10 @@
 
     // TO_VALUE_CONTAINER
 
-    template<typename C>
-    struct to_value_container
-    {
-        typedef C type;
-    };
+    template<
+    	typename C // Pointer or Value container
+    >
+    struct to_value_container{ typedef C type; };
 
     // Array
     template<
@@ -207,23 +235,6 @@
         std::map
     >{};
 
-
-    template
-    <
-        class Key,
-        class Mapped,
-        class Compare,
-        class CloneAllocator,
-        class Allocator
-    >
-    struct value<
-    	boost::ptr_map<Key, Mapped, Compare, CloneAllocator, Allocator>
-    > : value<
-    	typename to_value_container<
-        	boost::ptr_map<Key, Mapped, Compare, CloneAllocator, Allocator>
-        >::type
-    >{};
-
     // Set
 
     template
Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/value_container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/value_container.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/aux_/value_container.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -101,6 +101,26 @@
 
 namespace container_aux{
 
+// DATA-MEMBER
+
+    template<
+    	typename C	// Ptr or value container
+    >
+    struct value_key{ typedef typename C::key_type type; };
+
+    template<
+    	typename C	// Ptr or value container
+    >
+    struct value_value{ typedef typename C::value_type type; };
+
+    template<
+    	typename C	// Ptr or value container
+    >
+    struct value_mapped{
+    	typedef typename C::mapped_type type;
+    };
+
+
 // HAS_VALUE
 
     template<typename T>
Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -39,24 +39,14 @@
 
 // DATA-MEMBER
 
-    template<
-    	typename C	// Ptr or value container
-    >
-    struct key{ typedef typename C::key_type type; };
-
-    template<
-    	typename C	// Ptr or value container
-    >
-    struct value : boost::remove_reference<
-    	typename C::reference
-    >{};
+    template<typename C>
+    struct key : through_value_container<value_key, C>{};
 
-    template<
-    	typename C	// Ptr or value container
-    >
-    struct mapped : boost::remove_reference<
-        typename C::mapped_reference    
-    >{};
+    template<typename C>
+    struct mapped : through_value_container<value_mapped, C>{};
+
+    template<typename C>
+    struct value : through_value_container<value_value, C>{};
 
 // STORAGE
 
Modified: sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -10,8 +10,8 @@
 #ifndef BOOST_ASSIGN_V2_INTERPRETER_DATA_ER_2010_HPP
 #define BOOST_ASSIGN_V2_INTERPRETER_DATA_ER_2010_HPP
 #include <boost/assign/v2/detail/traits/container.hpp>
-#include <boost/assign/v2/detail/functor/constructor.hpp>
-#include <boost/mpl/eval_if.hpp>
+#include <boost/assign/v2/detail/functor/pair.hpp>
+#include <boost/assign/v2/detail/functor/value.hpp>
     
 namespace boost{
 namespace assign{
@@ -22,13 +22,22 @@
 
     template<
         typename C // Value or pointer-container
-        , template<typename> class F = container_aux::value
+        , typename T/*->*/ = typename v2::container_aux::value<C>::type/*->*/
+        , bool is_map/*->*/ = v2::container_aux::is_map<C>::value/*->*/
     >
     struct deduce_data_generator/*<-*/
     {
-        typedef functor_aux::constructor<
-            typename F<C>::type
-        > type;
+		typedef v2::functor_aux::value<T> type; 
+    }/*->*/;
+
+    template<typename C, typename T>
+    struct deduce_data_generator<C, T, true>/*<-*/
+    {
+		typedef v2::functor_aux::pair<
+        	T, 
+            typename container_aux::key<C>::type,
+            typename container_aux::mapped<C>::type
+        > type; 
     }/*->*/;
 
 }// interpreter_aux
Modified: sandbox/assign_v2/boost/assign/v2/option/data_generator.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/data_generator.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/data_generator.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -10,6 +10,5 @@
 #ifndef BOOST_ASSIGN_V2_OPTION_DATA_GENERATOR_ER_2010_HPP
 #define BOOST_ASSIGN_V2_OPTION_DATA_GENERATOR_ER_2010_HPP
 #include <boost/assign/v2/option/data_generator/framework.hpp>
-#include <boost/assign/v2/option/data_generator/key.hpp>
 
 #endif // BOOST_ASSIGN_V2_OPTION_DATA_GENERATOR_ER_2010_HPP
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -16,24 +16,46 @@
 #include <boost/mpl/apply.hpp>
 
 namespace boost{
+	struct use_default;
 namespace assign{
 namespace v2{
 //[syntax_option_data_generator
 namespace interpreter_aux{
 namespace result_of{
 
-    template<typename D>
-    struct option_data_generator/*<-*/{
-
-        typedef interpreter_aux::replace_data_generator<D> meta_;
+    template<typename D, typename C, typename F = use_default>
+    struct option_data_generator/*<-*/
+    	: ::boost::mpl::apply1<
+        	interpreter_aux::replace_data_generator<D>, 
+            F
+        >
+    {
+    }/*->*/;
 
-        template<
-            typename F // Data generator to replace D with
+    template<typename D, typename C>
+    struct option_data_generator<D, C, use_default>/*<-*/
+    	: option_data_generator<
+        	D, C, typename deduce_data_generator<C>::type
         >
-        struct apply/*<-*/ : ::boost::mpl::apply1<meta_, F>{}/*->*/;
+    {}/*->*/;
 
-    };
+    template<
+        typename C // Value or pointer-container
+    >
+    struct deduce_key_generator/*<-*/
+    {
+		typedef typename container_aux::key<C>::type key_;
+        typedef functor_aux::value<key_> type;
+    }/*->*/;
+    
+    template<typename D, typename C>
+    struct option_data_generator<D, C, keyword_aux::key>/*<-*/
+    	: option_data_generator<
+        	D, C, typename deduce_key_generator<C>::type
+        >
+    {}/*->*/;
 
+	
 }// result_of
 
     template<typename F/*<-*/= keyword_aux::ignore/*->*/>
@@ -42,23 +64,47 @@
         option_data_generator(){}
         option_data_generator(F f) : f_( f ){}
 
+		template<typename C>
         F const& fun()const{ return this->f_; }
-
+        
         private:
         F f_;
     }/*->*/;
 
+    template<>
+    struct option_data_generator<keyword_aux::default_>/*<-*/
+    {
+        option_data_generator(){}
+
+		template<typename C>
+        typename deduce_data_generator<C>::type 
+        fun()const{ return typename deduce_data_generator<C>::type(); }
+        
+    }/*->*/;
+
+    template<>
+    struct option_data_generator<keyword_aux::key>/*<-*/
+    {
+        option_data_generator(){}
+
+		template<typename C>
+        typename deduce_key_generator<C>::type 
+        fun()const{ return typename deduce_key_generator<C>::type(); }
+        
+    }/*->*/;
+
     // Overrides data generator
     template<typename C, typename F, typename ModifierTag
             , typename DataTag, typename D, typename F1>
-    typename ::boost::mpl::apply1<result_of::option_data_generator<D>, F1>::type
+    typename result_of::option_data_generator<D, C, F1>::type
     operator%(
         interpreter_crtp<C, F, ModifierTag, DataTag, D> const& lhs,
         option_data_generator<F1> const& rhs
     )/*<-*/
     {
-        typedef result_of::option_data_generator<D> meta_;
-        typedef typename ::boost::mpl::apply1<meta_, F1>::type result_;
+    	typedef typename result_of::option_data_generator<
+        	D, C, F1
+        >::type result_
         return result_( lhs.container(), rhs.fun(), lhs.modifier );
     }/*<-*/BOOST_ASSIGN_V2_IGNORE(/*<-*/;/*->*/)/*->*/
 
@@ -113,8 +159,8 @@
 }\
 /**/
 
-#include <boost/assign/v2/detail/functor/constructor.hpp>
-BOOST_ASSIGN_V2_OPTION_DATA_GENERATE(constructor, v2::functor_aux::constructor<T>)
+#include <boost/assign/v2/detail/functor/value.hpp>
+BOOST_ASSIGN_V2_OPTION_DATA_GENERATE(value, v2::functor_aux::value<T>)
 
 #include <boost/typeof/typeof.hpp>
 #include <boost/type_traits/add_const.hpp>
Modified: sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp	2011-03-28 19:25:39 EDT (Mon, 28 Mar 2011)
@@ -1,78 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  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_OPTION_DATA_GENERATOR_KEY_ER_2010_HPP
-#define BOOST_ASSIGN_V2_OPTION_DATA_GENERATOR_KEY_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/container.hpp>
-#include <boost/assign/v2/interpreter/data_generator.hpp>
-#include <boost/assign/v2/option/data_generator/framework.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/utility/enable_if.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-//[syntax_option_key
-namespace interpreter_aux{
-
-    template<typename C>
-    struct container_key{ typedef typename C::key_type type; };
-
-    template<
-        typename C // Value or pointer-container
-    >
-    struct deduce_key_generator/*<-*/
-    	: deduce_data_generator<C, container_key>
-    {}/*->*/;
-
-    struct option_key{};
-
-
-namespace result_of{
-
-    template<typename C, typename D>
-    struct option_key : 
-        ::boost::mpl::apply1<
-            interpreter_aux::result_of::option_data_generator<D>,
-            typename deduce_key_generator<C>::type
-        >{};
-
-}//result_of
-
-    // Overrides data generator with a constructor for C::key_type
-    template<
-        typename C  // Associative container
-        , typename F, typename ModifierTag, typename DataTag, typename D
-    >
-    typename /*<-*/boost::lazy_enable_if<
-        container_aux::is_sorted<C>,/*->*/
-        result_of::option_key<C, D>/*<-*/
-    >::/*->*/type
-    operator%(
-        interpreter_crtp<C, F, ModifierTag, DataTag, D> const& lhs,
-        option_key rhs
-    )/*<-*/
-    {
-        typedef typename deduce_key_generator<C>::type gen_;
-        return lhs % ( _data = gen_() );
-    }/*<-*/BOOST_ASSIGN_V2_IGNORE(/*<-*/;/*->*/)/*->*/
-
-
-}// interpreter_aux
-//<-
-namespace{
-//->
-    interpreter_aux::option_key const _key/*<-*/= interpreter_aux::option_key()/*->*/;
-//]
-}
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_OPTION_DATA_GENERATOR_KEY_ER_2010_HPP
+// TODO remove file
\ No newline at end of file