Merge commit '7999eaee97df27c88866d1dfd130068dba955e88' into dev
[libcds.git] / tests / unit / map2 / map_types.h
index c5d2cd7e59ff661bdf230e2bfb6778b5c6c4f959..d79465096f6eaab1b2e0b0ec8b9eb6dbe13cda63 100644 (file)
 #include <cds/urcu/signal_threaded.h>
 
 #include <cds/container/michael_kvlist_hp.h>
-#include <cds/container/michael_kvlist_hrc.h>
-#include <cds/container/michael_kvlist_ptb.h>
+#include <cds/container/michael_kvlist_dhp.h>
 #include <cds/container/michael_kvlist_rcu.h>
 #include <cds/container/michael_kvlist_nogc.h>
 
 #include <cds/container/lazy_kvlist_hp.h>
-#include <cds/container/lazy_kvlist_hrc.h>
-#include <cds/container/lazy_kvlist_ptb.h>
+#include <cds/container/lazy_kvlist_dhp.h>
 #include <cds/container/lazy_kvlist_rcu.h>
 #include <cds/container/lazy_kvlist_nogc.h>
 
@@ -35,8 +33,7 @@
 #include <cds/container/cuckoo_map.h>
 
 #include <cds/container/skip_list_map_hp.h>
-#include <cds/container/skip_list_map_hrc.h>
-#include <cds/container/skip_list_map_ptb.h>
+#include <cds/container/skip_list_map_dhp.h>
 #include <cds/container/skip_list_map_rcu.h>
 #include <cds/container/skip_list_map_nogc.h>
 
@@ -116,19 +113,19 @@ namespace map2 {
         }
     };
 
-    template <typename K, typename V, CDS_DECL_OPTIONS10>
+    template <typename K, typename V, typename... Options>
     class CuckooStripedMap:
         public cc::CuckooMap< K, V,
             typename cc::cuckoo::make_traits<
                 co::mutex_policy< cc::cuckoo::striping<> >
-                ,CDS_OPTIONS10
+                ,Options...
             >::type
         >
     {
     public:
         typedef typename cc::cuckoo::make_traits<
             co::mutex_policy< cc::cuckoo::striping<> >
-            ,CDS_OPTIONS10
+            ,Options...
         >::type cuckoo_traits;
 
         typedef cc::CuckooMap< K, V, cuckoo_traits > cuckoo_base_class;
@@ -145,19 +142,19 @@ namespace map2 {
         }
     };
 
-    template <typename K, typename V, CDS_DECL_OPTIONS10>
+    template <typename K, typename V, typename... Options>
     class CuckooRefinableMap:
         public cc::CuckooMap< K, V,
             typename cc::cuckoo::make_traits<
                 co::mutex_policy< cc::cuckoo::refinable<> >
-                ,CDS_OPTIONS10
+                ,Options...
             >::type
         >
     {
     public:
         typedef typename cc::cuckoo::make_traits<
             co::mutex_policy< cc::cuckoo::refinable<> >
-            ,CDS_OPTIONS10
+            ,Options...
         >::type cuckoo_traits;
 
         typedef cc::CuckooMap< K, V, cuckoo_traits > cuckoo_base_class;
@@ -260,85 +257,45 @@ namespace map2 {
             >::type
         >   MichaelList_HP_less_michaelAlloc;
 
-        typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
+        typedef cc::MichaelKVList< cds::gc::DHP, Key, Value,
             typename cc::michael_list::make_traits<
                 co::compare< compare >
             >::type
-        >   MichaelList_HRC_cmp_stdAlloc;
+        >   MichaelList_DHP_cmp_stdAlloc;
 
-        typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
+        typedef cc::MichaelKVList< cds::gc::DHP, Key, Value,
             typename cc::michael_list::make_traits<
                 co::compare< compare >
                 ,co::memory_model< co::v::sequential_consistent >
             >::type
-        >   MichaelList_HRC_cmp_stdAlloc_seqcst;
+        >   MichaelList_DHP_cmp_stdAlloc_seqcst;
 
-        typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
+        typedef cc::MichaelKVList< cds::gc::DHP, Key, Value,
             typename cc::michael_list::make_traits<
                 co::compare< compare >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   MichaelList_HRC_cmp_michaelAlloc;
+        >   MichaelList_DHP_cmp_michaelAlloc;
 
-        typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
+        typedef cc::MichaelKVList< cds::gc::DHP, Key, Value,
             typename cc::michael_list::make_traits<
                 co::less< less >
             >::type
-        >   MichaelList_HRC_less_stdAlloc;
+        >   MichaelList_DHP_less_stdAlloc;
 
-        typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
+        typedef cc::MichaelKVList< cds::gc::DHP, Key, Value,
             typename cc::michael_list::make_traits<
                 co::less< less >
                 ,co::memory_model< co::v::sequential_consistent >
             >::type
-        >   MichaelList_HRC_less_stdAlloc_seqcst;
+        >   MichaelList_DHP_less_stdAlloc_seqcst;
 
-        typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
+        typedef cc::MichaelKVList< cds::gc::DHP, Key, Value,
             typename cc::michael_list::make_traits<
                 co::less< less >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   MichaelList_HRC_less_michaelAlloc;
-
-        typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
-            typename cc::michael_list::make_traits<
-                co::compare< compare >
-            >::type
-        >   MichaelList_PTB_cmp_stdAlloc;
-
-        typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
-            typename cc::michael_list::make_traits<
-                co::compare< compare >
-                ,co::memory_model< co::v::sequential_consistent >
-            >::type
-        >   MichaelList_PTB_cmp_stdAlloc_seqcst;
-
-        typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
-            typename cc::michael_list::make_traits<
-                co::compare< compare >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   MichaelList_PTB_cmp_michaelAlloc;
-
-        typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
-            typename cc::michael_list::make_traits<
-                co::less< less >
-            >::type
-        >   MichaelList_PTB_less_stdAlloc;
-
-        typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
-            typename cc::michael_list::make_traits<
-                co::less< less >
-                ,co::memory_model< co::v::sequential_consistent >
-            >::type
-        >   MichaelList_PTB_less_stdAlloc_seqcst;
-
-        typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
-            typename cc::michael_list::make_traits<
-                co::less< less >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   MichaelList_PTB_less_michaelAlloc;
+        >   MichaelList_DHP_less_michaelAlloc;
 
         // RCU
         typedef cc::MichaelKVList< rcu_gpi, Key, Value,
@@ -739,81 +696,43 @@ namespace map2 {
             >::type
         >   MichaelMap_HP_less_michaelAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, MichaelList_DHP_cmp_stdAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_HRC_cmp_stdAlloc;
+        >   MichaelMap_DHP_cmp_stdAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc_seqcst,
+        typedef cc::MichaelHashMap< cds::gc::DHP, MichaelList_DHP_cmp_stdAlloc_seqcst,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_HRC_cmp_stdAlloc_seqcst;
+        >   MichaelMap_DHP_cmp_stdAlloc_seqcst;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_michaelAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, MichaelList_DHP_cmp_michaelAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   MichaelMap_HRC_cmp_michaelAlloc;
+        >   MichaelMap_DHP_cmp_michaelAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_stdAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, MichaelList_DHP_less_stdAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_HRC_less_stdAlloc;
+        >   MichaelMap_DHP_less_stdAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_stdAlloc_seqcst,
+        typedef cc::MichaelHashMap< cds::gc::DHP, MichaelList_DHP_less_stdAlloc_seqcst,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_HRC_less_stdAlloc_seqcst;
+        >   MichaelMap_DHP_less_stdAlloc_seqcst;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_michaelAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, MichaelList_DHP_less_michaelAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   MichaelMap_HRC_less_michaelAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_cmp_stdAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_PTB_cmp_stdAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_cmp_stdAlloc_seqcst,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_PTB_cmp_stdAlloc_seqcst;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_cmp_michaelAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   MichaelMap_PTB_cmp_michaelAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_less_stdAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_PTB_less_stdAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_less_stdAlloc_seqcst,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_PTB_less_stdAlloc_seqcst;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_less_michaelAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   MichaelMap_PTB_less_michaelAlloc;
+        >   MichaelMap_DHP_less_michaelAlloc;
 
         //RCU
         typedef cc::MichaelHashMap< rcu_gpi, MichaelList_RCU_GPI_cmp_stdAlloc,
@@ -1094,85 +1013,45 @@ namespace map2 {
             >::type
         >   LazyList_HP_less_michaelAlloc;
 
-        typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
+        typedef cc::LazyKVList< cds::gc::DHP, Key, Value,
             typename cc::lazy_list::make_traits<
                 co::compare< compare >
             >::type
-        >   LazyList_HRC_cmp_stdAlloc;
+        >   LazyList_DHP_cmp_stdAlloc;
 
-        typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
+        typedef cc::LazyKVList< cds::gc::DHP, Key, Value,
             typename cc::lazy_list::make_traits<
                 co::compare< compare >
                 ,co::memory_model< co::v::sequential_consistent >
             >::type
-        >   LazyList_HRC_cmp_stdAlloc_seqcst;
+        >   LazyList_DHP_cmp_stdAlloc_seqcst;
 
-        typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
+        typedef cc::LazyKVList< cds::gc::DHP, Key, Value,
             typename cc::lazy_list::make_traits<
                 co::compare< compare >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   LazyList_HRC_cmp_michaelAlloc;
+        >   LazyList_DHP_cmp_michaelAlloc;
 
-        typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
+        typedef cc::LazyKVList< cds::gc::DHP, Key, Value,
             typename cc::lazy_list::make_traits<
                 co::less< less >
             >::type
-        >   LazyList_HRC_less_stdAlloc;
+        >   LazyList_DHP_less_stdAlloc;
 
-        typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
+        typedef cc::LazyKVList< cds::gc::DHP, Key, Value,
             typename cc::lazy_list::make_traits<
                 co::less< less >
                 ,co::memory_model< co::v::sequential_consistent >
             >::type
-        >   LazyList_HRC_less_stdAlloc_seqcst;
+        >   LazyList_DHP_less_stdAlloc_seqcst;
 
-        typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
+        typedef cc::LazyKVList< cds::gc::DHP, Key, Value,
             typename cc::lazy_list::make_traits<
                 co::less< less >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   LazyList_HRC_less_michaelAlloc;
-
-        typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
-            typename cc::lazy_list::make_traits<
-                co::compare< compare >
-            >::type
-        >   LazyList_PTB_cmp_stdAlloc;
-
-        typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
-            typename cc::lazy_list::make_traits<
-                co::compare< compare >
-                ,co::memory_model< co::v::sequential_consistent >
-            >::type
-        >   LazyList_PTB_cmp_stdAlloc_seqcst;
-
-        typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
-            typename cc::lazy_list::make_traits<
-                co::compare< compare >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   LazyList_PTB_cmp_michaelAlloc;
-
-        typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
-            typename cc::lazy_list::make_traits<
-                co::less< less >
-            >::type
-        >   LazyList_PTB_less_stdAlloc;
-
-        typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
-            typename cc::lazy_list::make_traits<
-                co::less< less >
-                ,co::memory_model< co::v::sequential_consistent >
-            >::type
-        >   LazyList_PTB_less_stdAlloc_seqcst;
-
-        typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
-            typename cc::lazy_list::make_traits<
-                co::less< less >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   LazyList_PTB_less_michaelAlloc;
+        >   LazyList_DHP_less_michaelAlloc;
 
         // RCU
         typedef cc::LazyKVList< rcu_gpi, Key, Value,
@@ -1463,81 +1342,43 @@ namespace map2 {
             >::type
         >   MichaelMap_Lazy_HP_less_michaelAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, LazyList_DHP_cmp_stdAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_Lazy_HRC_cmp_stdAlloc;
+        >   MichaelMap_Lazy_DHP_cmp_stdAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc_seqcst,
+        typedef cc::MichaelHashMap< cds::gc::DHP, LazyList_DHP_cmp_stdAlloc_seqcst,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_Lazy_HRC_cmp_stdAlloc_seqcst;
+        >   MichaelMap_Lazy_DHP_cmp_stdAlloc_seqcst;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_michaelAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, LazyList_DHP_cmp_michaelAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   MichaelMap_Lazy_HRC_cmp_michaelAlloc;
+        >   MichaelMap_Lazy_DHP_cmp_michaelAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_stdAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, LazyList_DHP_less_stdAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_Lazy_HRC_less_stdAlloc;
+        >   MichaelMap_Lazy_DHP_less_stdAlloc;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_stdAlloc_seqcst,
+        typedef cc::MichaelHashMap< cds::gc::DHP, LazyList_DHP_less_stdAlloc_seqcst,
             typename cc::michael_map::make_traits<
                 co::hash< hash >
             >::type
-        >   MichaelMap_Lazy_HRC_less_stdAlloc_seqcst;
+        >   MichaelMap_Lazy_DHP_less_stdAlloc_seqcst;
 
-        typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_michaelAlloc,
+        typedef cc::MichaelHashMap< cds::gc::DHP, LazyList_DHP_less_michaelAlloc,
             typename cc::michael_map::make_traits<
                 co::hash< hash >,
                 co::allocator< memory::MichaelAllocator<int> >
             >::type
-        >   MichaelMap_Lazy_HRC_less_michaelAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_cmp_stdAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_Lazy_PTB_cmp_stdAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_cmp_stdAlloc_seqcst,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_Lazy_PTB_cmp_stdAlloc_seqcst;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_cmp_michaelAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   MichaelMap_Lazy_PTB_cmp_michaelAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_less_stdAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_Lazy_PTB_less_stdAlloc;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_less_stdAlloc_seqcst,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >
-            >::type
-        >   MichaelMap_Lazy_PTB_less_stdAlloc_seqcst;
-
-        typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_less_michaelAlloc,
-            typename cc::michael_map::make_traits<
-                co::hash< hash >,
-                co::allocator< memory::MichaelAllocator<int> >
-            >::type
-        >   MichaelMap_Lazy_PTB_less_michaelAlloc;
+        >   MichaelMap_Lazy_DHP_less_michaelAlloc;
 
         // RCU
         typedef cc::MichaelHashMap< rcu_gpi, LazyList_RCU_GPI_cmp_stdAlloc,
@@ -1889,8 +1730,8 @@ namespace map2 {
         {};
         typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_less_seqcst > SplitList_Michael_HP_st_less_seqcst;
 
-        // HRC
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
+        // DHP
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
@@ -1900,9 +1741,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_HRC_dyn_cmp;
+        > SplitList_Michael_DHP_dyn_cmp;
 
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
@@ -1914,9 +1755,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_HRC_dyn_cmp_seqcst;
+        > SplitList_Michael_DHP_dyn_cmp_seqcst;
 
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
@@ -1927,9 +1768,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_HRC_st_cmp;
+        > SplitList_Michael_DHP_st_cmp;
 
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
@@ -1942,10 +1783,10 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_HRC_st_cmp_seqcst;
+        > SplitList_Michael_DHP_st_cmp_seqcst;
 
-        // HRC + less
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
+        // DHP + less
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
@@ -1955,9 +1796,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_HRC_dyn_less;
+        > SplitList_Michael_DHP_dyn_less;
 
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
@@ -1969,9 +1810,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_HRC_dyn_less_seqcst;
+        > SplitList_Michael_DHP_dyn_less_seqcst;
 
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
@@ -1982,96 +1823,14 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_HRC_st_less;
-
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_HRC_st_less_seqcst;
-
-        // PTB
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_PTB_dyn_cmp;
-
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_PTB_dyn_cmp_seqcst;
+        > SplitList_Michael_DHP_st_less;
 
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_PTB_st_cmp;
-
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::michael_list_tag>
                 ,co::hash< hash >
                 ,cc::split_list::dynamic_bucket_table< false >
                 ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_PTB_st_cmp_seqcst;
-
-        // PTB + less
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_PTB_dyn_less;
-
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
                 ,cc::split_list::ordered_list_traits<
                     typename cc::michael_list::make_traits<
                         co::less< less >
@@ -2079,35 +1838,7 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Michael_PTB_dyn_less_seqcst;
-
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_PTB_st_less;
-
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::michael_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::michael_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Michael_PTB_st_less_seqcst;
+        > SplitList_Michael_DHP_st_less_seqcst;
 
         // RCU
         typedef cc::SplitListMap< rcu_gpi, Key, Value,
@@ -2885,119 +2616,8 @@ namespace map2 {
             >::type
         > SplitList_Lazy_HP_st_less_seqcst;
 
-        // HRC
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_dyn_cmp;
-
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_dyn_cmp_seqcst;
-
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_st_cmp;
-
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::compare< compare >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_st_cmp_seqcst;
-
-        // HRC + less
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_dyn_less;
-
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_dyn_less_seqcst;
-
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::hash< hash >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_st_less;
-
-        typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
-            typename cc::split_list::make_traits<
-                cc::split_list::ordered_list<cc::lazy_list_tag>
-                ,co::hash< hash >
-                ,cc::split_list::dynamic_bucket_table< false >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,cc::split_list::ordered_list_traits<
-                    typename cc::lazy_list::make_traits<
-                        co::less< less >
-                        ,co::memory_model< co::v::sequential_consistent >
-                    >::type
-                >
-            >::type
-        > SplitList_Lazy_HRC_st_less_seqcst;
-
-
-        // PTB
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        // DHP
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
@@ -3007,9 +2627,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_dyn_cmp;
+        > SplitList_Lazy_DHP_dyn_cmp;
 
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
@@ -3021,9 +2641,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_dyn_cmp_seqcst;
+        > SplitList_Lazy_DHP_dyn_cmp_seqcst;
 
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
@@ -3034,9 +2654,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_st_cmp;
+        > SplitList_Lazy_DHP_st_cmp;
 
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
@@ -3049,10 +2669,10 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_st_cmp_seqcst;
+        > SplitList_Lazy_DHP_st_cmp_seqcst;
 
-        // PTB + less
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        // DHP + less
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
@@ -3062,9 +2682,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_dyn_less;
+        > SplitList_Lazy_DHP_dyn_less;
 
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
@@ -3076,9 +2696,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_dyn_less_seqcst;
+        > SplitList_Lazy_DHP_dyn_less_seqcst;
 
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,cc::split_list::dynamic_bucket_table< false >
@@ -3089,9 +2709,9 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_st_less;
+        > SplitList_Lazy_DHP_st_less;
 
-        typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
+        typedef cc::SplitListMap< cds::gc::DHP, Key, Value,
             typename cc::split_list::make_traits<
                 cc::split_list::ordered_list<cc::lazy_list_tag>
                 ,co::hash< hash >
@@ -3104,7 +2724,7 @@ namespace map2 {
                     >::type
                 >
             >::type
-        > SplitList_Lazy_PTB_st_less_seqcst;
+        > SplitList_Lazy_DHP_st_less_seqcst;
 
         // RCU
         typedef cc::SplitListMap< rcu_gpi, Key, Value,
@@ -3773,18 +3393,18 @@ namespace map2 {
         // StripedHashMap
 
         // for sequential containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class StripedHashMap_seq:
             public cc::StripedMap< BucketEntry,
                 co::mutex_policy< cc::striped_set::striping<> >
                 ,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
-                , CDS_OPTIONS7
+                , Options...
             >
         {
             typedef cc::StripedMap< BucketEntry,
                 co::mutex_policy< cc::striped_set::striping<> >
                 ,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
-                , CDS_OPTIONS7
+                , Options...
             > base_class;
             typedef typename base_class::resizing_policy resizing_policy_t;
 
@@ -3796,18 +3416,18 @@ namespace map2 {
         };
 
         // for non-sequential ordered containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class StripedHashMap_ord:
             public cc::StripedMap< BucketEntry,
                 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::striping<> >
-                , CDS_OPTIONS7
+                , Options...
             >
         {
             typedef cc::StripedMap< BucketEntry,
                co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::striping<> >
-                , CDS_OPTIONS7
+                , Options...
             > base_class;
             typedef typename base_class::resizing_policy resizing_policy_t;
 
@@ -3825,7 +3445,7 @@ namespace map2 {
             , co::less< less >
         > StripedMap_list;
 
-#if (CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL) && _MSC_VER < 1600
+#if (CDS_COMPILER == CDS_COMPILER_MSVC || (CDS_COMPILER == CDS_COMPILER_INTEL && CDS_OS_INTERFACE == CDS_OSI_WINDOWS)) && _MSC_VER < 1600
         typedef StripedHashMap_ord<
             stdext::hash_map< Key, Value, stdext::hash_compare<Key, less > >
             , co::hash< hash2 >
@@ -3877,18 +3497,18 @@ namespace map2 {
         // RefinableHashMap
 
         // for sequential containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class RefinableHashMap_seq:
             public cc::StripedMap< BucketEntry,
                 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::refinable<> >
-                , CDS_OPTIONS7
+                , Options...
             >
         {
             typedef cc::StripedMap< BucketEntry,
                co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::refinable<> >
-                , CDS_OPTIONS7
+                , Options...
             > base_class;
             typedef typename base_class::resizing_policy resizing_policy_t;
 
@@ -3900,18 +3520,18 @@ namespace map2 {
         };
 
         // for non-sequential ordered containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class RefinableHashMap_ord:
             public cc::StripedMap< BucketEntry,
                 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::refinable<> >
-                , CDS_OPTIONS7
+                , Options...
             >
         {
             typedef cc::StripedMap< BucketEntry,
                co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::refinable<> >
-                , CDS_OPTIONS7
+                , Options...
             > base_class;
             typedef typename base_class::resizing_policy resizing_policy_t;
 
@@ -3942,7 +3562,7 @@ namespace map2 {
             , co::hash< hash2 >
         > RefinableMap_map;
 
-#if (CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL) && _MSC_VER < 1600
+#if (CDS_COMPILER == CDS_COMPILER_MSVC || (CDS_COMPILER == CDS_COMPILER_INTEL && CDS_OS_INTERFACE == CDS_OSI_WINDOWS)) && _MSC_VER < 1600
         typedef RefinableHashMap_ord<
             stdext::hash_map< Key, Value, stdext::hash_compare<Key, less > >
             , co::hash< hash2 >
@@ -4223,87 +3843,7 @@ namespace map2 {
         typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_xorshift_stat > SkipListMap_hp_cmp_xorshift_stat;
 
         // ***************************************************************************
-        // SkipListMap - HRC
-
-        class traits_SkipListMap_hrc_less_pascal: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal > SkipListMap_hrc_less_pascal;
-
-        class traits_SkipListMap_hrc_less_pascal_seqcst: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::memory_model< co::v::sequential_consistent >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal_seqcst > SkipListMap_hrc_less_pascal_seqcst;
-
-        class traits_SkipListMap_hrc_less_pascal_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal_stat > SkipListMap_hrc_less_pascal_stat;
-
-        class traits_SkipListMap_hrc_cmp_pascal: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_pascal > SkipListMap_hrc_cmp_pascal;
-
-        class traits_SkipListMap_hrc_cmp_pascal_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_pascal_stat > SkipListMap_hrc_cmp_pascal_stat;
-
-        class traits_SkipListMap_hrc_less_xorshift: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_xorshift > SkipListMap_hrc_less_xorshift;
-
-        class traits_SkipListMap_hrc_less_xorshift_stat: public cc::skip_list::make_traits <
-                co::less< less >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_xorshift_stat > SkipListMap_hrc_less_xorshift_stat;
-
-        class traits_SkipListMap_hrc_cmp_xorshift: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_xorshift > SkipListMap_hrc_cmp_xorshift;
-
-        class traits_SkipListMap_hrc_cmp_xorshift_stat: public cc::skip_list::make_traits <
-                co::compare< compare >
-                ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
-                ,co::stat< cc::skip_list::stat<> >
-                ,co::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_xorshift_stat > SkipListMap_hrc_cmp_xorshift_stat;
-
-        // ***************************************************************************
-        // SkipListMap - PTB
+        // SkipListMap - DHP
 
         class traits_SkipListMap_ptb_less_pascal: public cc::skip_list::make_traits <
                 co::less< less >
@@ -4311,7 +3851,7 @@ namespace map2 {
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_pascal > SkipListMap_ptb_less_pascal;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_pascal > SkipListMap_ptb_less_pascal;
 
         class traits_SkipListMap_ptb_less_pascal_seqcst: public cc::skip_list::make_traits <
                 co::less< less >
@@ -4320,7 +3860,7 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_pascal_seqcst > SkipListMap_ptb_less_pascal_seqcst;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_pascal_seqcst > SkipListMap_ptb_less_pascal_seqcst;
 
         class traits_SkipListMap_ptb_less_pascal_stat: public cc::skip_list::make_traits <
                 co::less< less >
@@ -4329,7 +3869,7 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_pascal_stat > SkipListMap_ptb_less_pascal_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_pascal_stat > SkipListMap_ptb_less_pascal_stat;
 
         class traits_SkipListMap_ptb_cmp_pascal: public cc::skip_list::make_traits <
                 co::compare< compare >
@@ -4337,7 +3877,7 @@ namespace map2 {
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_pascal > SkipListMap_ptb_cmp_pascal;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_pascal > SkipListMap_ptb_cmp_pascal;
 
         class traits_SkipListMap_ptb_cmp_pascal_stat: public cc::skip_list::make_traits <
                 co::compare< compare >
@@ -4346,7 +3886,7 @@ namespace map2 {
                 ,co::stat< cc::skip_list::stat<> >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_pascal_stat > SkipListMap_ptb_cmp_pascal_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_pascal_stat > SkipListMap_ptb_cmp_pascal_stat;
 
         class traits_SkipListMap_ptb_less_xorshift: public cc::skip_list::make_traits <
                 co::less< less >
@@ -4354,7 +3894,7 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_xorshift > SkipListMap_ptb_less_xorshift;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_xorshift > SkipListMap_ptb_less_xorshift;
 
         class traits_SkipListMap_ptb_less_xorshift_stat: public cc::skip_list::make_traits <
                 co::less< less >
@@ -4363,7 +3903,7 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_less_xorshift_stat > SkipListMap_ptb_less_xorshift_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_less_xorshift_stat > SkipListMap_ptb_less_xorshift_stat;
 
         class traits_SkipListMap_ptb_cmp_xorshift: public cc::skip_list::make_traits <
                 co::compare< compare >
@@ -4371,7 +3911,7 @@ namespace map2 {
                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_xorshift > SkipListMap_ptb_cmp_xorshift;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_xorshift > SkipListMap_ptb_cmp_xorshift;
 
         class traits_SkipListMap_ptb_cmp_xorshift_stat: public cc::skip_list::make_traits <
                 co::compare< compare >
@@ -4380,7 +3920,7 @@ namespace map2 {
                 ,co::stat< cc::skip_list::stat<> >
             >::type
         {};
-        typedef cc::SkipListMap< cds::gc::PTB, Key, Value, traits_SkipListMap_ptb_cmp_xorshift_stat > SkipListMap_ptb_cmp_xorshift_stat;
+        typedef cc::SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_ptb_cmp_xorshift_stat > SkipListMap_ptb_cmp_xorshift_stat;
 
         // ***************************************************************************
         // SkipListMap< gc::nogc >
@@ -4391,8 +3931,8 @@ namespace map2 {
                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< 
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal > 
+        typedef NogcMapWrapper_dctor<
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal >
         > SkipListMap_nogc_less_pascal;
 
         class traits_SkipListMap_nogc_less_pascal_seqcst: public cc::skip_list::make_traits <
@@ -4402,8 +3942,8 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< 
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_seqcst > 
+        typedef NogcMapWrapper_dctor<
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_seqcst >
         > SkipListMap_nogc_less_pascal_seqcst;
 
         class traits_SkipListMap_nogc_less_pascal_stat: public cc::skip_list::make_traits <
@@ -4413,8 +3953,8 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< 
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_stat > 
+        typedef NogcMapWrapper_dctor<
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_pascal_stat >
         > SkipListMap_nogc_less_pascal_stat;
 
         class traits_SkipListMap_nogc_cmp_pascal: public cc::skip_list::make_traits <
@@ -4424,7 +3964,7 @@ namespace map2 {
             >::type
         {};
         typedef NogcMapWrapper_dctor<
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal > 
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal >
         > SkipListMap_nogc_cmp_pascal;
 
         class traits_SkipListMap_nogc_cmp_pascal_stat: public cc::skip_list::make_traits <
@@ -4434,8 +3974,8 @@ namespace map2 {
                 ,co::stat< cc::skip_list::stat<> >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< 
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal_stat > 
+        typedef NogcMapWrapper_dctor<
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_pascal_stat >
         > SkipListMap_nogc_cmp_pascal_stat;
 
         class traits_SkipListMap_nogc_less_xorshift: public cc::skip_list::make_traits <
@@ -4444,8 +3984,8 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< 
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift > 
+        typedef NogcMapWrapper_dctor<
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift >
         > SkipListMap_nogc_less_xorshift;
 
         class traits_SkipListMap_nogc_less_xorshift_stat: public cc::skip_list::make_traits <
@@ -4455,8 +3995,8 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< 
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift_stat > 
+        typedef NogcMapWrapper_dctor<
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_less_xorshift_stat >
         > SkipListMap_nogc_less_xorshift_stat;
 
         class traits_SkipListMap_nogc_cmp_xorshift: public cc::skip_list::make_traits <
@@ -4465,8 +4005,8 @@ namespace map2 {
                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< cc::SkipListMap< 
-            cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift > 
+        typedef NogcMapWrapper_dctor< cc::SkipListMap<
+            cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift >
         > SkipListMap_nogc_cmp_xorshift;
 
         class traits_SkipListMap_nogc_cmp_xorshift_stat: public cc::skip_list::make_traits <
@@ -4476,8 +4016,8 @@ namespace map2 {
                 ,co::stat< cc::skip_list::stat<> >
             >::type
         {};
-        typedef NogcMapWrapper_dctor< 
-            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift_stat > 
+        typedef NogcMapWrapper_dctor<
+            cc::SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_nogc_cmp_xorshift_stat >
         > SkipListMap_nogc_cmp_xorshift_stat;
 
         // ***************************************************************************
@@ -4892,7 +4432,7 @@ namespace map2 {
                 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
             };
             struct ptb_gc {
-                typedef cc::ellen_bintree::map_node<cds::gc::PTB, Key, Value>       leaf_node;
+                typedef cc::ellen_bintree::map_node<cds::gc::DHP, Key, Value>       leaf_node;
                 typedef cc::ellen_bintree::internal_node< Key, leaf_node >          internal_node;
                 typedef cc::ellen_bintree::update_desc< leaf_node, internal_node >  update_desc;
             };
@@ -4953,7 +4493,7 @@ namespace map2 {
         typedef cc::EllenBinTreeMap< cds::gc::HP, Key, Value, traits_EllenBinTreeMap_hp_stat > EllenBinTreeMap_hp_stat;
 
         // ***************************************************************************
-        // EllenBinTreeMap - PTB
+        // EllenBinTreeMap - DHP
 
         struct traits_EllenBinTreeMap_ptb: public cc::ellen_bintree::make_set_traits<
                 co::less< less >
@@ -4964,7 +4504,7 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::EllenBinTreeMap< cds::gc::PTB, Key, Value, traits_EllenBinTreeMap_ptb> EllenBinTreeMap_ptb;
+        typedef cc::EllenBinTreeMap< cds::gc::DHP, Key, Value, traits_EllenBinTreeMap_ptb> EllenBinTreeMap_ptb;
 
         struct traits_EllenBinTreeMap_ptb_stat: public cc::ellen_bintree::make_set_traits<
                 co::less< less >
@@ -4976,7 +4516,7 @@ namespace map2 {
                 ,co::item_counter< cds::atomicity::item_counter >
             >::type
         {};
-        typedef cc::EllenBinTreeMap< cds::gc::PTB, Key, Value, traits_EllenBinTreeMap_ptb_stat > EllenBinTreeMap_ptb_stat;
+        typedef cc::EllenBinTreeMap< cds::gc::DHP, Key, Value, traits_EllenBinTreeMap_ptb_stat > EllenBinTreeMap_ptb_stat;
 
         // ***************************************************************************
         // EllenBinTreeMap - RCU
@@ -5180,17 +4720,17 @@ namespace map2 {
     }
 
 
-    template <typename K, typename V, CDS_SPEC_OPTIONS10>
-    static inline void print_stat( CuckooStripedMap< K, V, CDS_OPTIONS10 > const& m )
+    template <typename K, typename V, typename... Options>
+    static inline void print_stat( CuckooStripedMap< K, V, Options... > const& m )
     {
-        typedef CuckooStripedMap< K, V, CDS_OPTIONS10 > map_type;
+        typedef CuckooStripedMap< K, V, Options... > map_type;
         print_stat( static_cast<typename map_type::cuckoo_base_class const&>(m) );
     }
 
-    template <typename K, typename V, CDS_SPEC_OPTIONS10>
-    static inline void print_stat( CuckooRefinableMap< K, V, CDS_OPTIONS10 > const& m )
+    template <typename K, typename V, typename... Options>
+    static inline void print_stat( CuckooRefinableMap< K, V, Options... > const& m )
     {
-        typedef CuckooRefinableMap< K, V, CDS_OPTIONS10 > map_type;
+        typedef CuckooRefinableMap< K, V, Options... > map_type;
         print_stat( static_cast<typename map_type::cuckoo_base_class const&>(m) );
     }