Remove CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT macro and emulating code
authorkhizmax <khizmax@gmail.com>
Tue, 23 Sep 2014 13:33:05 +0000 (17:33 +0400)
committerkhizmax <khizmax@gmail.com>
Tue, 23 Sep 2014 13:33:05 +0000 (17:33 +0400)
18 files changed:
cds/compiler/clang/defs.h
cds/compiler/defs.h
cds/compiler/gcc/defs.h
cds/compiler/icl/defs.h
cds/compiler/vc/defs.h
cds/container/ellen_bintree_base.h
cds/details/aligned_allocator.h
cds/details/allocator.h
cds/details/defs.h
cds/details/functor_wrapper.h
cds/intrusive/striped_set/adapter.h
cds/memory/michael/allocator.h
cds/memory/pool_allocator.h
cds/opt/hash.h
cds/opt/make_options_std.h [deleted file]
cds/opt/options.h
projects/Win/vc12/cds.vcxproj
projects/Win/vc12/cds.vcxproj.filters

index 5438396c798cca0888a257055d5f2302d7ca996f..85b18d1216fc10841202ec3a2f302f909860d5f0 100644 (file)
@@ -25,9 +25,6 @@
 
 #define alignof __alignof__
 
-// Variadic template support (only if -std=c++0x compile-line option provided)
-#define CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
-
 // Default template arguments for function templates
 #define CDS_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS_SUPPORT
 
index 315ff626626440c4e100681bae0567ae5b672d47..baa94b613ac16d95d9ca639192b8a74568dd92bb 100644 (file)
@@ -5,6 +5,7 @@
 
 /*
     Required C++11 features:
+    - variadic template [CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT]
     - template alias [CDS_CXX11_TEMPLATE_ALIAS_SUPPORT]
     - explicit conversion operator [CDS_CXX11_EXPLICIT_CONVERSION_OPERATOR_SUPPORT]
 */
index 2e6dc49aad9709881cfb1ea397f4e58b93a18e21..22f08fd1ecabf1abdc3a000abc1fe8669d08c020 100644 (file)
@@ -26,8 +26,6 @@
 // ***************************************
 // C++11 features
 
-#define CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
-
 // RValue
 #define CDS_RVALUE_SUPPORT
 #define CDS_MOVE_SEMANTICS_SUPPORT
index b32550a87abe7cb46dd9eeae88b964a135bb7992..291209613bf9711455c25dcb5c0998e2f5d07ce6 100644 (file)
 // C++11 explicitly-defaulted function (= default) [std 8.4.2 [dcl.fct.def.default]]
 #define CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT
 
-// Variadic template support (ICL 12.1+)
-#define CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT     1
-
 // C++11 inline namespace
 #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
 
index 080827e1f32a28128ef663ceb8bdede9b713849e..642184292683ea542a5f471ab202a6a8db57496b 100644 (file)
 // C++11 explicitly-defaulted function (= default) [std 8.4.2 [dcl.fct.def.default]]
 #define CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT
 
-// Variadic template support (VC12+)
-#define CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT     1
-
 // C++11 inline namespace
 //#define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
 
index 80d8e6df8e553a05574909d40407226266897664..cc99d3a234226b0a73afe078d8d20a8260e68d51 100644 (file)
@@ -61,7 +61,6 @@ namespace cds { namespace container {
                 : m_Value(v)
             {}
 
-#ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
             /// Copy constructor
             template <typename... Args>
             node( Args const&... args)
@@ -75,7 +74,6 @@ namespace cds { namespace container {
                 : m_Value( std::forward<Args>(args)... )
             {}
 #endif  // CDS_RVALUE_SUPPORT
-#endif  // CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
         };
 
         /// EllenBinTreeMap leaf node
index 85ff72a45e5dce309065d276b440dde76b13e642..150a821e06d6aa4b6ca28635806c781c82684920 100644 (file)
@@ -35,43 +35,12 @@ namespace cds { namespace details {
         /// Underlying aligned allocator type
         typedef typename ALIGNED_ALLOCATOR::template rebind<T>::other   allocator_type;
 
-#   ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
         /// Analogue of operator new T(\p src... )
         template <typename... S>
         T *  New( size_t nAlign, const S&... src )
         {
             return Construct( allocator_type::allocate( nAlign, 1), src... );
         }
-#   else
-        //@cond
-        /// Analogue of operator new T
-        T *  New( size_t nAlign )
-        {
-            return Construct( allocator_type::allocate(nAlign, 1) );
-        }
-
-        /// Analogue of operator new T(\p src )
-        template <typename S>
-        T *  New( size_t nAlign, const S& src )
-        {
-            return Construct( allocator_type::allocate( nAlign, 1), src );
-        }
-
-        /// Analogue of operator new T( \p s1, \p s2 )
-        template <typename S1, typename S2>
-        T *  New( size_t nAlign, const S1& s1, const S2& s2 )
-        {
-            return Construct( allocator_type::allocate( nAlign, 1 ), s1, s2 );
-        }
-
-        /// Analogue of operator new T( \p s1, \p s2, \p s3 )
-        template <typename S1, typename S2, typename S3>
-        T *  New( size_t nAlign, const S1& s1, const S2& s2, const S3& s3 )
-        {
-            return Construct( allocator_type::allocate(nAlign, 1), s1, s2, s3 );
-        }
-        //@endcond
-#   endif
 
         /// Analogue of operator new T[\p nCount ]
         T * NewArray( size_t nAlign, size_t nCount )
@@ -110,41 +79,12 @@ namespace cds { namespace details {
             allocator_type::deallocate( p, nCount );
         }
 
-#   ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
         /// Analogue of placement operator new( \p p ) T( \p src... )
         template <typename... S>
         T * Construct( void * p, const S&... src )
         {
             return new( p ) T( src... );
         }
-#   else
-        /// Analogue of placement operator new( \p p ) T
-        T * Construct( void * p )
-        {
-            return new( p ) T;
-        }
-
-        /// Analogue of placement operator new( \p p ) T( \p src )
-        template <typename S>
-        T * Construct( void * p, const S& src )
-        {
-            return new( p ) T( src );
-        }
-
-        /// Analogue of placement operator new( \p p ) T( \p s1, \p s2 )
-        template <typename S1, typename S2>
-        T *  Construct( void * p, const S1& s1, const S2& s2 )
-        {
-            return new( p ) T( s1, s2 );
-        }
-
-        /// Analogue of placement operator new( \p p ) T( \p s1, \p s2, \p s3 )
-        template <typename S1, typename S2, typename S3>
-        T *  Construct( void * p, const S1& s1, const S2& s2, const S3& s3 )
-        {
-            return new( p ) T( s1, s2, s3 );
-        }
-#   endif
 
         /// Rebinds allocator to other type \p Q instead of \p T
         template <typename Q>
index 7733c62db02fb8c664eb67e47d5d47e8197feada..c621b9f5381dd35d59d853b2174a91295031d63a 100644 (file)
@@ -43,43 +43,12 @@ namespace cds {
             /// Element type
             typedef T   value_type;
 
-#       ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
             /// Analogue of operator new T(\p src... )
             template <typename... S>
             value_type *  New( S const&... src )
             {
                 return Construct( allocator_type::allocate(1), src... );
             }
-#       else
-            //@cond
-            /// Analogue of operator new T
-            value_type *  New()
-            {
-                return Construct( allocator_type::allocate(1) );
-            }
-
-            /// Analogue of operator new T(\p src )
-            template <typename S>
-            value_type *  New( S const& src )
-            {
-                return Construct( allocator_type::allocate(1), src );
-            }
-
-            /// Analogue of operator new T( \p s1, \p s2 )
-            template <typename S1, typename S2>
-            value_type *  New( S1 const& s1, S2 const& s2 )
-            {
-                return Construct( allocator_type::allocate(1), s1, s2 );
-            }
-
-            /// Analogue of operator new T( \p s1, \p s2, \p s3 )
-            template <typename S1, typename S2, typename S3>
-            value_type *  New( S1 const& s1, S2 const& s2, S3 const& s3 )
-            {
-                return Construct( allocator_type::allocate(1), s1, s2, s3 );
-            }
-            //@endcond
-#       endif
 
 #       ifdef CDS_EMPLACE_SUPPORT
             /// Analogue of <tt>operator new T( std::forward<Args>(args)... )</tt> (move semantics)
@@ -117,7 +86,6 @@ namespace cds {
                 return p;
             }
 
-#       ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
 #       if CDS_COMPILER == CDS_COMPILER_INTEL
             //@cond
             value_type * NewBlock( size_t nSize )
@@ -138,29 +106,6 @@ namespace cds {
             {
                 return Construct( heap_alloc( nSize ), src... );
             }
-#       else
-            //@cond
-            value_type * NewBlock( size_t nSize )
-            {
-                return Construct( heap_alloc( nSize ));
-            }
-            template <typename S>
-            value_type * NewBlock( size_t nSize, S const& arg )
-            {
-                return Construct( heap_alloc( nSize ), arg );
-            }
-            template <typename S1, typename S2>
-            value_type * NewBlock( size_t nSize, S1 const& arg1, S2 const& arg2 )
-            {
-                return Construct( heap_alloc( nSize ), arg1, arg2 );
-            }
-            template <typename S1, typename S2, typename S3>
-            value_type * NewBlock( size_t nSize, S1 const& arg1, S2 const& arg2, S3 const& arg3 )
-            {
-                return Construct( heap_alloc( nSize ), arg1, arg2, arg3 );
-            }
-            //@endcond
-#       endif
 
             /// Analogue of operator delete
             void Delete( value_type * p )
@@ -177,7 +122,6 @@ namespace cds {
                 allocator_type::deallocate( p, nCount );
             }
 
-#       ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
 #       if CDS_COMPILER == CDS_COMPILER_INTEL
             //@cond
             value_type * Construct( void * p )
@@ -192,37 +136,6 @@ namespace cds {
             {
                 return new( p ) value_type( src... );
             }
-#       else
-            //@cond
-            /// Analogue of placement operator new( \p p ) T
-            value_type * Construct( void * p )
-            {
-                return new( p ) value_type;
-            }
-
-
-            /// Analogue of placement operator new( \p p ) T( \p src )
-            template <typename S>
-            value_type * Construct( void * p, S const& src )
-            {
-                return new( p ) value_type( src );
-            }
-
-            /// Analogue of placement operator new( \p p ) T( \p s1, \p s2 )
-            template <typename S1, typename S2>
-            value_type *  Construct( void * p, S1 const& s1, S2 const& s2 )
-            {
-                return new( p ) value_type( s1, s2 );
-            }
-
-            /// Analogue of placement operator new( \p p ) T( \p s1, \p s2, \p s3 )
-            template <typename S1, typename S2, typename S3>
-            value_type *  Construct( void * p, S1 const& s1, S2 const& s2, S3 const& s3 )
-            {
-                return new( p ) value_type( s1, s2, s3 );
-            }
-            //@endcond
-#       endif
 
 #       ifdef CDS_EMPLACE_SUPPORT
             /// Analogue of placement <tt>operator new( p ) T( std::forward<Args>(args)... )</tt>
index b74820f9e7fb39ecb306acd008ad22faac29deac..ea3c05f8dd6d3ad7ca605c9ea5a9369b8adf9317 100644 (file)
@@ -350,7 +350,7 @@ namespace cds {}
 #   define CDS_NOEXCEPT_DEFAULTED_(expr)  CDS_NOEXCEPT_( expr )
 #endif
 
-#if defined(CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT) && defined(CDS_MOVE_SEMANTICS_SUPPORT)
+#if defined(CDS_MOVE_SEMANTICS_SUPPORT)
 #   define CDS_EMPLACE_SUPPORT
 #endif
 
index 3fb1daffa91b0702d47c3045de7bd84c7c5ecd1e..a8ca972f46aae9b96e39700b6c134e5218ec096b 100644 (file)
@@ -54,7 +54,6 @@ namespace cds { namespace details {
         }
     };
 
-#ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
     template <typename Result, typename... Args>
     struct functor_wrapper<Result (*)(Args...)>
     {
@@ -72,80 +71,6 @@ namespace cds { namespace details {
             return *m_func;
         }
     };
-#else
-    template <typename Result>
-    struct functor_wrapper<Result (*)()>
-    {
-        typedef Result (* func_ptr)();
-        typedef Result (& func_ref)();
-        func_ptr m_func;
-    public:
-        functor_wrapper( func_ptr f )
-            : m_func(f)
-        {}
-
-        func_ref get()
-        {
-            assert( m_func );
-            return *m_func;
-        }
-    };
-
-    template <typename Result, typename Arg1>
-    struct functor_wrapper<Result (*)(Arg1)>
-    {
-        typedef Result (* func_ptr)(Arg1);
-        typedef Result (& func_ref)(Arg1);
-        func_ptr m_func;
-    public:
-        functor_wrapper( func_ptr f )
-            : m_func(f)
-        {}
-
-        func_ref get()
-        {
-            assert( m_func );
-            return *m_func;
-        }
-    };
-
-    template <typename Result, typename Arg1, typename Arg2>
-    struct functor_wrapper<Result (*)(Arg1, Arg2)>
-    {
-        typedef Result (* func_ptr)(Arg1, Arg2);
-        typedef Result (& func_ref)(Arg1, Arg2);
-        func_ptr m_func;
-    public:
-        functor_wrapper( func_ptr f )
-            : m_func(f)
-        {}
-
-        func_ref get()
-        {
-            assert( m_func );
-            return *m_func;
-        }
-    };
-
-    template <typename Result, typename Arg1, typename Arg2, typename Arg3>
-    struct functor_wrapper<Result (*)(Arg1, Arg2, Arg3)>
-    {
-        typedef Result (* func_ptr)(Arg1, Arg2, Arg3);
-        typedef Result (& func_ref)(Arg1, Arg2, Arg3);
-        func_ptr m_func;
-    public:
-        functor_wrapper( func_ptr f )
-            : m_func(f)
-        {}
-
-        func_ref get()
-        {
-            assert( m_func );
-            return *m_func;
-        }
-    };
-
-#endif
 }}  // namespace cds::details
 //@endcond
 
index f544731ffb18412954a8bf73f2e50b0e37ab4441..e12a65ef270c6b837becc6e01aff11546055405c 100644 (file)
@@ -329,7 +329,7 @@ namespace cds { namespace intrusive {
 }} // namespace cds::intrusive
 
 //@cond
-#if defined(CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT) && defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+#if defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
 #   define CDS_BOOST_INTRUSIVE_DECL_OPTIONS3    typename... BIOptions
 #   define CDS_BOOST_INTRUSIVE_DECL_OPTIONS4    typename... BIOptions
 #   define CDS_BOOST_INTRUSIVE_DECL_OPTIONS5    typename... BIOptions
index cbc9f4a766c42d760b2a0e17e13abbebf2d02a48..f7efa001fbc07bcb8d05a5c19ad7adb8e149030c 100644 (file)
@@ -688,22 +688,7 @@ namespace michael {
 
         \endcode
     */
-#ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
     template <typename... Options>
-#else
-    template <
-        typename O1 = opt::none,
-        typename O2 = opt::none,
-        typename O3 = opt::none,
-        typename O4 = opt::none,
-        typename O5 = opt::none,
-        typename O6 = opt::none,
-        typename O7 = opt::none,
-        typename O8 = opt::none,
-        typename O9 = opt::none,
-        typename O10= opt::none
-    >
-#endif
     class Heap {
     protected:
 
@@ -727,11 +712,7 @@ namespace michael {
 
     protected:
         //@cond
-#ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
         typedef typename opt::make_options<default_options, Options...>::type   options;
-#else
-        typedef typename opt::make_options<default_options, O1, O2, O3, O4, O5, O6, O7, O8, O9, O10 >::type   options;
-#endif
         //@endcond
 
         //@cond
index e821749c60c40f92f6f1e3e3fa5a0fde64bf7426..c09955f952bf91e3c6af868fd681f7ec0bb203f3 100644 (file)
@@ -102,7 +102,7 @@ namespace cds { namespace memory {
             return size_t(-1) / sizeof(value_type);
         }
 
-#   if defined(CDS_MOVE_SEMANTICS_SUPPORT) && defined(CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT)
+#   if defined(CDS_MOVE_SEMANTICS_SUPPORT)
         template <class U, class... Args>
         void construct(U* p, Args&&... args)
         {
index 6d5a88d78c2a8716d5b5fbadb7cbdffe24135569..2b460b56d540f8b70086f31b34e4c39fbcf6c912 100644 (file)
@@ -63,7 +63,6 @@ namespace cds { namespace opt {
         //@endcond
     }   // namespace v
 
-#ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
     //@cond
     namespace details {
         template <class> struct hash_list;
@@ -131,400 +130,6 @@ namespace cds { namespace opt {
         //@endcond
     };
 
-#else   // no variadic template support
-    namespace details {
-        template <typename T> struct hash_list;
-        template <typename F1, typename F2>
-        struct hash_list< std::tuple<F1, F2> >
-        {
-            static size_t const size = 2;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2>  hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-            }
-        };
-
-        template <typename F1, typename F2, typename F3>
-        struct hash_list< std::tuple<F1, F2, F3> >
-        {
-            static size_t const size = 3;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-            }
-        };
-
-        template <typename F1, typename F2, typename F3, typename F4>
-        struct hash_list< std::tuple<F1, F2, F3, F4> >
-        {
-            static size_t const size = 4;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3, F4> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-                dest[3] = std::get<3>( hash_tuple )( v );
-            }
-        };
-
-        template <typename F1, typename F2, typename F3, typename F4, typename F5>
-        struct hash_list< std::tuple<F1, F2, F3, F4, F5> >
-        {
-            static size_t const size = 5;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3, F4, F5> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-                dest[3] = std::get<3>( hash_tuple )( v );
-                dest[4] = std::get<4>( hash_tuple )( v );
-            }
-        };
-
-        template <typename F1, typename F2, typename F3, typename F4, typename F5, typename F6>
-        struct hash_list< std::tuple<F1, F2, F3, F4, F5, F6> >
-        {
-            static size_t const size = 6;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3, F4, F5, F6> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-                dest[3] = std::get<3>( hash_tuple )( v );
-                dest[4] = std::get<4>( hash_tuple )( v );
-                dest[5] = std::get<5>( hash_tuple )( v );
-            }
-        };
-
-        template <typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7>
-        struct hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7> >
-        {
-            static size_t const size = 7;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3, F4, F5, F6, F7> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-                dest[3] = std::get<3>( hash_tuple )( v );
-                dest[4] = std::get<4>( hash_tuple )( v );
-                dest[5] = std::get<5>( hash_tuple )( v );
-                dest[6] = std::get<6>( hash_tuple )( v );
-            }
-        };
-
-        template <typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7, typename F8>
-        struct hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7, F8> >
-        {
-            static size_t const size = 8;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3, F4, F5, F6, F7, F8> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-                dest[3] = std::get<3>( hash_tuple )( v );
-                dest[4] = std::get<4>( hash_tuple )( v );
-                dest[5] = std::get<5>( hash_tuple )( v );
-                dest[6] = std::get<6>( hash_tuple )( v );
-                dest[7] = std::get<7>( hash_tuple )( v );
-            }
-        };
-
-#if !((CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL) && _MSC_VER == 1700)
-        // MSVC 11: max count of argument is 8
-
-        template <typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7, typename F8, typename F9>
-        struct hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7, F8, F9> >
-        {
-            static size_t const size = 9;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3, F4, F5, F6, F7, F8, F9> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-                dest[3] = std::get<3>( hash_tuple )( v );
-                dest[4] = std::get<4>( hash_tuple )( v );
-                dest[5] = std::get<5>( hash_tuple )( v );
-                dest[6] = std::get<6>( hash_tuple )( v );
-                dest[7] = std::get<7>( hash_tuple )( v );
-                dest[8] = std::get<8>( hash_tuple )( v );
-            }
-        };
-
-        template <typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7, typename F8, typename F9,
-                  typename F10>
-        struct hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> >
-        {
-            static size_t const size = 10;
-            typedef size_t values[size];
-            typedef std::tuple<F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> hash_tuple_type;
-
-            hash_tuple_type hash_tuple;
-
-            hash_list()
-            {}
-            hash_list( hash_tuple_type const& t)
-                : hash_tuple( t )
-            {}
-#       ifdef CDS_MOVE_SEMANTICS_SUPPORT
-            hash_list( hash_tuple_type&& t)
-                : hash_tuple( t )
-            {}
-#       endif
-
-            template <typename T>
-            void operator()( size_t * dest, T const& v ) const
-            {
-                dest[0] = std::get<0>( hash_tuple )( v );
-                dest[1] = std::get<1>( hash_tuple )( v );
-                dest[2] = std::get<2>( hash_tuple )( v );
-                dest[3] = std::get<3>( hash_tuple )( v );
-                dest[4] = std::get<4>( hash_tuple )( v );
-                dest[5] = std::get<5>( hash_tuple )( v );
-                dest[6] = std::get<6>( hash_tuple )( v );
-                dest[7] = std::get<7>( hash_tuple )( v );
-                dest[8] = std::get<8>( hash_tuple )( v );
-                dest[9] = std::get<9>( hash_tuple )( v );
-            }
-        };
-#endif
-    } // namespace details
-
-    template< typename F1, typename F2 >
-    struct hash< std::tuple< F1, F2 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2> >  hash;
-        };
-        //@endcond
-    };
-    template< typename F1, typename F2, typename F3 >
-    struct hash< std::tuple< F1, F2, F3 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3> >  hash;
-        };
-        //@endcond
-    };
-    template< typename F1, typename F2, typename F3, typename F4 >
-    struct hash< std::tuple< F1, F2, F3, F4 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3, F4> >  hash;
-        };
-        //@endcond
-    };
-    template< typename F1, typename F2, typename F3, typename F4, typename F5 >
-    struct hash< std::tuple< F1, F2, F3, F4, F5 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3, F4, F5> >  hash;
-        };
-        //@endcond
-    };
-    template< typename F1, typename F2, typename F3, typename F4, typename F5, typename F6 >
-    struct hash< std::tuple< F1, F2, F3, F4, F5, F6 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3, F4, F5, F6> >  hash;
-        };
-        //@endcond
-    };
-    template< typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7 >
-    struct hash< std::tuple< F1, F2, F3, F4, F5, F6, F7 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7> >  hash;
-        };
-        //@endcond
-    };
-    template< typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7, typename F8 >
-    struct hash< std::tuple< F1, F2, F3, F4, F5, F6, F7, F8 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7, F8> >  hash;
-        };
-        //@endcond
-    };
-
-#if !((CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL) && _MSC_VER == 1700)
-    // MSVC 11: max count of argument is 8
-
-    template< typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7, typename F8, typename F9 >
-    struct hash< std::tuple< F1, F2, F3, F4, F5, F6, F7, F8, F9 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7, F8, F9> >  hash;
-        };
-        //@endcond
-    };
-    template< typename F1, typename F2, typename F3, typename F4, typename F5, typename F6, typename F7, typename F8, typename F9,
-              typename F10 >
-    struct hash< std::tuple< F1, F2, F3, F4, F5, F6, F7, F8, F9, F10 > >
-    {
-        //@cond
-        template <typename Base> struct pack: public Base
-        {
-            typedef details::hash_list< std::tuple<F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> >  hash;
-        };
-        //@endcond
-    };
-#endif  // !MSVC11
-#endif  // #ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
 
     //@cond
     namespace details {
diff --git a/cds/opt/make_options_std.h b/cds/opt/make_options_std.h
deleted file mode 100644 (file)
index a85d9af..0000000
+++ /dev/null
@@ -1,535 +0,0 @@
-//$$CDS-header$$
-
-#ifndef __CDS_OPT_MAKE_OPTIONS_STD_H
-#define __CDS_OPT_MAKE_OPTIONS_STD_H
-
-#ifndef __CDS_OPT_OPTIONS_H
-#   error <cds/opt/options.h> must be included instead of <cds/opt/make_options_std.h>
-#endif
-
-#include <cds/details/void_selector.h>
-
-// @cond
-
-#define CDS_DECL_OPTIONS1   typename O1=cds::opt::none
-#define CDS_DECL_OPTIONS2   CDS_DECL_OPTIONS1,typename O2=cds::opt::none
-#define CDS_DECL_OPTIONS3   CDS_DECL_OPTIONS2,typename O3=cds::opt::none
-#define CDS_DECL_OPTIONS4   CDS_DECL_OPTIONS3,typename O4=cds::opt::none
-#define CDS_DECL_OPTIONS5   CDS_DECL_OPTIONS4,typename O5=cds::opt::none
-#define CDS_DECL_OPTIONS6   CDS_DECL_OPTIONS5,typename O6=cds::opt::none
-#define CDS_DECL_OPTIONS7   CDS_DECL_OPTIONS6,typename O7=cds::opt::none
-#define CDS_DECL_OPTIONS8   CDS_DECL_OPTIONS7,typename O8=cds::opt::none
-#define CDS_DECL_OPTIONS9   CDS_DECL_OPTIONS8,typename O9=cds::opt::none
-#define CDS_DECL_OPTIONS10  CDS_DECL_OPTIONS9,typename O10=cds::opt::none
-#define CDS_DECL_OPTIONS11  CDS_DECL_OPTIONS10,typename O11=cds::opt::none
-#define CDS_DECL_OPTIONS12  CDS_DECL_OPTIONS11,typename O12=cds::opt::none
-#define CDS_DECL_OPTIONS13  CDS_DECL_OPTIONS12,typename O13=cds::opt::none
-#define CDS_DECL_OPTIONS14  CDS_DECL_OPTIONS13,typename O14=cds::opt::none
-#define CDS_DECL_OPTIONS15  CDS_DECL_OPTIONS14,typename O15=cds::opt::none
-#define CDS_DECL_OPTIONS16  CDS_DECL_OPTIONS15,typename O16=cds::opt::none
-
-#define CDS_DECL_OPTIONS    CDS_DECL_OPTIONS16
-
-#define CDS_DECL_OTHER_OPTIONS1   typename OO1=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS2   CDS_DECL_OTHER_OPTIONS1,typename OO2=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS3   CDS_DECL_OTHER_OPTIONS2,typename OO3=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS4   CDS_DECL_OTHER_OPTIONS3,typename OO4=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS5   CDS_DECL_OTHER_OPTIONS4,typename OO5=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS6   CDS_DECL_OTHER_OPTIONS5,typename OO6=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS7   CDS_DECL_OTHER_OPTIONS6,typename OO7=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS8   CDS_DECL_OTHER_OPTIONS7,typename OO8=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS9   CDS_DECL_OTHER_OPTIONS8,typename OO9=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS10  CDS_DECL_OTHER_OPTIONS9,typename OO10=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS11  CDS_DECL_OTHER_OPTIONS10,typename OO11=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS12  CDS_DECL_OTHER_OPTIONS11,typename OO12=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS13  CDS_DECL_OTHER_OPTIONS12,typename OO13=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS14  CDS_DECL_OTHER_OPTIONS13,typename OO14=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS15  CDS_DECL_OTHER_OPTIONS14,typename OO15=cds::opt::none
-#define CDS_DECL_OTHER_OPTIONS16  CDS_DECL_OTHER_OPTIONS15,typename OO16=cds::opt::none
-
-// for template specializations
-#define CDS_SPEC_OPTIONS1   typename O1
-#define CDS_SPEC_OPTIONS2   CDS_SPEC_OPTIONS1,typename O2
-#define CDS_SPEC_OPTIONS3   CDS_SPEC_OPTIONS2,typename O3
-#define CDS_SPEC_OPTIONS4   CDS_SPEC_OPTIONS3,typename O4
-#define CDS_SPEC_OPTIONS5   CDS_SPEC_OPTIONS4,typename O5
-#define CDS_SPEC_OPTIONS6   CDS_SPEC_OPTIONS5,typename O6
-#define CDS_SPEC_OPTIONS7   CDS_SPEC_OPTIONS6,typename O7
-#define CDS_SPEC_OPTIONS8   CDS_SPEC_OPTIONS7,typename O8
-#define CDS_SPEC_OPTIONS9   CDS_SPEC_OPTIONS8,typename O9
-#define CDS_SPEC_OPTIONS10  CDS_SPEC_OPTIONS9,typename O10
-#define CDS_SPEC_OPTIONS11  CDS_SPEC_OPTIONS10,typename O11
-#define CDS_SPEC_OPTIONS12  CDS_SPEC_OPTIONS11,typename O12
-#define CDS_SPEC_OPTIONS13  CDS_SPEC_OPTIONS12,typename O13
-#define CDS_SPEC_OPTIONS14  CDS_SPEC_OPTIONS13,typename O14
-#define CDS_SPEC_OPTIONS15  CDS_SPEC_OPTIONS14,typename O15
-#define CDS_SPEC_OPTIONS16  CDS_SPEC_OPTIONS15,typename O16
-
-#define CDS_SPEC_OPTIONS    CDS_SPEC_OPTIONS16
-
-#define CDS_OPTIONS1    O1
-#define CDS_OPTIONS2    O1,O2
-#define CDS_OPTIONS3    O1,O2,O3
-#define CDS_OPTIONS4    O1,O2,O3,O4
-#define CDS_OPTIONS5    O1,O2,O3,O4,O5
-#define CDS_OPTIONS6    O1,O2,O3,O4,O5,O6
-#define CDS_OPTIONS7    O1,O2,O3,O4,O5,O6,O7
-#define CDS_OPTIONS8    O1,O2,O3,O4,O5,O6,O7,O8
-#define CDS_OPTIONS9    O1,O2,O3,O4,O5,O6,O7,O8,O9
-#define CDS_OPTIONS10   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10
-#define CDS_OPTIONS11   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11
-#define CDS_OPTIONS12   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12
-#define CDS_OPTIONS13   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13
-#define CDS_OPTIONS14   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14
-#define CDS_OPTIONS15   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15
-#define CDS_OPTIONS16   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16
-//#define CDS_OPTIONS17   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17
-//#define CDS_OPTIONS18   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18
-//#define CDS_OPTIONS19   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19
-//#define CDS_OPTIONS20   O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20
-
-#define CDS_OPTIONS     CDS_OPTIONS16
-
-#define CDS_OTHER_OPTIONS1    OO1
-#define CDS_OTHER_OPTIONS2    OO1,OO2
-#define CDS_OTHER_OPTIONS3    OO1,OO2,OO3
-#define CDS_OTHER_OPTIONS4    OO1,OO2,OO3,OO4
-#define CDS_OTHER_OPTIONS5    OO1,OO2,OO3,OO4,OO5
-#define CDS_OTHER_OPTIONS6    OO1,OO2,OO3,OO4,OO5,OO6
-#define CDS_OTHER_OPTIONS7    OO1,OO2,OO3,OO4,OO5,OO6,OO7
-#define CDS_OTHER_OPTIONS8    OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8
-#define CDS_OTHER_OPTIONS9    OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9
-#define CDS_OTHER_OPTIONS10   OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9,OO10
-#define CDS_OTHER_OPTIONS11   OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9,OO10,OO11
-#define CDS_OTHER_OPTIONS12   OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9,OO10,OO11,OO12
-#define CDS_OTHER_OPTIONS13   OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9,OO10,OO11,OO12,OO13
-#define CDS_OTHER_OPTIONS14   OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9,OO10,OO11,OO12,OO13,OO14
-#define CDS_OTHER_OPTIONS15   OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9,OO10,OO11,OO12,OO13,OO14,OO15
-#define CDS_OTHER_OPTIONS16   OO1,OO2,OO3,OO4,OO5,OO6,OO7,OO8,OO9,OO10,OO11,OO12,OO13,OO14,OO15,OO16
-
-namespace cds { namespace opt {
-
-    template<typename OptionList, typename Option>
-    struct do_pack
-    {
-        // Use "pack" member template to pack options
-        typedef typename Option::template pack<OptionList> type;
-    };
-
-    template <
-        typename DefaultOptions
-        ,typename O1 = none
-        ,typename O2 = none
-        ,typename O3 = none
-        ,typename O4 = none
-        ,typename O5 = none
-        ,typename O6 = none
-        ,typename O7 = none
-        ,typename O8 = none
-        ,typename O9 = none
-        ,typename O10 = none
-        ,typename O11 = none
-        ,typename O12 = none
-        ,typename O13 = none
-        ,typename O14 = none
-        ,typename O15 = none
-        ,typename O16 = none
-    >
-    struct make_options {
-        /*
-        typedef
-            typename do_pack<
-                typename do_pack<
-                    typename do_pack<
-                        typename do_pack<
-                            typename do_pack<
-                                typename do_pack<
-                                    typename do_pack<
-                                        typename do_pack<
-                                            typename do_pack<
-                                                typename do_pack<
-                                                    typename do_pack<
-                                                        typename do_pack<
-                                                            typename do_pack<
-                                                                typename do_pack<
-                                                                    typename do_pack<
-                                                                        typename do_pack<
-                                                                            DefaultOptions
-                                                                            ,O16
-                                                                        >::type
-                                                                        ,O15
-                                                                    >::type
-                                                                    ,O14
-                                                                >::type
-                                                                ,O13
-                                                            >::type
-                                                            ,O12
-                                                        >::type
-                                                        ,O11
-                                                    >::type
-                                                    ,O10
-                                                >::type
-                                                ,O9
-                                            >::type
-                                            ,O8
-                                        >::type
-                                        ,O7
-                                    >::type
-                                    ,O6
-                                >::type
-                                ,O5
-                            >::type
-                            ,O4
-                        >::type
-                        ,O3
-                    >::type
-                    ,O2
-                >::type
-                ,O1
-            >::type
-        type;
-        */
-        struct type: public
-            do_pack<
-                typename do_pack<
-                    typename do_pack<
-                        typename do_pack<
-                            typename do_pack<
-                                typename do_pack<
-                                    typename do_pack<
-                                        typename do_pack<
-                                            typename do_pack<
-                                                typename do_pack<
-                                                    typename do_pack<
-                                                        typename do_pack<
-                                                            typename do_pack<
-                                                                typename do_pack<
-                                                                    typename do_pack<
-                                                                        typename do_pack<
-                                                                            DefaultOptions
-                                                                            ,O16
-                                                                        >::type
-                                                                        ,O15
-                                                                    >::type
-                                                                    ,O14
-                                                                >::type
-                                                                ,O13
-                                                            >::type
-                                                            ,O12
-                                                        >::type
-                                                        ,O11
-                                                    >::type
-                                                    ,O10
-                                                >::type
-                                                ,O9
-                                            >::type
-                                            ,O8
-                                        >::type
-                                        ,O7
-                                    >::type
-                                    ,O6
-                                >::type
-                                ,O5
-                            >::type
-                            ,O4
-                        >::type
-                        ,O3
-                    >::type
-                    ,O2
-                >::type
-                ,O1
-            >::type
-        {};
-    };
-
-
-    // *****************************************************************
-    // find_type_traits metafunction
-    // *****************************************************************
-
-    namespace details {
-        template <typename T, typename DefaultOptions>
-        struct find_type_traits_option {
-            typedef DefaultOptions type;
-        };
-
-        template <typename T, typename DefaultOptions>
-        struct find_type_traits_option< cds::opt::type_traits<T>, DefaultOptions> {
-            typedef T  type;
-        };
-    }
-
-    template <
-        typename DefaultOptions
-        ,typename O1 = none
-        ,typename O2 = none
-        ,typename O3 = none
-        ,typename O4 = none
-        ,typename O5 = none
-        ,typename O6 = none
-        ,typename O7 = none
-        ,typename O8 = none
-        ,typename O9 = none
-        ,typename O10 = none
-        ,typename O11 = none
-        ,typename O12 = none
-        ,typename O13 = none
-        ,typename O14 = none
-        ,typename O15 = none
-        ,typename O16 = none
-    >
-    struct find_type_traits {
-        /*
-        typedef typename details::find_type_traits_option< O1,
-            typename details::find_type_traits_option< O2,
-                typename details::find_type_traits_option< O3,
-                    typename details::find_type_traits_option< O4,
-                        typename details::find_type_traits_option< O5,
-                            typename details::find_type_traits_option< O6,
-                                typename details::find_type_traits_option< O7,
-                                    typename details::find_type_traits_option< O8,
-                                        typename details::find_type_traits_option< O9,
-                                            typename details::find_type_traits_option< O10,
-                                                typename details::find_type_traits_option< O11,
-                                                    typename details::find_type_traits_option< O12,
-                                                        typename details::find_type_traits_option< O13,
-                                                            typename details::find_type_traits_option< O14,
-                                                                typename details::find_type_traits_option< O15,
-                                                                    typename details::find_type_traits_option< O16, DefaultOptions>::type
-                                                                >::type
-                                                            >::type
-                                                        >::type
-                                                    >::type
-                                                >::type
-                                            >::type
-                                        >::type
-                                    >::type
-                                >::type
-                            >::type
-                        >::type
-                    >::type
-                >::type
-            >::type
-        >::type type;
-        */
-        struct type: public details::find_type_traits_option< O1,
-            typename details::find_type_traits_option< O2,
-                typename details::find_type_traits_option< O3,
-                    typename details::find_type_traits_option< O4,
-                        typename details::find_type_traits_option< O5,
-                            typename details::find_type_traits_option< O6,
-                                typename details::find_type_traits_option< O7,
-                                    typename details::find_type_traits_option< O8,
-                                        typename details::find_type_traits_option< O9,
-                                            typename details::find_type_traits_option< O10,
-                                                typename details::find_type_traits_option< O11,
-                                                    typename details::find_type_traits_option< O12,
-                                                        typename details::find_type_traits_option< O13,
-                                                            typename details::find_type_traits_option< O14,
-                                                                typename details::find_type_traits_option< O15,
-                                                                    typename details::find_type_traits_option< O16, DefaultOptions>::type
-                                                                >::type
-                                                            >::type
-                                                        >::type
-                                                    >::type
-                                                >::type
-                                            >::type
-                                        >::type
-                                    >::type
-                                >::type
-                            >::type
-                        >::type
-                    >::type
-                >::type
-            >::type
-        >::type
-        {};
-    };
-
-
-    // *****************************************************************
-    // find_option metafunction
-    // *****************************************************************
-    namespace details {
-
-        template <typename A, typename B>
-        struct select_option
-        {
-            typedef void type;
-        };
-
-        template <template <typename> class What, typename Option, typename Default>
-        struct select_option< What<Option>, What<Default> >
-        {
-            typedef What<Option>   type;
-        };
-
-        // Specializations for integral type of option
-#define _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION( _type ) template <template <_type> class What, _type Option, _type Default> \
-        struct select_option< What<Option>, What<Default> > { typedef What<Option>   type    ; };
-
-// For user-defined enum types
-#define CDS_DECLARE_FIND_OPTION_INTEGRAL_SPECIALIZATION( _type ) namespace cds { namespace opt { namespace details { _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(_type ) }}}
-
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(bool)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(char)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(unsigned char)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(signed char)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(short int)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(unsigned short int)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(int)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(unsigned int)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(long)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(unsigned long)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(long long)
-        _CDS_FIND_OPTION_INTEGRAL_SPECIALIZATION(unsigned long long)
-
-
-        template <typename What, typename Opt, typename Result>
-        struct find_option
-        {
-            typedef typename cds::details::void_selector< typename select_option< Opt, What >::type, Result >::type type;
-        };
-
-        template <typename What, typename Opt>
-        struct find_option< What, Opt, void>
-        {
-            typedef typename select_option< Opt, What >::type  type;
-        };
-
-        template <typename What, typename Result>
-        struct find_option_decision
-        {
-            typedef Result type;
-        };
-
-        template <typename What>
-        struct find_option_decision<What, void>
-        {
-            typedef What type;
-        };
-
-
-    } // namespace details
-
-    template <
-        typename What
-        ,typename O1 = none
-        ,typename O2 = none
-        ,typename O3 = none
-        ,typename O4 = none
-        ,typename O5 = none
-        ,typename O6 = none
-        ,typename O7 = none
-        ,typename O8 = none
-        ,typename O9 = none
-        ,typename O10 = none
-        ,typename O11 = none
-        ,typename O12 = none
-        ,typename O13 = none
-        ,typename O14 = none
-        ,typename O15 = none
-        ,typename O16 = none
-    >
-    struct find_option {
-        typedef typename details::find_option_decision< What,
-             typename details::find_option< What, O1,
-                typename details::find_option< What, O2,
-                    typename details::find_option< What, O3,
-                        typename details::find_option< What, O4,
-                            typename details::find_option< What, O5,
-                                typename details::find_option< What, O6,
-                                    typename details::find_option< What, O7,
-                                        typename details::find_option< What, O8,
-                                            typename details::find_option< What, O9,
-                                                typename details::find_option< What, O10,
-                                                    typename details::find_option< What, O11,
-                                                        typename details::find_option< What, O12,
-                                                            typename details::find_option< What, O13,
-                                                                typename details::find_option< What, O14,
-                                                                    typename details::find_option< What, O15,
-                                                                        typename details::find_option< What, O16, void >::type
-                                                                    >::type
-                                                                >::type
-                                                            >::type
-                                                        >::type
-                                                    >::type
-                                                >::type
-                                            >::type
-                                        >::type
-                                    >::type
-                                >::type
-                            >::type
-                        >::type
-                    >::type
-                >::type
-            >::type
-        >::type type;
-    };
-
-
-    // *****************************************************************
-    // select metafunction
-    // *****************************************************************
-
-    namespace details {
-
-        template <typename What, typename Tag, typename Value, typename Others>
-        struct select
-        {
-            typedef typename Others   type;
-        };
-
-        template <typename What, typename Value, typename Others>
-        struct select< What, What, Value, Others>
-        {
-            typedef Value   type;
-        };
-
-        template <typename What, typename Tag, typename Value>
-        struct select< What, Tag, Value, void>
-        {
-            typedef What    type;
-        };
-
-        template <typename What, typename Value>
-        struct select< What, What, Value, void>
-        {
-            typedef Value    type;
-        };
-    }   // namespace details
-
-    template <typename What,
-        typename Tag1, typename Value1,
-        typename Tag2 = none, typename Value2 = none,
-        typename Tag3 = none, typename Value3 = none,
-        typename Tag4 = none, typename Value4 = none,
-        typename Tag5 = none, typename Value5 = none,
-        typename Tag6 = none, typename Value6 = none,
-        typename Tag7 = none, typename Value7 = none,
-        typename Tag8 = none, typename Value8 = none
-    >
-    struct select {
-        typedef typename details::select< What, Tag1, Value1,
-            typename details::select< What, Tag2, Value2,
-                typename details::select< What, Tag3, Value3,
-                    typename details::select< What, Tag4, Value4,
-                        typename details::select< What, Tag5, Value5,
-                            typename details::select< What, Tag6, Value6,
-                                typename details::select< What, Tag7, Value7,
-                                    typename details::select< What, Tag8, Value8, void
-                                    >::type
-                                >::type
-                            >::type
-                        >::type
-                    >::type
-                >::type
-            >::type
-        >::type type;
-    };
-
-
-}}  // namespace cds::opt
-//@endcond
-
-#endif // #ifndef __CDS_OPT_MAKE_OPTIONS_STD_H
index 9b34428adcc708f990dc16a4ed53c78ab6573a69..eae694709aa168ee717959fb30ebc7f480bd37c8 100644 (file)
@@ -704,10 +704,6 @@ namespace opt {
 
 }}  // namespace cds::opt
 
-#ifdef CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT
-#   include <cds/opt/make_options_var.h>
-#else
-#   include <cds/opt/make_options_std.h>
-#endif
+#include <cds/opt/make_options_var.h>
 
 #endif  // #ifndef __CDS_OPT_OPTIONS_H
index 36f23cfd724cb846c736afae510b1aa8d4663d7c..a9bb795440e9a95d5180f5a4b70b2923f9cfaba1 100644 (file)
     <ClInclude Include="..\..\..\cds\opt\buffer.h" />\r
     <ClInclude Include="..\..\..\cds\opt\compare.h" />\r
     <ClInclude Include="..\..\..\cds\opt\hash.h" />\r
-    <ClInclude Include="..\..\..\cds\opt\make_options_std.h" />\r
     <ClInclude Include="..\..\..\cds\opt\make_options_var.h" />\r
     <ClInclude Include="..\..\..\cds\opt\options.h" />\r
     <ClInclude Include="..\..\..\cds\opt\permutation.h" />\r
index 4c3f67590bc9bba45765af637ff00a25974174c7..2727785a61d4af0ec6737f87e4f1c646fded2d1b 100644 (file)
     <ClInclude Include="..\..\..\cds\opt\hash.h">\r
       <Filter>Header Files\cds\opt</Filter>\r
     </ClInclude>\r
-    <ClInclude Include="..\..\..\cds\opt\make_options_std.h">\r
-      <Filter>Header Files\cds\opt</Filter>\r
-    </ClInclude>\r
     <ClInclude Include="..\..\..\cds\opt\make_options_var.h">\r
       <Filter>Header Files\cds\opt</Filter>\r
     </ClInclude>\r