Replace variadic template emulation for option list with native template (remove...
authorkhizmax <libcds.dev@gmail.com>
Wed, 24 Sep 2014 05:18:03 +0000 (09:18 +0400)
committerkhizmax <libcds.dev@gmail.com>
Wed, 24 Sep 2014 05:18:03 +0000 (09:18 +0400)
87 files changed:
cds/algo/flat_combining.h
cds/container/basket_queue.h
cds/container/cuckoo_base.h
cds/container/ellen_bintree_base.h
cds/container/fcdeque.h
cds/container/fcpriority_queue.h
cds/container/fcqueue.h
cds/container/fcstack.h
cds/container/lazy_list_base.h
cds/container/michael_list_base.h
cds/container/michael_set_base.h
cds/container/moir_queue.h
cds/container/mspriority_queue.h
cds/container/msqueue.h
cds/container/optimistic_queue.h
cds/container/rwqueue.h
cds/container/segmented_queue.h
cds/container/skip_list_base.h
cds/container/split_list_base.h
cds/container/striped_map.h
cds/container/striped_map/boost_flat_map.h
cds/container/striped_map/boost_list.h
cds/container/striped_map/boost_map.h
cds/container/striped_map/boost_slist.h
cds/container/striped_map/boost_unordered_map.h
cds/container/striped_map/std_hash_map_std.h
cds/container/striped_map/std_hash_map_vc.h
cds/container/striped_map/std_list.h
cds/container/striped_map/std_map.h
cds/container/striped_set.h
cds/container/striped_set/adapter.h
cds/container/striped_set/boost_flat_set.h
cds/container/striped_set/boost_list.h
cds/container/striped_set/boost_set.h
cds/container/striped_set/boost_slist.h
cds/container/striped_set/boost_stable_vector.h
cds/container/striped_set/boost_unordered_set.h
cds/container/striped_set/boost_vector.h
cds/container/striped_set/std_hash_set_std.h
cds/container/striped_set/std_hash_set_vc.h
cds/container/striped_set/std_list.h
cds/container/striped_set/std_set.h
cds/container/striped_set/std_vector.h
cds/container/treiber_stack.h
cds/container/tsigas_cycle_queue.h
cds/container/vyukov_mpmc_cycle_queue.h
cds/intrusive/basket_queue.h
cds/intrusive/cuckoo_set.h
cds/intrusive/details/ellen_bintree_base.h
cds/intrusive/fcqueue.h
cds/intrusive/fcstack.h
cds/intrusive/lazy_list_base.h
cds/intrusive/lazy_list_impl.h
cds/intrusive/lazy_list_nogc.h
cds/intrusive/lazy_list_rcu.h
cds/intrusive/michael_list_base.h
cds/intrusive/michael_list_impl.h
cds/intrusive/michael_list_nogc.h
cds/intrusive/michael_list_rcu.h
cds/intrusive/michael_set_base.h
cds/intrusive/moir_queue.h
cds/intrusive/mspriority_queue.h
cds/intrusive/msqueue.h
cds/intrusive/optimistic_queue.h
cds/intrusive/segmented_queue.h
cds/intrusive/single_link_struct.h
cds/intrusive/skip_list_base.h
cds/intrusive/split_list_base.h
cds/intrusive/striped_set.h
cds/intrusive/striped_set/adapter.h
cds/intrusive/striped_set/boost_avl_set.h
cds/intrusive/striped_set/boost_list.h
cds/intrusive/striped_set/boost_set.h
cds/intrusive/striped_set/boost_sg_set.h
cds/intrusive/striped_set/boost_slist.h
cds/intrusive/striped_set/boost_splay_set.h
cds/intrusive/striped_set/boost_treap_set.h
cds/intrusive/striped_set/boost_unordered_set.h
cds/intrusive/treiber_stack.h
cds/intrusive/tsigas_cycle_queue.h
cds/intrusive/vyukov_mpmc_cycle_queue.h
cds/memory/vyukov_queue_pool.h
cds/opt/compare.h
cds/opt/make_options_var.h
doxygen/cds.doxy
tests/unit/map2/map_types.h
tests/unit/set2/set_types.h

index ccd7f5854bbcd1bb571e305b72d58ae5a075fb5e..a018a4a9855971b4aed5192a0515c9b794a079f9 100644 (file)
@@ -203,14 +203,14 @@ namespace cds { namespace algo {
                 List of all available memory ordering see opt::memory_model.
                 Default if cds::opt::v:relaxed_ordering
         */
-        template <CDS_DECL_OPTIONS6>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS6 >::type
-                ,CDS_OPTIONS6
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 05ccee61972bdbc2ea93d34c43e733a41f5bfaf5..ce0e10ccd2506d7b4b99704ff7375815def78dba 100644 (file)
@@ -14,7 +14,7 @@ namespace cds { namespace container {
 
     //@cond
     namespace details {
-        template <typename GC, typename T, CDS_DECL_OPTIONS7>
+        template <typename GC, typename T, typename... Options>
         struct make_basket_queue
         {
             typedef GC gc;
@@ -30,8 +30,8 @@ namespace cds { namespace container {
             };
 
             typedef typename opt::make_options<
-                typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
-                ,CDS_OPTIONS7
+                typename cds::opt::find_type_traits< default_options, Options... >::type
+                ,Options...
             >::type   options;
 
             struct node_type: public intrusive::basket_queue::node< gc >
@@ -139,24 +139,24 @@ namespace cds { namespace container {
         - opt::memory_model - C++ memory ordering model. Can be opt::v::relaxed_ordering (relaxed memory model, the default)
             or opt::v::sequential_consistent (sequentially consisnent memory model).
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS7>
+    template <typename GC, typename T, typename... Options>
     class BasketQueue:
 #ifdef CDS_DOXYGEN_INVOKED
         intrusive::BasketQueue< GC, intrusive::basket_queue::node< T >, Options... >
 #else
-        details::make_basket_queue< GC, T, CDS_OPTIONS7 >::type
+        details::make_basket_queue< GC, T, Options... >::type
 #endif
     {
         //@cond
-        typedef details::make_basket_queue< GC, T, CDS_OPTIONS7 > options;
+        typedef details::make_basket_queue< GC, T, Options... > options;
         typedef typename options::type base_class;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef BasketQueue< GC2, T2, CDS_OTHER_OPTIONS7> other   ;   ///< Rebinding result
+            typedef BasketQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index 8c2f90b101dacb40bd44c636cfa11c0b8605c2f5..e8608e74e2831cfc41da80efd500babf1e1ec42e 100644 (file)
@@ -198,11 +198,11 @@ namespace cds { namespace container {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see CuckooSet and CuckooMap
         */
-        template <CDS_DECL_OPTIONS12>
+        template <typename... Options>
         struct make_traits {
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< cuckoo::type_traits, CDS_OPTIONS12 >::type
-                ,CDS_OPTIONS12
+                typename cds::opt::find_type_traits< cuckoo::type_traits, Options... >::type
+                ,Options...
             >::type   type ;    ///< Result of metafunction
         };
     }   // namespace cuckoo
index 6119780ef68a3b86b06c412be2e2f68f1f068b12..27dd2544de1b720f0aa9160eef8e8df0d4b6218b 100644 (file)
@@ -209,14 +209,14 @@ namespace cds { namespace container {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see \ref cds_container_EllenBinTreeSet "EllenBinTreeSet".
         */
-        template <CDS_DECL_OPTIONS11>
+        template <typename... Options>
         struct make_set_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS11 >::type
-                ,CDS_OPTIONS11
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
@@ -226,14 +226,14 @@ namespace cds { namespace container {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see \ref cds_container_EllenBinTreeMap "EllenBinTreeMap".
         */
-        template <CDS_DECL_OPTIONS11>
+        template <typename... Options>
         struct make_map_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS11 >::type
-                ,CDS_OPTIONS11
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 39d0fc275beb14dae9b18d1b3f422741634e93a7..0d1d9c2a984f6b43f87c7de907dc6affd2bda754 100644 (file)
@@ -78,14 +78,14 @@ namespace cds { namespace container {
                 By default, the elimination is disabled. For queue, the elimination is possible if the queue
                 is empty.
         */
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
-                ,CDS_OPTIONS8
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index f2e18f34f9d52674d9692693b47b807ecd05ff18..e692587b6adf83c485d6cadcc77ab1cdf4bdc53c 100644 (file)
@@ -61,14 +61,14 @@ namespace cds { namespace container {
                 List of all available memory ordering see opt::memory_model.
                 Default is cds::opt::v:relaxed_ordering
         */
-        template <CDS_DECL_OPTIONS7>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS7 >::type
-                ,CDS_OPTIONS7
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 8b14a61a44b13b1fc8bf61a9f60320944e6c1d22..b94a3a7ead284a106caa6c96ee1da0aa49435e8e 100644 (file)
@@ -68,14 +68,14 @@ namespace cds { namespace container {
                 By default, the elimination is disabled. For queue, the elimination is possible if the queue
                 is empty.
         */
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
-                ,CDS_OPTIONS8
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 2821c7b71c5d15b422082ed8c14581b62a38579e..be0130a82de8d2a3d90edb0a3d5fc6a396b10a81 100644 (file)
@@ -67,14 +67,14 @@ namespace cds { namespace container {
             - \p opt::enable_elimination - enable/disable operation \ref cds_elimination_description "elimination"
                 By default, the elimination is disabled.
         */
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
-                ,CDS_OPTIONS8
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 099c9074fb9344914b68cbd8aea45741532a1bd1..48f824d04eb09b26fccf4b9dcd31cd58a989914e 100644 (file)
@@ -88,14 +88,14 @@ namespace cds { namespace container {
 
             See \ref LazyList, \ref type_traits, \ref cds::opt::make_options.
         */
-        template <CDS_DECL_OPTIONS12>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS12 >::type
-                ,CDS_OPTIONS12
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #endif
         };
index 78099ceb2e1bfeac85ca0f486f433268368039d3..8f010f04d8e1f6cc14231624b4ab39b30385b34e 100644 (file)
@@ -74,14 +74,14 @@ namespace cds { namespace container {
 
             See \ref MichaelList, \ref type_traits, \ref cds::opt::make_options.
         */
-        template <CDS_DECL_OPTIONS9>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
-                ,CDS_OPTIONS9
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #endif
         };
index 41ea147311249f94b9c8776bc0815b57ba416743..b7c2c3c05fe8133886d117039c41eb370d97f10a 100644 (file)
@@ -19,9 +19,9 @@ namespace cds { namespace container {
         /**
             This is a synonym for intrusive::michael_set::make_traits
         */
-        template <CDS_DECL_OPTIONS3>
+        template <typename... Options>
         struct make_traits {
-            typedef typename intrusive::michael_set::make_traits<CDS_OPTIONS3>::type type  ;   ///< Result of metafunction
+            typedef typename intrusive::michael_set::make_traits<Options...>::type type  ;   ///< Result of metafunction
         };
 
         //@cond
index f8d23811c436c7cdc10f943189fb2979e5e46943..072fe64c68210f59bbf57c542c64430eb863ecba 100644 (file)
@@ -14,7 +14,7 @@ namespace cds { namespace container {
 
     //@cond
     namespace details {
-        template <typename GC, typename T, CDS_DECL_OPTIONS7>
+        template <typename GC, typename T, typename... Options>
         struct make_moir_queue
         {
             typedef GC gc;
@@ -30,8 +30,8 @@ namespace cds { namespace container {
             };
 
             typedef typename opt::make_options<
-                typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
-                ,CDS_OPTIONS7
+                typename cds::opt::find_type_traits< default_options, Options... >::type
+                ,Options...
             >::type   options;
 
             struct node_type: public intrusive::single_link::node< gc >
@@ -84,24 +84,24 @@ namespace cds { namespace container {
 
         \p Options description see MSQueue
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS7>
+    template <typename GC, typename T, typename... Options>
     class MoirQueue:
 #ifdef CDS_DOXYGEN_INVOKED
         intrusive::MoirQueue< GC, intrusive::single_link::node< T >, Options... >
 #else
-        details::make_moir_queue< GC, T, CDS_OPTIONS7 >::type
+        details::make_moir_queue< GC, T, Options... >::type
 #endif
     {
         //@cond
-        typedef details::make_moir_queue< GC, T, CDS_OPTIONS7 > options;
+        typedef details::make_moir_queue< GC, T, Options... > options;
         typedef typename options::type base_class;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef MoirQueue< GC2, T2, CDS_OTHER_OPTIONS7> other   ;   ///< Rebinding result
+            typedef MoirQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index bd3d8cecf815e51d0ad47cd88b72aa244119263e..9dd8f1339660dd57141cdd0ee0bc343c86866408 100644 (file)
@@ -51,14 +51,14 @@ namespace cds { namespace container {
 
             See \ref MSPriorityQueue, \ref type_traits, \ref cds::opt::make_options.
         */
-        template <CDS_DECL_OPTIONS9>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
-                ,CDS_OPTIONS9
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 822faea3df6d1b86337b06646a17144695f22fd7..916ef6cab8248d883b3b94d6ddcfc157f6a2642e 100644 (file)
@@ -13,7 +13,7 @@ namespace cds { namespace container {
 
     //@cond
     namespace details {
-        template <typename GC, typename T, CDS_DECL_OPTIONS7>
+        template <typename GC, typename T, typename... Options>
         struct make_msqueue
         {
             typedef GC gc;
@@ -29,8 +29,8 @@ namespace cds { namespace container {
             };
 
             typedef typename opt::make_options<
-                typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
-                ,CDS_OPTIONS7
+                typename cds::opt::find_type_traits< default_options, Options... >::type
+                ,Options...
             >::type   options;
 
             struct node_type: public intrusive::single_link::node< gc >
@@ -95,24 +95,24 @@ namespace cds { namespace container {
         - opt::memory_model - C++ memory ordering model. Can be opt::v::relaxed_ordering (relaxed memory model, the default)
             or opt::v::sequential_consistent (sequentially consisnent memory model).
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS7>
+    template <typename GC, typename T, typename... Options>
     class MSQueue:
 #ifdef CDS_DOXYGEN_INVOKED
         intrusive::MSQueue< GC, intrusive::single_link::node< T >, Options... >
 #else
-        details::make_msqueue< GC, T, CDS_OPTIONS7 >::type
+        details::make_msqueue< GC, T, Options... >::type
 #endif
     {
         //@cond
-        typedef details::make_msqueue< GC, T, CDS_OPTIONS7 > options;
+        typedef details::make_msqueue< GC, T, Options... > options;
         typedef typename options::type base_class;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef MSQueue< GC2, T2, CDS_OTHER_OPTIONS7> other   ;   ///< Rebinding result
+            typedef MSQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index 85492d437e808ab5c7175920a19189c63193f6c2..49807fdae4af99a5d37c462c6010779f32dac138 100644 (file)
@@ -13,7 +13,7 @@ namespace cds { namespace container {
 
     //@cond
     namespace details {
-        template <typename GC, typename T, CDS_DECL_OPTIONS7>
+        template <typename GC, typename T, typename... Options>
         struct make_optimistic_queue
         {
             typedef GC gc;
@@ -29,8 +29,8 @@ namespace cds { namespace container {
             };
 
             typedef typename opt::make_options<
-                typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
-                ,CDS_OPTIONS7
+                typename cds::opt::find_type_traits< default_options, Options... >::type
+                ,Options...
             >::type   options;
 
             struct node_type: public intrusive::optimistic_queue::node< gc >
@@ -102,24 +102,24 @@ namespace cds { namespace container {
 
         <b>Warning</b> gc::HRC is not supported for this implementation.
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS7>
+    template <typename GC, typename T, typename... Options>
     class OptimisticQueue:
 #ifdef CDS_DOXYGEN_INVOKED
         intrusive::OptimisticQueue< GC, intrusive::optimistic_queue::node< T >, Options... >
 #else
-        details::make_optimistic_queue< GC, T, CDS_OPTIONS7 >::type
+        details::make_optimistic_queue< GC, T, Options... >::type
 #endif
     {
         //@cond
-        typedef details::make_optimistic_queue< GC, T, CDS_OPTIONS7 > options;
+        typedef details::make_optimistic_queue< GC, T, Options... > options;
         typedef typename options::type base_class;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef OptimisticQueue< GC2, T2, CDS_OTHER_OPTIONS7> other   ;   ///< Rebinding result
+            typedef OptimisticQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index b64d3e7ea5e0721d7a642a0472c488c5c7a9d410..0c061c16f9a1591f8aac3207d91b5dc1b745c356 100644 (file)
@@ -39,7 +39,7 @@ namespace cds { namespace container {
 
         This queue has no intrusive counterpart.
     */
-    template <typename T, CDS_DECL_OPTIONS6>
+    template <typename T, typename... Options>
     class RWQueue
     {
         //@cond
@@ -56,16 +56,16 @@ namespace cds { namespace container {
     public:
         //@cond
         typedef typename opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS6 >::type
-            ,CDS_OPTIONS6
+            typename cds::opt::find_type_traits< default_options, Options... >::type
+            ,Options...
         >::type   options;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename T2, CDS_DECL_OTHER_OPTIONS6>
+        template <typename T2, typename... Options2>
         struct rebind {
-            typedef RWQueue< T2, CDS_OTHER_OPTIONS6> other   ;   ///< Rebinding result
+            typedef RWQueue< T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index ecd0b20d1fd51e8807f73643e9f002fb093acbfb..ed5ad020fb67080e980310b2fdf3fcd3b8f65331 100644 (file)
@@ -82,14 +82,14 @@ namespace cds { namespace container {
             - \p opt::permutation_generator - a random permutation generator for sequence [0, quasi_factor),
                 default is cds::opt::v::random2_permutation<int>
         */
-        template <CDS_DECL_OPTIONS9>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
-                ,CDS_OPTIONS9
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 9d50da06ac9b2ac1302947c4089d53b16db3f6c0..bf33f0cc32f3e0fa4b3534f821870c52d4fab266 100644 (file)
@@ -116,14 +116,14 @@ namespace cds { namespace container {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see \ref SkipListSet.
         */
-        template <CDS_DECL_OPTIONS10>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS10 >::type
-                ,CDS_OPTIONS10
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 18c96ebefdfc18e5bb9f25e8ad98318945e35893..dd256e0eff4f859b3022c4e41f0b1e8b26c0f507 100644 (file)
@@ -144,9 +144,9 @@ namespace cds { namespace container {
                 for LazyList use container::lazy_list::type_traits.
             - plus any option from intrusive::split_list::make_traits
         */
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct make_traits {
-            typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS8>::type type  ;   ///< Result of metafunction
+            typedef typename cds::opt::make_options< type_traits, Options...>::type type  ;   ///< Result of metafunction
         };
     }   // namespace split_list
 
index 81be3321d36693e6de8235cec568dda9a0b93dab..fd77756cc9d17a87948d9f0f252824720d65b69d 100644 (file)
@@ -16,10 +16,10 @@ namespace cds { namespace container {
 
     //@cond
     namespace details {
-        template <class Container, CDS_DECL_OPTIONS9>
+        template <class Container, typename... Options>
         class make_striped_map
         {
-            typedef StripedSet< Container, CDS_OPTIONS9>    billet;
+            typedef StripedSet< Container, Options...>    billet;
             typedef typename billet::options                billet_options;
             typedef typename billet_options::hash           billet_hash;
 
@@ -492,16 +492,16 @@ namespace cds { namespace container {
         </table>
 
     **/
-    template <class Container, CDS_DECL_OPTIONS9>
+template <class Container, typename... Options>
     class StripedMap
 #ifdef CDS_DOXYGEN_INVOKED
-        : protected StripedSet<Container, CDS_OPTIONS9>
+        : protected StripedSet<Container, Options...>
 #else
-        : protected details::make_striped_map< Container, CDS_OPTIONS9>::type
+        : protected details::make_striped_map< Container, Options...>::type
 #endif
     {
         //@cond
-        typedef typename details::make_striped_map< Container, CDS_OPTIONS9>::type base_class;
+        typedef typename details::make_striped_map< Container, Options...>::type base_class;
         //@endcond
 
     public:
index 50b98d5aa952899128c703a29c4f64d70d6588a9..11ee31956e1d9713e508c1d0454a1976cd3ea563 100644 (file)
@@ -42,12 +42,12 @@ namespace cds { namespace container {
 
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::flat_map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+    class adapt< boost::container::flat_map< Key, T, Traits, Alloc>, Options... >
     {
     public:
         typedef boost::container::flat_map< Key, T, Traits, Alloc>     container_type          ;   ///< underlying container type
-        typedef cds::container::striped_set::details::boost_map_adapter< container_type, CDS_OPTIONS >    type;
+        typedef cds::container::striped_set::details::boost_map_adapter< container_type, Options... >    type;
     };
 }}} // namespace cds::intrusive::striped_set
 
index 5f9a021926e7cc4d71445b93ada610472c66a94c..4869777e99ea5b01bc1a78d608436ce1e4c2e286 100644 (file)
@@ -67,8 +67,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// boost::container::list adapter for hash map bucket
-    template <typename Key, typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::list< std::pair<Key const, T>, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Alloc, typename... Options>
+    class adapt< boost::container::list< std::pair<Key const, T>, Alloc>, Options... >
     {
     public:
         typedef boost::container::list< std::pair<Key const, T>, Alloc>     container_type          ;   ///< underlying container type
@@ -89,13 +89,13 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index e6d7956add0f024a534ba8e0865dfadb52bff839..84fee17ba024f09a74568b6292b2ebd16a1de7f9 100644 (file)
@@ -38,12 +38,12 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::set adapter for hash set bucket
-    template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+    class adapt< boost::container::map< Key, T, Traits, Alloc>, Options... >
     {
     public:
         typedef boost::container::map< Key, T, Traits, Alloc>     container_type          ;   ///< underlying container type
-        typedef cds::container::striped_set::details::boost_map_adapter< container_type, CDS_OPTIONS >    type;
+        typedef cds::container::striped_set::details::boost_map_adapter< container_type, Options... >    type;
     };
 }}} // namespace cds::intrusive::striped_set
 
index 0785ccf6ac5093f76f47c926f6c62fc2262111e3..7ac83a899d7dfbfa5002c40dd514a79ebae972bc 100644 (file)
@@ -66,8 +66,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// boost::container::slist adapter for hash map bucket
-    template <typename Key, typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::slist< std::pair<Key const, T>, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Alloc, typename... Options>
+    class adapt< boost::container::slist< std::pair<Key const, T>, Alloc>, Options... >
     {
     public:
         typedef boost::container::slist< std::pair<Key const, T>, Alloc>     container_type          ;   ///< underlying container type
@@ -88,13 +88,13 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index b28de730c06cd8e7466b6a97fd5561bc191799c1..859c1bb39222cb4ff3a1f99acf3af3d6f5201d1f 100644 (file)
@@ -33,12 +33,12 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// boost::unordered_map  adapter for hash map bucket
-    template <typename Key, typename T, class Hash, class Pred, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::unordered_map< Key, T, Hash, Pred, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Hash, class Pred, class Alloc, typename... Options>
+    class adapt< boost::unordered_map< Key, T, Hash, Pred, Alloc>, Options... >
     {
     public:
         typedef boost::unordered_map< Key, T, Hash, Pred, Alloc>  container_type  ;   ///< underlying container type
-        typedef cds::container::striped_set::details::boost_map_adapter< container_type, CDS_OPTIONS >    type;
+        typedef cds::container::striped_set::details::boost_map_adapter< container_type, Options... >    type;
     };
 }}} // namespace cds::intrusive::striped_set
 
index 4aec8052385cf5fc8107a24df21eb78c92dc624c..58a8166c5ccc4bfc9c4047895e589651669b0b71 100644 (file)
@@ -64,8 +64,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::unordered_map  adapter for hash map bucket
-    template <typename Key, typename T, class Hash, class Pred, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< std::unordered_map< Key, T, Hash, Pred, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Hash, class Pred, class Alloc, typename... Options>
+    class adapt< std::unordered_map< Key, T, Hash, Pred, Alloc>, Options... >
     {
     public:
         typedef std::unordered_map< Key, T, Hash, Pred, Alloc>  container_type  ;   ///< underlying container type
@@ -90,7 +90,7 @@ namespace cds { namespace intrusive { namespace striped_set {
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index a9bebbac71b8273fedd4333f50b94b245737b231..8850c6e010effe0e6ee7ca609f1f818bd7c1dc6a 100644 (file)
@@ -65,8 +65,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// stdext::hash_map adapter for hash map bucket
-    template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< stdext::hash_map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+    class adapt< stdext::hash_map< Key, T, Traits, Alloc>, Options... >
     {
     public:
         typedef stdext::hash_map< Key, T, Traits, Alloc>  container_type  ;   ///< underlying container type
@@ -91,7 +91,7 @@ namespace cds { namespace intrusive { namespace striped_set {
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 06cf2107f54f6bf8c23af749ad86af91bec63cf7..914dacbac043cb2aa20dc4ce7b86d946c4cc85dd 100644 (file)
@@ -62,8 +62,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::list adapter for hash map bucket
-    template <typename Key, typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< std::list< std::pair<Key const, T>, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Alloc, typename... Options>
+    class adapt< std::list< std::pair<Key const, T>, Alloc>, Options... >
     {
     public:
         typedef std::list< std::pair<Key const, T>, Alloc>     container_type          ;   ///< underlying container type
@@ -84,14 +84,14 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 7aeeb3f00dbe20585df30da718c50abd74241efa..80810f42046e1d4ec34aec247e10812949b0dac0 100644 (file)
@@ -59,8 +59,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::set adapter for hash set bucket
-    template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< std::map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+    class adapt< std::map< Key, T, Traits, Alloc>, Options... >
     {
     public:
         typedef std::map< Key, T, Traits, Alloc>     container_type          ;   ///< underlying container type
@@ -85,7 +85,7 @@ namespace cds { namespace intrusive { namespace striped_set {
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 13a1be434cee354f1aca9cec7d3452b16384f4a3..b51e7ccf1d4014b1ba794caf105353785d0f3910 100644 (file)
@@ -488,11 +488,11 @@ namespace cds { namespace container {
                 </tr>
             </table>
     */
-    template <class Container, CDS_DECL_OPTIONS9>
-    class StripedSet: protected intrusive::StripedSet<Container, CDS_OPTIONS9>
+    template <class Container, typename... Options>
+    class StripedSet: protected intrusive::StripedSet<Container, Options...>
     {
         //@cond
-        typedef intrusive::StripedSet<Container, CDS_OPTIONS9>  base_class;
+        typedef intrusive::StripedSet<Container, Options...>  base_class;
         //@endcond
     public:
         //@cond
index 707f2b4e64b1b369496fabaed198824ef38be54c..3367678e58395d10e1fe94b5a69fcd43fb1d2b9e 100644 (file)
@@ -169,7 +169,7 @@ namespace cds { namespace container {
             <hr>
 
         */
-        template < typename Container, CDS_DECL_OPTIONS >
+        template < typename Container, typename... Options>
         class adapt
         {
         public:
@@ -223,7 +223,7 @@ namespace cds { namespace container {
                 };
             };
 
-            template <class Set, CDS_SPEC_OPTIONS>
+            template <class Set, typename... Options>
             class boost_set_adapter: public striped_set::adapted_container
             {
             public:
@@ -241,7 +241,7 @@ namespace cds { namespace container {
                     typename cds::opt::value<
                         typename cds::opt::find_option<
                             cds::opt::copy_policy< cds::container::striped_set::move_item >
-                            , CDS_OPTIONS
+                            , Options...
                         >::type
                     >::copy_policy
                     , cds::container::striped_set::copy_item, copy_item_policy<container_type>
@@ -366,7 +366,7 @@ namespace cds { namespace container {
                 };
             };
 
-            template <class Map, CDS_SPEC_OPTIONS>
+            template <class Map, typename... Options>
             class boost_map_adapter: public striped_set::adapted_container
             {
             public:
@@ -386,7 +386,7 @@ namespace cds { namespace container {
                     typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                     >::copy_policy
                     , cds::container::striped_set::copy_item, copy_item_policy<container_type>
index a00fc7e4ab3862e966cc9086340789468eefd0f6..7fd2b216969993d6b4318e564accc849e5997ff1 100644 (file)
@@ -41,12 +41,12 @@ namespace cds { namespace container {
 }} // namespace cds::container
 
 namespace cds { namespace intrusive { namespace striped_set {
-    template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::flat_set<T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename T, class Traits, class Alloc, typename... Options>
+    class adapt< boost::container::flat_set<T, Traits, Alloc>, Options... >
     {
     public:
         typedef boost::container::flat_set<T, Traits, Alloc>    container_type ;   ///< underlying container type
-        typedef cds::container::striped_set::details::boost_set_adapter< container_type, CDS_OPTIONS >    type;
+        typedef cds::container::striped_set::details::boost_set_adapter< container_type, Options... >    type;
     };
 }}}
 
index a9f38c43dcd8090f28d35a634c2cfcbc57b621dc..8dad1316df0434ba33e385a4fa294089ebc1ff3b 100644 (file)
@@ -63,8 +63,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// boost::container::list adapter for hash set bucket
-    template <typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::list<T, Alloc>, CDS_OPTIONS >
+    template <typename T, class Alloc, typename... Options>
+    class adapt< boost::container::list<T, Alloc>, Options... >
     {
     public:
         typedef boost::container::list<T, Alloc>     container_type          ;   ///< underlying container type
@@ -83,13 +83,13 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index c712fb2cf12c5712f23b58f87b59e42d6885e6b0..4085913667cf808bb490f7697160f28324416c71 100644 (file)
@@ -39,12 +39,12 @@ namespace cds { namespace container {
 
 namespace cds { namespace intrusive { namespace striped_set {
     /// boost::container::flat_set adapter for hash set bucket
-    template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::set<T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename T, class Traits, class Alloc, typename... Options>
+    class adapt< boost::container::set<T, Traits, Alloc>, Options... >
     {
     public:
         typedef boost::container::set<T, Traits, Alloc>     container_type ;   ///< underlying container type
-        typedef cds::container::striped_set::details::boost_set_adapter< container_type, CDS_OPTIONS >    type;
+        typedef cds::container::striped_set::details::boost_set_adapter< container_type, Options... >    type;
     };
 }}} // namespace cds::intrusive::striped_set
 
index c45ab4ec03a16833e717f24696248f0948d1419c..baa8468b2a69b941687ff0acd5dac1e34fa20966 100644 (file)
@@ -58,8 +58,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// boost::container::slist adapter for hash set bucket
-    template <typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::slist<T, Alloc>, CDS_OPTIONS >
+    template <typename T, class Alloc, typename... Options>
+    class adapt< boost::container::slist<T, Alloc>, Options... >
     {
     public:
         typedef boost::container::slist<T, Alloc>     container_type          ;   ///< underlying container type
@@ -78,13 +78,13 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 142699a69cad240ceb52b3e7a163c11e2d1672ea..77537881b65eacc0af0414230b91764e7f544c96 100644 (file)
@@ -64,8 +64,8 @@ namespace cds { namespace container {
 
 namespace cds { namespace intrusive { namespace striped_set {
     /// boost::container::stable_vector adapter for hash set bucket
-    template <typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::stable_vector<T, Alloc>, CDS_OPTIONS >
+    template <typename T, class Alloc, typename... Options>
+    class adapt< boost::container::stable_vector<T, Alloc>, Options... >
     {
     public:
         typedef boost::container::stable_vector<T, Alloc>     container_type          ;   ///< underlying container type
@@ -84,13 +84,13 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 246208786637712935762aa861fa6b4b787b1409..ebeeb55df5ed79dd56457775b223e16e04cc57e1 100644 (file)
@@ -31,12 +31,12 @@ namespace cds { namespace container {
 
 namespace cds { namespace intrusive { namespace striped_set {
     /// boost::unordered_set adapter for hash set bucket
-    template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::unordered_set<T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename T, class Traits, class Alloc, typename... Options>
+    class adapt< boost::unordered_set<T, Traits, Alloc>, Options... >
     {
     public:
         typedef boost::unordered_set<T, Traits, Alloc>    container_type ;   ///< underlying container type
-        typedef cds::container::striped_set::details::boost_set_adapter< container_type, CDS_OPTIONS >    type;
+        typedef cds::container::striped_set::details::boost_set_adapter< container_type, Options... >    type;
     };
 }}} // namespace cds::intrusive::striped_set
 
index 3979e8fedccc4108a72eeba592123694ecd1f94e..a9fbfe9d35470173025896f82b5aad419adb11aa 100644 (file)
@@ -64,8 +64,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// boost::container::vector adapter for hash set bucket
-    template <typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< boost::container::vector<T, Alloc>, CDS_OPTIONS >
+    template <typename T, class Alloc, typename... Options>
+    class adapt< boost::container::vector<T, Alloc>, Options... >
     {
     public:
         typedef boost::container::vector<T, Alloc>     container_type          ;   ///< underlying container type
@@ -84,13 +84,13 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index dc1b8f731af3942c858f6f7977903c873072892e..e0254c9c45dd26b5b11e8be4b51bcbf3dae685ed 100644 (file)
@@ -49,8 +49,8 @@ namespace cds { namespace container {
 
 namespace cds { namespace intrusive { namespace striped_set {
     /// std::unordered_set  adapter for hash set bucket
-    template <typename T, class Hash, class Pred, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< std::unordered_set<T, Hash, Pred, Alloc>, CDS_OPTIONS >
+    template <typename T, class Hash, class Pred, class Alloc, typename... Options>
+    class adapt< std::unordered_set<T, Hash, Pred, Alloc>, Options... >
     {
     public:
         typedef std::unordered_set<T, Hash, Pred, Alloc>  container_type  ;   ///< underlying container type
@@ -73,7 +73,7 @@ namespace cds { namespace intrusive { namespace striped_set {
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 40b197f38bcb788674119743229f39dec9e09ac2..352e30e86d9c16b1a4b67c9edadf9f7c4b555e67 100644 (file)
@@ -50,8 +50,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::unordered_set  adapter for hash set bucket
-    template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< stdext::hash_set<T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename T, class Traits, class Alloc, typename... Options>
+    class adapt< stdext::hash_set<T, Traits, Alloc>, Options... >
     {
     public:
         typedef stdext::hash_set<T, Traits, Alloc>  container_type  ;   ///< underlying container type
@@ -74,7 +74,7 @@ namespace cds { namespace intrusive { namespace striped_set {
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 4453238520f6b1f733db389d2727b4e1071cad04..50411b0688abd4c5a835bccbadef1b9658f6a087 100644 (file)
@@ -58,8 +58,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::list adapter for hash set bucket
-    template <typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< std::list<T, Alloc>, CDS_OPTIONS >
+    template <typename T, class Alloc, typename... Options>
+    class adapt< std::list<T, Alloc>, Options... >
     {
     public:
         typedef std::list<T, Alloc>     container_type          ;   ///< underlying container type
@@ -78,14 +78,14 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 913f95eca5612f400f6e3eafadabb12674c14655..6f2379467f56e3b1cde31baaf95762ec4d8ead13 100644 (file)
@@ -45,8 +45,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::set adapter for hash set bucket
-    template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< std::set<T, Traits, Alloc>, CDS_OPTIONS >
+    template <typename T, class Traits, class Alloc, typename... Options>
+    class adapt< std::set<T, Traits, Alloc>, Options... >
     {
     public:
         typedef std::set<T, Traits, Alloc>     container_type          ;   ///< underlying container type
@@ -69,7 +69,7 @@ namespace cds { namespace intrusive { namespace striped_set {
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index a6d977bf3bc98d95c424a77e2ba88a7e9a2364a2..e1e9169fd52b3aceffed570daa346b5173e53ce4 100644 (file)
@@ -60,8 +60,8 @@ namespace cds { namespace container {
 namespace cds { namespace intrusive { namespace striped_set {
 
     /// std::vector adapter for hash set bucket
-    template <typename T, class Alloc, CDS_SPEC_OPTIONS>
-    class adapt< std::vector<T, Alloc>, CDS_OPTIONS >
+    template <typename T, class Alloc, typename... Options>
+    class adapt< std::vector<T, Alloc>, Options... >
     {
     public:
         typedef std::vector<T, Alloc>     container_type          ;   ///< underlying container type
@@ -80,13 +80,13 @@ namespace cds { namespace intrusive { namespace striped_set {
 
         private:
             //@cond
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
             typedef typename cds::opt::select<
                 typename cds::opt::value<
                     typename cds::opt::find_option<
                         cds::opt::copy_policy< cds::container::striped_set::move_item >
-                        , CDS_OPTIONS
+                        , Options...
                     >::type
                 >::copy_policy
                 , cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
index 15465403ac3877f87fbb19a30ac28a744f922642..8e7dae7e6ba37694411dbddd87ee623c20ccde27 100644 (file)
@@ -14,7 +14,7 @@ namespace cds { namespace container {
         using cds::intrusive::treiber_stack::stat;
         using cds::intrusive::treiber_stack::empty_stat;
 
-        template <typename GC, typename T, CDS_DECL_OPTIONS11>
+        template <typename GC, typename T, typename... Options>
         struct make_treiber_stack
         {
             typedef T value_type;
@@ -35,8 +35,8 @@ namespace cds { namespace container {
             };
 
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< default_options, CDS_OPTIONS11 >::type
-                ,CDS_OPTIONS11
+                typename cds::opt::find_type_traits< default_options, Options... >::type
+                ,Options...
             >::type   options;
 
             typedef GC gc;
@@ -119,25 +119,25 @@ namespace cds { namespace container {
         - opt::elimination_backoff - back-off strategy to wait for elimination, default is cds::backoff::delay<>
         - opt::lock_type - a lock type used in elimination back-off, default is cds::lock::Spin.
     */
-    template < typename GC, typename T, CDS_DECL_OPTIONS11 >
+    template < typename GC, typename T, typename... Options >
     class TreiberStack
         : public
 #ifdef CDS_DOXYGEN_INVOKED
         intrusive::TreiberStack< GC, cds::intrusive::single_link::node< T >, Options... >
 #else
-        treiber_stack::make_treiber_stack< GC, T, CDS_OPTIONS11 >::type
+        treiber_stack::make_treiber_stack< GC, T, Options... >::type
 #endif
     {
         //@cond
-        typedef treiber_stack::make_treiber_stack< GC, T, CDS_OPTIONS11 > options;
+        typedef treiber_stack::make_treiber_stack< GC, T, Options... > options;
         typedef typename options::type base_class;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS11>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef TreiberStack< GC2, T2, CDS_OTHER_OPTIONS11> other   ;   ///< Rebinding result
+            typedef TreiberStack< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index 2fd81cb13200e381619e616ae649baaedb8be63a..b8d4a7c35eec55d8f10d3db3ea1e89d8e298e06e 100644 (file)
@@ -12,7 +12,7 @@ namespace cds { namespace container {
 
     //@cond
     namespace details {
-        template <typename T, CDS_DECL_OPTIONS7>
+        template <typename T, typename... Options>
         struct make_tsigas_cycle_queue
         {
             typedef T value_type;
@@ -26,8 +26,8 @@ namespace cds { namespace container {
             };
 
             typedef typename opt::make_options<
-                typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
-                ,CDS_OPTIONS7
+                typename cds::opt::find_type_traits< default_options, Options... >::type
+                ,Options...
             >::type   options;
 
             typedef typename options::allocator::template rebind<value_type>::other allocator_type;
@@ -98,16 +98,16 @@ namespace cds { namespace container {
         dynamic_queue    dynQueue( 1024 );
         \endcode
     */
-    template <typename T, CDS_DECL_OPTIONS7>
+    template <typename T, typename... Options>
     class TsigasCycleQueue:
 #ifdef CDS_DOXYGEN_INVOKED
         intrusive::TsigasCycleQueue< T, Options... >
 #else
-        details::make_tsigas_cycle_queue< T, CDS_OPTIONS7 >::type
+        details::make_tsigas_cycle_queue< T, Options... >::type
 #endif
     {
         //@cond
-        typedef details::make_tsigas_cycle_queue< T, CDS_OPTIONS7 > options;
+        typedef details::make_tsigas_cycle_queue< T, Options... > options;
         typedef typename options::type base_class;
         //@endcond
     public:
@@ -119,9 +119,9 @@ namespace cds { namespace container {
         typedef typename base_class::memory_model       memory_model    ; ///< Memory ordering. See cds::opt::memory_model option
 
         /// Rebind template arguments
-        template <typename T2, CDS_DECL_OTHER_OPTIONS7>
+        template <typename T2, typename... Options2>
         struct rebind {
-            typedef TsigasCycleQueue< T2, CDS_OTHER_OPTIONS7> other   ;   ///< Rebinding result
+            typedef TsigasCycleQueue< T2, Options2...> other   ;   ///< Rebinding result
         };
 
     protected:
index 5ca4a94bce862dbbd4a90505a43f1a74af66ec1b..051f05b9a64f59a280ce31ca4555e7c9a5fda1e0 100644 (file)
@@ -56,7 +56,7 @@ namespace cds { namespace container {
         > myQueue;
         \endcode
     */
-    template <typename T, CDS_DECL_OPTIONS6>
+    template <typename T, typename... Options>
     class VyukovMPMCCycleQueue
         : public cds::bounded_container
     {
@@ -75,8 +75,8 @@ namespace cds { namespace container {
     public:
         //@cond
         typedef typename opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS6 >::type
-            ,CDS_OPTIONS6
+            typename cds::opt::find_type_traits< default_options, Options... >::type
+            ,Options...
         >::type   options;
         //@endcond
 
@@ -91,9 +91,9 @@ namespace cds { namespace container {
         typedef typename options::memory_model  memory_model ;  ///< Memory ordering. See cds::opt::memory_model option
 
         /// Rebind template arguments
-        template <typename T2, CDS_DECL_OTHER_OPTIONS6>
+        template <typename T2, typename... Options2>
         struct rebind {
-            typedef VyukovMPMCCycleQueue< T2, CDS_OTHER_OPTIONS6> other   ;   ///< Rebinding result
+            typedef VyukovMPMCCycleQueue< T2, Options2...> other   ;   ///< Rebinding result
         };
 
     protected:
index 5b214da50e10e99133e46466f553e6015b3e251b..572feb43567b1f9e408b9751dcf3dba0d2e96de7 100644 (file)
@@ -97,10 +97,10 @@ namespace cds { namespace intrusive {
         using single_link::default_hook;
 
         //@cond
-        template < typename HookType, CDS_DECL_OPTIONS2>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
             typedef typename options::gc    gc;
             typedef typename options::tag   tag;
             typedef node<gc, tag> node_type;
@@ -115,8 +115,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < CDS_DECL_OPTIONS2 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -128,8 +128,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -145,8 +145,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS2 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
@@ -346,7 +346,7 @@ namespace cds { namespace intrusive {
         > barQueue;
         \endcode
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS9>
+    template <typename GC, typename T, typename... Options>
     class BasketQueue
     {
         //@cond
@@ -366,8 +366,8 @@ namespace cds { namespace intrusive {
     public:
         //@cond
         typedef typename opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
-            ,CDS_OPTIONS9
+            typename cds::opt::find_type_traits< default_options, Options... >::type
+            ,Options...
         >::type   options;
 
         typedef typename std::conditional<
@@ -401,9 +401,9 @@ namespace cds { namespace intrusive {
         typedef typename options::memory_model  memory_model ;   ///< Memory ordering. See cds::opt::memory_model option
 
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef BasketQueue< GC2, T2, CDS_OTHER_OPTIONS9> other   ;   ///< Rebinding result
+            typedef BasketQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
         static const size_t m_nHazardPtrCount = 6 ; ///< Count of hazard pointer required for the algorithm
index 41af48ed4c188ccd0ef1134afdf33c49a138fbdb..15924713b74f262f943aa6cb5698aa97964ad775 100644 (file)
@@ -239,10 +239,10 @@ namespace cds { namespace intrusive {
             typedef opt::none   tag;
         };
 
-        template < typename HookType, CDS_DECL_OPTIONS3>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS3>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
 
             typedef typename options::probeset_type probeset_type;
             typedef typename options::tag tag;
@@ -261,8 +261,8 @@ namespace cds { namespace intrusive {
             - cuckoo::store_hash - store hash values in the node or not. Default is 0 (no storing)
             - opt::tag - tag to distinguish different nodes in one struct. Default is opt::none
         */
-        template < CDS_DECL_OPTIONS3 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS3 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -275,8 +275,8 @@ namespace cds { namespace intrusive {
             - cuckoo::store_hash - store hash values in the node or not. Default is 0 (no storing)
             - opt::tag - tag to distinguish different nodes in one struct. Default is opt::none
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS3 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS3 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -293,8 +293,8 @@ namespace cds { namespace intrusive {
             - cuckoo::store_hash - store hash values in the node or not. Default is 0 (no storing)
             - opt::tag - tag to distinguish different nodes in one struct. Default is opt::none
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS3 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS3 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
@@ -1167,11 +1167,11 @@ namespace cds { namespace intrusive {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see \ref CuckooSet.
         */
-        template <CDS_DECL_OPTIONS11>
+        template <typename... Options>
         struct make_traits {
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< cuckoo::type_traits, CDS_OPTIONS10 >::type
-                ,CDS_OPTIONS11
+                typename cds::opt::find_type_traits< cuckoo::type_traits, Options... >::type
+                ,Options...
             >::type   type ;    ///< Result of metafunction
         };
 
index a52390a4b3b2598c0ee07629a1ecdd9d29e6f9ed..f35ac11be2d04ac357ec7009936904cbbb7d4718 100644 (file)
@@ -246,10 +246,10 @@ namespace cds { namespace intrusive {
         //@endcond
 
         //@cond
-        template < typename HookType, CDS_DECL_OPTIONS2>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
             typedef typename options::gc    gc;
             typedef typename options::tag   tag;
             typedef node<gc, tag>           node_type;
@@ -263,8 +263,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - a tag
         */
-        template < CDS_DECL_OPTIONS2 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -276,8 +276,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - a tag
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -293,8 +293,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - a tag
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS2 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
@@ -525,14 +525,14 @@ namespace cds { namespace intrusive {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see \ref EllenBinTree.
         */
-        template <CDS_DECL_OPTIONS12>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS12 >::type
-                ,CDS_OPTIONS12
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 87a1436dd1561d45be130407f3ac051f14296961..7fafe1d81243cc09726b1335a0806f4097d40181 100644 (file)
@@ -66,14 +66,14 @@ namespace cds { namespace intrusive {
             - \p opt::enable_elimination - enable/disable operation \ref cds_elimination_description "elimination"
                 By default, the elimination is disabled.
         */
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
-                ,CDS_OPTIONS8
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 2cd01940f5a7d08f795b0bf78e80ee8c41eadb18..f985ec77eec1b18583444b265f67ffdc72a16630 100644 (file)
@@ -66,14 +66,14 @@ namespace cds { namespace intrusive {
             - \p opt::enable_elimination - enable/disable operation \ref cds_elimination_description "elimination"
                 By default, the elimination is disabled.
         */
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
-                ,CDS_OPTIONS8
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 8c1cd61bb48ead6aca1b09067dc78c4ab6c6171e..3afdef67e2d128dd3eaa2308967a68943d6b8e80 100644 (file)
@@ -104,10 +104,10 @@ namespace cds { namespace intrusive {
         //@endcond
 
         //@cond
-        template < typename HookType, CDS_DECL_OPTIONS3>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS3>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
             typedef typename options::gc        gc;
             typedef typename options::tag       tag;
             typedef typename options::lock_type lock_type;
@@ -123,8 +123,8 @@ namespace cds { namespace intrusive {
             - opt::lock_type - lock type used for node locking. Default is lock::Spin
             - opt::tag - tag
         */
-        template < CDS_DECL_OPTIONS3 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS3 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -137,8 +137,8 @@ namespace cds { namespace intrusive {
             - opt::lock_type - lock type used for node locking. Default is lock::Spin
             - opt::tag - tag
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS3 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS3 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -155,8 +155,8 @@ namespace cds { namespace intrusive {
             - opt::lock_type - lock type used for node locking. Default is lock::Spin
             - opt::tag - tag
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS3 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS3 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
@@ -294,14 +294,14 @@ namespace cds { namespace intrusive {
             See \ref LazyList, \ref type_traits, \ref cds::opt::make_options.
 
         */
-        template <CDS_DECL_OPTIONS11>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS11 >::type
-                ,CDS_OPTIONS11
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 229238195adea056d3886e6ddc9a2f0d21a281d6..e21816547cb1c9da26213706c4cd9ab5b398ed7e 100644 (file)
@@ -202,12 +202,12 @@ namespace cds { namespace intrusive {
 
         //@cond
         // Rebind options (split-list support)
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct rebind_options {
             typedef LazyList<
                 gc
                 , value_type
-                , typename cds::opt::make_options< options, CDS_OPTIONS8>::type
+                , typename cds::opt::make_options< options, Options...>::type
             >   type;
         };
         //@endcond
index 70be1c4c2348dfdbbd6a9df9041f39e5d4b8d0d7..cdcf9f0c0ecd5b6107f2d6cd2bcb5ec2d3ce5de5 100644 (file)
@@ -93,12 +93,12 @@ namespace cds { namespace intrusive {
 
         //@cond
         // Rebind options (split-list support)
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct rebind_options {
             typedef LazyList<
                 gc
                 , value_type
-                , typename cds::opt::make_options< options, CDS_OPTIONS8>::type
+                , typename cds::opt::make_options< options, Options...>::type
             >   type;
         };
         //@endcond
index 027ff733370ad1864c397eb9840d2becb5861410..9761bfded4b105406cb7309622e3bf2085c685eb 100644 (file)
@@ -126,12 +126,12 @@ namespace cds { namespace intrusive {
 
         //@cond
         // Rebind options (split-list support)
-        template <CDS_DECL_OPTIONS8>
+        template <typename... Options>
         struct rebind_options {
             typedef LazyList<
                 gc
                 , value_type
-                , typename cds::opt::make_options< options, CDS_OPTIONS8>::type
+                , typename cds::opt::make_options< options, Options...>::type
             >   type;
         };
         //@endcond
index bb0bf8ea73a22f53638b0018812948ca5ae49d49..684271625d1038941f3567e1ba3337584d5f8435 100644 (file)
@@ -60,10 +60,10 @@ namespace cds { namespace intrusive {
         //@endcond
 
         //@cond
-        template < typename HookType, CDS_DECL_OPTIONS2>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
             typedef typename options::gc    gc;
             typedef typename options::tag   tag;
             typedef node<gc, tag>   node_type;
@@ -77,8 +77,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < CDS_DECL_OPTIONS2 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -90,8 +90,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -107,8 +107,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS2 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
@@ -233,16 +233,16 @@ namespace cds { namespace intrusive {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see \ref MichaelList.
         */
-        template <CDS_DECL_OPTIONS9>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
-                ,CDS_OPTIONS9
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
-            //typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS9>::type type  ;   ///< Result of metafunction
+            //typedef typename cds::opt::make_options< type_traits, Options...>::type type  ;   ///< Result of metafunction
 #   endif
         };
 
index 3fbd853ff676d1d459fead52ec1a189a61bc6e4f..83160c5fc4c1434347b6d44920af771a025b903f 100644 (file)
@@ -204,12 +204,12 @@ namespace cds { namespace intrusive {
 
         //@cond
         // Rebind options (split-list support)
-        template <CDS_DECL_OPTIONS7>
+        template <typename... Options>
         struct rebind_options {
             typedef MichaelList<
                 gc
                 , value_type
-                , typename cds::opt::make_options< options, CDS_OPTIONS7>::type
+                , typename cds::opt::make_options< options, Options...>::type
             >   type;
         };
         //@endcond
index e1054a6ed10bd7a718b9929f005f3b1b98d15d04..d0d9d824e654e03718ad43911dc63a2a93cf901d 100644 (file)
@@ -69,12 +69,12 @@ namespace cds { namespace intrusive {
 
         //@cond
         // Rebind options (split-list support)
-        template <CDS_DECL_OPTIONS7>
+        template <typename... Options>
         struct rebind_options {
             typedef MichaelList<
                 gc
                 , value_type
-                , typename cds::opt::make_options< options, CDS_OPTIONS7>::type
+                , typename cds::opt::make_options< options, Options...>::type
             >   type;
         };
         //@endcond
index 0239c191def339c7c96f35122bcbba1d1b403cca..adb1351437d40baf15494904a651bb44ef57896c 100644 (file)
@@ -79,12 +79,12 @@ namespace cds { namespace intrusive {
 
         //@cond
         // Rebind options (split-list support)
-        template <CDS_DECL_OPTIONS7>
+        template <typename... Options>
         struct rebind_options {
             typedef MichaelList<
                 gc
                 , value_type
-                , typename cds::opt::make_options< options, CDS_OPTIONS7>::type
+                , typename cds::opt::make_options< options, Options...>::type
             >   type;
         };
         //@endcond
index acc35c853c6ee10c96a6eebeb5565bc16b86e8ed..f68b5a3b446e584ede4a598c3eb88d832984c69a 100644 (file)
@@ -59,9 +59,9 @@ namespace cds { namespace intrusive {
 
             See \ref MichaelHashSet, \ref type_traits.
         */
-        template <CDS_DECL_OPTIONS3>
+        template <typename... Options>
         struct make_traits {
-            typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS3>::type type  ;   ///< Result of metafunction
+            typedef typename cds::opt::make_options< type_traits, Options...>::type type  ;   ///< Result of metafunction
         };
 
         //@cond
index fe9ad8c548888eccd4ac63c8fda148dd935402d2..40f60b9e3fd1d52c2aeee880786adccb6e0c99db 100644 (file)
@@ -85,11 +85,11 @@ namespace cds { namespace intrusive {
 
         \endcode
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS9>
-    class MoirQueue: public MSQueue< GC, T, CDS_OPTIONS9 >
+    template <typename GC, typename T, typename... Options>
+    class MoirQueue: public MSQueue< GC, T, Options... >
     {
         //@cond
-        typedef MSQueue< GC, T, CDS_OPTIONS9 > base_class;
+        typedef MSQueue< GC, T, Options... > base_class;
         typedef typename base_class::node_type node_type;
         //@endcond
 
@@ -103,9 +103,9 @@ namespace cds { namespace intrusive {
         //@endcond
 
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef MoirQueue< GC2, T2, CDS_OTHER_OPTIONS9> other   ;   ///< Rebinding result
+            typedef MoirQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     protected:
index ce277758c739a303949af6e8cd1c9cb74db19790..0f29612a8d076311c91afdc6e61b82d9c7b4d92b 100644 (file)
@@ -98,14 +98,14 @@ namespace cds { namespace intrusive {
 
             See \ref MSPriorityQueue, \ref type_traits, \ref cds::opt::make_options.
         */
-        template <CDS_DECL_OPTIONS7>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS7 >::type
-                ,CDS_OPTIONS7
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 7a8196130cb08af414c0b2a821ce336622971e44..bbf9857f26e50d40fd01df433260570d48ea02cc 100644 (file)
@@ -103,7 +103,7 @@ namespace cds { namespace intrusive {
         > barQueue;
         \endcode
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS9>
+    template <typename GC, typename T, typename... Options>
     class MSQueue
     {
         //@cond
@@ -123,8 +123,8 @@ namespace cds { namespace intrusive {
     public:
         //@cond
         typedef typename opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
-            ,CDS_OPTIONS9
+            typename cds::opt::find_type_traits< default_options, Options... >::type
+            ,Options...
         >::type   options;
         //@endcond
 
@@ -143,9 +143,9 @@ namespace cds { namespace intrusive {
         typedef typename options::memory_model  memory_model ;   ///< Memory ordering. See cds::opt::memory_model option
 
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef MSQueue< GC2, T2, CDS_OTHER_OPTIONS9> other   ;   ///< Rebinding result
+            typedef MSQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     protected:
index 43421108e8b6079056c446f5355d0bb1076ab313..30e22254428f44f4fc05a68bbdaba426e2319909 100644 (file)
@@ -49,10 +49,10 @@ namespace cds { namespace intrusive {
         //@endcond
 
         //@cond
-        template < typename HookType, CDS_DECL_OPTIONS2>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
             typedef typename options::gc    gc;
             typedef typename options::tag   tag;
             typedef node<gc, tag> node_type;
@@ -66,8 +66,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < CDS_DECL_OPTIONS2 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -79,8 +79,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -96,8 +96,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS2 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
@@ -285,7 +285,7 @@ namespace cds { namespace intrusive {
 
         \endcode
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS9>
+    template <typename GC, typename T, typename... Options>
     class OptimisticQueue
     {
         //@cond
@@ -305,8 +305,8 @@ namespace cds { namespace intrusive {
     public:
         //@cond
         typedef typename opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
-            ,CDS_OPTIONS9
+            typename cds::opt::find_type_traits< default_options, Options... >::type
+            ,Options...
         >::type   options;
 
         typedef typename std::conditional<
@@ -340,9 +340,9 @@ namespace cds { namespace intrusive {
 #endif
 
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef OptimisticQueue< GC2, T2, CDS_OTHER_OPTIONS9> other   ;   ///< Rebinding result
+            typedef OptimisticQueue< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     protected:
index 1b61e12b6f2a1b4b01b0737101afa0170b349b3a..f4182c787a6e128cdd71b2926cff6b07ca16bf90 100644 (file)
@@ -127,14 +127,14 @@ namespace cds { namespace intrusive {
             - \p opt::permutation_generator - a random permutation generator for sequence [0, quasi_factor),
                 default is cds::opt::v::random2_permutation<int>
         */
-        template <CDS_DECL_OPTIONS9>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
-                ,CDS_OPTIONS9
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 4f557f33666869f0dc901c50194274a64baa08ba..960095f61c7e7cee7dc8e69257e62dc4c59f8c24 100644 (file)
@@ -97,10 +97,10 @@ namespace cds { namespace intrusive {
         //@endcond
 
         //@cond
-        template < typename HookType, CDS_DECL_OPTIONS2>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
             typedef typename options::gc    gc;
             typedef typename options::tag   tag;
             typedef node<gc, tag> node_type;
@@ -115,8 +115,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < CDS_DECL_OPTIONS2 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -128,8 +128,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -145,8 +145,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - tag
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS2 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
index 57a5a85ffe05f8ca3558653b5034de7a1e40e134..5e046961f828177365e5cabc50c74058ad5666ca 100644 (file)
@@ -140,10 +140,10 @@ namespace cds { namespace intrusive {
         //@endcond
 
         //@cond
-        template < typename HookType, CDS_DECL_OPTIONS2>
+        template < typename HookType, typename... Options>
         struct hook
         {
-            typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type  options;
+            typedef typename opt::make_options< default_hook, Options...>::type  options;
             typedef typename options::gc    gc;
             typedef typename options::tag   tag;
             typedef node<gc, tag>           node_type;
@@ -157,8 +157,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - a tag
         */
-        template < CDS_DECL_OPTIONS2 >
-        struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+        template < typename... Options >
+        struct base_hook: public hook< opt::base_hook_tag, Options... >
         {};
 
         /// Member hook
@@ -170,8 +170,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - a tag
         */
-        template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
-        struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+        template < size_t MemberOffset, typename... Options >
+        struct member_hook: public hook< opt::member_hook_tag, Options... >
         {
             //@cond
             static const size_t c_nMemberOffset = MemberOffset;
@@ -187,8 +187,8 @@ namespace cds { namespace intrusive {
             - opt::gc - garbage collector used.
             - opt::tag - a tag
         */
-        template <typename NodeTraits, CDS_DECL_OPTIONS2 >
-        struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+        template <typename NodeTraits, typename... Options >
+        struct traits_hook: public hook< opt::traits_hook_tag, Options... >
         {
             //@cond
             typedef NodeTraits node_traits;
@@ -563,14 +563,14 @@ namespace cds { namespace intrusive {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             \p Options list see \ref SkipListSet.
         */
-        template <CDS_DECL_OPTIONS13>
+        template <typename... Options>
         struct make_traits {
 #   ifdef CDS_DOXYGEN_INVOKED
             typedef implementation_defined type ;   ///< Metafunction result
 #   else
             typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS13 >::type
-                ,CDS_OPTIONS13
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
             >::type   type;
 #   endif
         };
index 7f366ddccb0ae009d2a4a90900f58828644d0bf5..9c1743a5d7b1f82618599370d33f008f67e4a89b 100644 (file)
@@ -137,9 +137,9 @@ namespace cds { namespace intrusive {
 
             See \ref MichaelHashSet, \ref type_traits.
         */
-        template <CDS_DECL_OPTIONS6>
+        template <typename... Options>
         struct make_traits {
-            typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS6>::type type  ;   ///< Result of metafunction
+            typedef typename cds::opt::make_options< type_traits, Options...>::type type  ;   ///< Result of metafunction
         };
 
 
@@ -157,7 +157,7 @@ namespace cds { namespace intrusive {
             - \p opt::allocator - allocator used to allocate bucket table. Default is \ref CDS_DEFAULT_ALLOCATOR
             - \p opt::memory_model - memory model used. Possible types are opt::v::sequential_consistent, opt::v::relaxed_ordering
         */
-        template <typename GC, typename Node, CDS_DECL_OPTIONS2>
+        template <typename GC, typename Node, typename... Options>
         class static_bucket_table
         {
             //@cond
@@ -166,7 +166,7 @@ namespace cds { namespace intrusive {
                 typedef CDS_DEFAULT_ALLOCATOR       allocator;
                 typedef opt::v::relaxed_ordering    memory_model;
             };
-            typedef typename opt::make_options< default_options, CDS_OPTIONS2 >::type   options;
+            typedef typename opt::make_options< default_options, Options... >::type   options;
             //@endcond
 
         public:
@@ -269,7 +269,7 @@ namespace cds { namespace intrusive {
             - \p opt::allocator - allocator used to allocate bucket table. Default is \ref CDS_DEFAULT_ALLOCATOR
             - \p opt::memory_model - memory model used. Possible types are opt::v::sequential_consistent, opt::v::relaxed_ordering
         */
-        template <typename GC, typename Node, CDS_DECL_OPTIONS2>
+        template <typename GC, typename Node, typename... Options>
         class expandable_bucket_table
         {
             //@cond
@@ -278,7 +278,7 @@ namespace cds { namespace intrusive {
                 typedef CDS_DEFAULT_ALLOCATOR       allocator;
                 typedef opt::v::relaxed_ordering    memory_model;
             };
-            typedef typename opt::make_options< default_options, CDS_OPTIONS2 >::type   options;
+            typedef typename opt::make_options< default_options, Options... >::type   options;
             //@endcond
         public:
             typedef GC      gc          ;   ///< Garbage collector
@@ -530,19 +530,19 @@ namespace cds { namespace intrusive {
 
         //@cond
         namespace details {
-            template <bool Value, typename GC, typename Node, CDS_DECL_OPTIONS2>
+            template <bool Value, typename GC, typename Node, typename... Options>
             struct bucket_table_selector;
 
-            template <typename GC, typename Node, CDS_SPEC_OPTIONS2>
-            struct bucket_table_selector< true, GC, Node, CDS_OPTIONS2>
+            template <typename GC, typename Node, typename... Options>
+            struct bucket_table_selector< true, GC, Node, Options...>
             {
-                typedef expandable_bucket_table<GC, Node, CDS_OPTIONS2>    type;
+                typedef expandable_bucket_table<GC, Node, Options...>    type;
             };
 
-            template <typename GC, typename Node, CDS_SPEC_OPTIONS2>
-            struct bucket_table_selector< false, GC, Node, CDS_OPTIONS2>
+            template <typename GC, typename Node, typename... Options>
+            struct bucket_table_selector< false, GC, Node, Options...>
             {
-                typedef static_bucket_table<GC, Node, CDS_OPTIONS2>    type;
+                typedef static_bucket_table<GC, Node, Options...>    type;
             };
 
             template <typename GC, class Alloc >
index 0ff4c673d3dbab5dea7c9e9821fa7f8eb8946c60..0e43f231a5b4af8b64820e211b9490912207316c 100644 (file)
@@ -253,7 +253,7 @@ namespace cds { namespace intrusive {
             See intrusive::striped_set::adapt metafunction for the description of interface that the bucket container must provide
             to be \p %StripedSet compatible.
     */
-    template <class Container, CDS_DECL_OPTIONS9>
+    template <class Container, typename... Options>
     class StripedSet
     {
     public:
@@ -269,13 +269,13 @@ namespace cds { namespace intrusive {
         };
 
         typedef typename cds::opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
-            ,CDS_OPTIONS9
+            typename cds::opt::find_type_traits< default_options, Options... >::type
+            ,Options...
         >::type   options;
         //@endcond
 
         typedef Container                           underlying_container_type   ;   ///< original intrusive container type for the bucket
-        typedef typename cds::intrusive::striped_set::adapt< underlying_container_type, CDS_OPTIONS9 >::type   bucket_type ;   ///< container type adapted for hash set
+        typedef typename cds::intrusive::striped_set::adapt< underlying_container_type, Options... >::type   bucket_type ;   ///< container type adapted for hash set
         typedef typename bucket_type::value_type    value_type  ;   ///< value type stored in the set
 
         typedef typename options::hash              hash            ; ///< Hash functor
index e12a65ef270c6b837becc6e01aff11546055405c..ec1cfa4828176b7dd1dfd02f9a3e681c7d8d8667 100644 (file)
@@ -171,7 +171,7 @@ namespace cds { namespace intrusive {
             <hr>
 
         */
-        template < typename Container, CDS_DECL_OPTIONS >
+        template < typename Container, typename... Options >
         class adapt
         {
         public:
index 70e1ed51601680a8e6f10cc250a887ecbaa6eebe..683ce450c97e53120b913c462c3c3b908fe171d2 100644 (file)
@@ -9,8 +9,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::avl_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+    class adapt< boost::intrusive::avl_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
     {
     public:
         typedef boost::intrusive::avl_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >  container_type  ;   ///< underlying intrusive container type
index bea6d96b86488157ca30e2dd43080f63a7972a16..84209db47b3595cbc267f14f790c1bc9a706c504 100644 (file)
@@ -9,8 +9,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS3, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::list< T, CDS_BOOST_INTRUSIVE_OPTIONS3 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS3, typename... Options>
+    class adapt< boost::intrusive::list< T, CDS_BOOST_INTRUSIVE_OPTIONS3 >, Options... >
     {
     public:
         typedef boost::intrusive::list< T, CDS_BOOST_INTRUSIVE_OPTIONS3 >  container_type  ;   ///< underlying intrusive container type
@@ -23,7 +23,7 @@ namespace cds { namespace intrusive { namespace striped_set {
             typedef typename container_type::value_type     value_type  ;   ///< value type stored in the container
             typedef typename container_type::iterator       iterator ;   ///< container iterator
             typedef typename container_type::const_iterator const_iterator ;    ///< container const iterator
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
         private:
             struct find_predicate
index c8fcadfdfb621b754fe170245ded5577caede154..554c85c1c3f56915062fd2422a3833d956617453 100644 (file)
@@ -9,8 +9,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+    class adapt< boost::intrusive::set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
     {
     public:
         typedef boost::intrusive::set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >  container_type  ;   ///< underlying intrusive container type
index d04459879322cb311ac8ac8565651cc8cdc75428..f5a88c74c1b3d750a989fdaf09eafb7db6d07aff 100644 (file)
@@ -9,8 +9,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::sg_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+    class adapt< boost::intrusive::sg_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
     {
     public:
         typedef boost::intrusive::sg_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >  container_type  ;   ///< underlying intrusive container type
index 2257ff51bb4ae18a42c6189baa18d67c4ed6603e..d677ca834d395824107786dda7e6a15c33c5bb84 100644 (file)
@@ -9,8 +9,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS5, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::slist< T, CDS_BOOST_INTRUSIVE_OPTIONS5 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS5, typename... Options>
+    class adapt< boost::intrusive::slist< T, CDS_BOOST_INTRUSIVE_OPTIONS5 >, Options... >
     {
     public:
         typedef boost::intrusive::slist< T, CDS_BOOST_INTRUSIVE_OPTIONS5 >  container_type  ;   ///< underlying intrusive container type
@@ -24,7 +24,7 @@ namespace cds { namespace intrusive { namespace striped_set {
             typedef typename container_type::iterator       iterator ;   ///< container iterator
             typedef typename container_type::const_iterator const_iterator ;    ///< container const iterator
 
-            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+            typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
 
         private:
 
index d993317e69db32a419e6a6d684ac5e2e01aa4b2c..99e4f74c0c5d0a8c35c5f1e534748a12b8d9714e 100644 (file)
@@ -9,8 +9,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::splay_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+    class adapt< boost::intrusive::splay_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
     {
     public:
         typedef boost::intrusive::splay_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >  container_type  ;   ///< underlying intrusive container type
index 0e0cc2b1c3b77909449cd38094ffc4223af8a08a..a4ea7666cafa0313862b0e0947bcb8406f3184a3 100644 (file)
@@ -9,8 +9,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::treap_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+    class adapt< boost::intrusive::treap_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
     {
     public:
         typedef boost::intrusive::treap_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >  container_type  ;   ///< underlying intrusive container type
index fdcfdc409625c91e1313a13ec43a57317f7b7bc5..9c3cb74d1ddf51eeac53f8b8e5f2fd107ec001b0 100644 (file)
@@ -10,8 +10,8 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS10, CDS_SPEC_OPTIONS>
-    class adapt< boost::intrusive::unordered_set< T, CDS_BOOST_INTRUSIVE_OPTIONS10 >, CDS_OPTIONS >
+    template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS10, typename... Options>
+    class adapt< boost::intrusive::unordered_set< T, CDS_BOOST_INTRUSIVE_OPTIONS10 >, Options... >
     {
     public:
         typedef boost::intrusive::unordered_set< T, CDS_BOOST_INTRUSIVE_OPTIONS10 >  container_type  ;   ///< underlying intrusive container type
@@ -27,7 +27,7 @@ namespace cds { namespace intrusive { namespace striped_set {
             typedef typename opt::value<
                 typename opt::find_option<
                     opt::buffer< opt::v::static_buffer< cds::any_type, 256 > >,
-                    CDS_OPTIONS
+                    Options...
                 >::type
             >::buffer    initial_buffer_type;
             typedef typename initial_buffer_type::template rebind< typename container_type::bucket_type >::other    buffer_type;
index 9a580f040ef40e795e45c940c45b66703d17d87f..35c8a9bcc521737f296429bef946b4c45df7d624 100644 (file)
@@ -431,7 +431,7 @@ namespace cds { namespace intrusive {
         > stack_t;
         \endcode
     */
-    template <typename GC, typename T, CDS_DECL_OPTIONS13>
+    template <typename GC, typename T, typename... Options>
     class TreiberStack
     {
         //@cond
@@ -457,16 +457,16 @@ namespace cds { namespace intrusive {
     public:
         //@cond
         typedef typename opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS13 >::type
-            ,CDS_OPTIONS13
+            typename cds::opt::find_type_traits< default_options, Options... >::type
+            ,Options...
         >::type   options;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS13>
+        template <typename GC2, typename T2, typename... Options2>
         struct rebind {
-            typedef TreiberStack< GC2, T2, CDS_OTHER_OPTIONS13> other   ;   ///< Rebinding result
+            typedef TreiberStack< GC2, T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index b734d7f60e63431231f73fa9fbb908dc61a70113..aeb22f56adb90151a1111bf80338f60a82d31ecc 100644 (file)
@@ -60,7 +60,7 @@ namespace cds { namespace intrusive {
         dynamic_queue    dynQueue( 1024 );
         \endcode
     */
-    template <typename T, CDS_DECL_OPTIONS7>
+    template <typename T, typename... Options>
     class TsigasCycleQueue: public cds::bounded_container
     {
         //@cond
@@ -77,16 +77,16 @@ namespace cds { namespace intrusive {
     public:
         //@cond
         typedef typename opt::make_options<
-            typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7>::type
-            ,CDS_OPTIONS7
+            typename cds::opt::find_type_traits< default_options, Options...>::type
+            ,Options...
         >::type   options;
         //@endcond
 
     public:
         /// Rebind template arguments
-        template <typename T2, CDS_DECL_OTHER_OPTIONS7>
+        template <typename T2, typename... Options2>
         struct rebind {
-            typedef TsigasCycleQueue< T2, CDS_OTHER_OPTIONS7> other   ;   ///< Rebinding result
+            typedef TsigasCycleQueue< T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index 6dcd502911ff12a15ab5ae2b585ed65a849197ae..9355e0e04f09f13a26d63aab6fcc37386b9b682b 100644 (file)
@@ -54,12 +54,12 @@ namespace cds { namespace intrusive {
 
         \endcode
     */
-    template <typename T, CDS_DECL_OPTIONS6>
+    template <typename T, typename... Options>
     class VyukovMPMCCycleQueue
-        : private container::VyukovMPMCCycleQueue< T *, CDS_OPTIONS6 >
+        : private container::VyukovMPMCCycleQueue< T *, Options... >
     {
         //@cond
-        typedef container::VyukovMPMCCycleQueue< T *, CDS_OPTIONS6 > base_class;
+        typedef container::VyukovMPMCCycleQueue< T *, Options... > base_class;
         //@endcond
     public:
         typedef T value_type    ;   ///< type of data stored in the queue
@@ -73,9 +73,9 @@ namespace cds { namespace intrusive {
 
     public:
         /// Rebind template arguments
-        template <typename T2, CDS_DECL_OTHER_OPTIONS6>
+        template <typename T2, typename... Options2>
         struct rebind {
-            typedef VyukovMPMCCycleQueue< T2, CDS_OTHER_OPTIONS6> other   ;   ///< Rebinding result
+            typedef VyukovMPMCCycleQueue< T2, Options2...> other   ;   ///< Rebinding result
         };
 
     public:
index 250e371e457d2a190d14fdd74e645fbba11afd59..4eccf9c578761f1fbe2a82380d4c1918f51861b9 100644 (file)
@@ -68,11 +68,11 @@ namespace cds { namespace memory {
         pool_allocator().deallocate( p , 1 );
         \endcode
     */
-    template <typename T, CDS_DECL_OPTIONS6>
+    template <typename T, typename... Options>
     class vyukov_queue_pool
     {
     public:
-        typedef cds::intrusive::VyukovMPMCCycleQueue< T, CDS_OPTIONS6 > queue_type  ;   ///< Queue type
+        typedef cds::intrusive::VyukovMPMCCycleQueue< T, Options... > queue_type  ;   ///< Queue type
 
     protected:
         //@cond
@@ -80,7 +80,7 @@ namespace cds { namespace memory {
         {
             typedef CDS_DEFAULT_ALLOCATOR   allocator;
         };
-        typedef typename opt::make_options< default_options, CDS_OPTIONS6 >::type   options;
+        typedef typename opt::make_options< default_options, Options... >::type   options;
         //@endcond
 
     public:
@@ -233,11 +233,11 @@ namespace cds { namespace memory {
         \endcode
 
     */
-    template <typename T, CDS_DECL_OPTIONS6>
+    template <typename T, typename... Options>
     class lazy_vyukov_queue_pool
     {
     public:
-        typedef cds::intrusive::VyukovMPMCCycleQueue< T, CDS_OPTIONS6 > queue_type  ;   ///< Queue type
+        typedef cds::intrusive::VyukovMPMCCycleQueue< T, Options... > queue_type  ;   ///< Queue type
 
     protected:
         //@cond
@@ -245,7 +245,7 @@ namespace cds { namespace memory {
         {
             typedef CDS_DEFAULT_ALLOCATOR   allocator;
         };
-        typedef typename opt::make_options< default_options, CDS_OPTIONS6 >::type   options;
+        typedef typename opt::make_options< default_options, Options... >::type   options;
         //@endcond
 
     public:
@@ -372,11 +372,11 @@ namespace cds { namespace memory {
         pool_allocator().deallocate( p , 1 );
         \endcode
     */
-    template <typename T, CDS_DECL_OPTIONS6>
+    template <typename T, typename... Options>
     class bounded_vyukov_queue_pool
     {
     public:
-        typedef cds::intrusive::VyukovMPMCCycleQueue< T, CDS_OPTIONS6 > queue_type  ;   ///< Queue type
+        typedef cds::intrusive::VyukovMPMCCycleQueue< T, Options... > queue_type  ;   ///< Queue type
 
     protected:
         //@cond
@@ -384,7 +384,7 @@ namespace cds { namespace memory {
         {
             typedef CDS_DEFAULT_ALLOCATOR   allocator;
         };
-        typedef typename opt::make_options< default_options, CDS_OPTIONS6 >::type   options;
+        typedef typename opt::make_options< default_options, Options... >::type   options;
         //@endcond
 
     public:
index 6373a7ec109ec6449cfb4826d763b07944142f64..592ef087f1791a6a763b37569e961ee6a8364686 100644 (file)
@@ -193,8 +193,8 @@ namespace cds { namespace opt {
 
             typedef typename make_comparator< T,
                 typename opt::make_options<
-                    typename opt::find_type_traits< default_traits, CDS_OPTIONS >::type
-                    ,CDS_OPTIONS
+                    typename opt::find_type_traits< default_traits, Options... >::type
+                    ,Options...
                 >::type
             >::type type;
         };
index 8669e83bf8c834979c96a94a4a78b7ac59125ca3..935a025f97d8fc2f2ad8970633235d3b71f8dfdb 100644 (file)
@@ -7,103 +7,6 @@
 #   error <cds/opt/options.h> must be included instead of <cds/opt/make_options_var.h>
 #endif
 
-#define CDS_DECL_OPTIONS1   typename... Options
-#define CDS_DECL_OPTIONS2   typename... Options
-#define CDS_DECL_OPTIONS3   typename... Options
-#define CDS_DECL_OPTIONS4   typename... Options
-#define CDS_DECL_OPTIONS5   typename... Options
-#define CDS_DECL_OPTIONS6   typename... Options
-#define CDS_DECL_OPTIONS7   typename... Options
-#define CDS_DECL_OPTIONS8   typename... Options
-#define CDS_DECL_OPTIONS9   typename... Options
-#define CDS_DECL_OPTIONS10  typename... Options
-#define CDS_DECL_OPTIONS11  typename... Options
-#define CDS_DECL_OPTIONS12  typename... Options
-#define CDS_DECL_OPTIONS13  typename... Options
-#define CDS_DECL_OPTIONS14  typename... Options
-#define CDS_DECL_OPTIONS15  typename... Options
-#define CDS_DECL_OPTIONS16  typename... Options
-
-#define CDS_DECL_OPTIONS    typename... Options
-
-
-#define CDS_DECL_OTHER_OPTIONS1   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS2   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS3   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS4   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS5   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS6   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS7   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS8   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS9   typename... Options2
-#define CDS_DECL_OTHER_OPTIONS10  typename... Options2
-#define CDS_DECL_OTHER_OPTIONS11  typename... Options2
-#define CDS_DECL_OTHER_OPTIONS12  typename... Options2
-#define CDS_DECL_OTHER_OPTIONS13  typename... Options2
-#define CDS_DECL_OTHER_OPTIONS14  typename... Options2
-#define CDS_DECL_OTHER_OPTIONS15  typename... Options2
-#define CDS_DECL_OTHER_OPTIONS16  typename... Options2
-
-// for template specializations
-#define CDS_SPEC_OPTIONS1   typename... Options
-#define CDS_SPEC_OPTIONS2   typename... Options
-#define CDS_SPEC_OPTIONS3   typename... Options
-#define CDS_SPEC_OPTIONS4   typename... Options
-#define CDS_SPEC_OPTIONS5   typename... Options
-#define CDS_SPEC_OPTIONS6   typename... Options
-#define CDS_SPEC_OPTIONS7   typename... Options
-#define CDS_SPEC_OPTIONS8   typename... Options
-#define CDS_SPEC_OPTIONS9   typename... Options
-#define CDS_SPEC_OPTIONS10  typename... Options
-#define CDS_SPEC_OPTIONS11  typename... Options
-#define CDS_SPEC_OPTIONS12  typename... Options
-#define CDS_SPEC_OPTIONS13  typename... Options
-#define CDS_SPEC_OPTIONS14  typename... Options
-#define CDS_SPEC_OPTIONS15  typename... Options
-#define CDS_SPEC_OPTIONS16  typename... Options
-
-#define CDS_SPEC_OPTIONS    typename... Options
-
-#define CDS_OPTIONS1    Options...
-#define CDS_OPTIONS2    Options...
-#define CDS_OPTIONS3    Options...
-#define CDS_OPTIONS4    Options...
-#define CDS_OPTIONS5    Options...
-#define CDS_OPTIONS6    Options...
-#define CDS_OPTIONS7    Options...
-#define CDS_OPTIONS8    Options...
-#define CDS_OPTIONS9    Options...
-#define CDS_OPTIONS10   Options...
-#define CDS_OPTIONS11   Options...
-#define CDS_OPTIONS12   Options...
-#define CDS_OPTIONS13   Options...
-#define CDS_OPTIONS14   Options...
-#define CDS_OPTIONS15   Options...
-#define CDS_OPTIONS16   Options...
-//#define CDS_OPTIONS17   Options...
-//#define CDS_OPTIONS18   Options...
-//#define CDS_OPTIONS19   Options...
-//#define CDS_OPTIONS20   Options...
-
-#define CDS_OPTIONS     Options...
-
-#define CDS_OTHER_OPTIONS1    Options2...
-#define CDS_OTHER_OPTIONS2    Options2...
-#define CDS_OTHER_OPTIONS3    Options2...
-#define CDS_OTHER_OPTIONS4    Options2...
-#define CDS_OTHER_OPTIONS5    Options2...
-#define CDS_OTHER_OPTIONS6    Options2...
-#define CDS_OTHER_OPTIONS7    Options2...
-#define CDS_OTHER_OPTIONS8    Options2...
-#define CDS_OTHER_OPTIONS9    Options2...
-#define CDS_OTHER_OPTIONS10   Options2...
-#define CDS_OTHER_OPTIONS11   Options2...
-#define CDS_OTHER_OPTIONS12   Options2...
-#define CDS_OTHER_OPTIONS13   Options2...
-#define CDS_OTHER_OPTIONS14   Options2...
-#define CDS_OTHER_OPTIONS15   Options2...
-#define CDS_OTHER_OPTIONS16   Options2...
-
 namespace cds { namespace opt {
 
     //@cond
index 9efb5c8d7ee2632bf780c3cbd717278506a280ed..838707cc764b34512deb5e5838225f460b59f481 100644 (file)
@@ -1403,90 +1403,7 @@ PREDEFINED             = CDS_BUILD_BITS=32 \
                          CDS_CONSTEXPR=constexpr \
                          CDS_ATOMIC=std \
                          CDS_DELETE_SPECIFIER="=delete"\
-                         CDS_DEFAULT_SPECIFIER="=default"  \
-                         CDS_DECL_OPTIONS="typename... Options" \
-                         CDS_DECL_OPTIONS1="typename... Options" \
-                         CDS_DECL_OPTIONS2="typename... Options" \
-                         CDS_DECL_OPTIONS3="typename... Options" \
-                         CDS_DECL_OPTIONS4="typename... Options" \
-                         CDS_DECL_OPTIONS5="typename... Options" \
-                         CDS_DECL_OPTIONS6="typename... Options" \
-                         CDS_DECL_OPTIONS7="typename... Options" \
-                         CDS_DECL_OPTIONS8="typename... Options" \
-                         CDS_DECL_OPTIONS9="typename... Options" \
-                         CDS_DECL_OPTIONS10="typename... Options" \
-                         CDS_DECL_OPTIONS11="typename... Options" \
-                         CDS_DECL_OPTIONS12="typename... Options" \
-                         CDS_DECL_OPTIONS13="typename... Options" \
-                         CDS_DECL_OPTIONS14="typename... Options" \
-                         CDS_DECL_OPTIONS15="typename... Options" \
-                         CDS_DECL_OPTIONS16="typename... Options" \
-                         CDS_SPEC_OPTIONS="typename... Options" \
-                         CDS_SPEC_OPTIONS1="typename... Options" \
-                         CDS_SPEC_OPTIONS2="typename... Options" \
-                         CDS_SPEC_OPTIONS3="typename... Options" \
-                         CDS_SPEC_OPTIONS4="typename... Options" \
-                         CDS_SPEC_OPTIONS5="typename... Options" \
-                         CDS_SPEC_OPTIONS6="typename... Options" \
-                         CDS_SPEC_OPTIONS7="typename... Options" \
-                         CDS_SPEC_OPTIONS8="typename... Options" \
-                         CDS_SPEC_OPTIONS9="typename... Options" \
-                         CDS_SPEC_OPTIONS10="typename... Options" \
-                         CDS_SPEC_OPTIONS11="typename... Options" \
-                         CDS_SPEC_OPTIONS12="typename... Options" \
-                         CDS_SPEC_OPTIONS13="typename... Options" \
-                         CDS_SPEC_OPTIONS14="typename... Options" \
-                         CDS_SPEC_OPTIONS15="typename... Options" \
-                         CDS_SPEC_OPTIONS16="typename... Options" \
-                                                CDS_OPTIONS="Options..." \
-                         CDS_OPTIONS1="Options..." \
-                         CDS_OPTIONS2="Options..." \
-                         CDS_OPTIONS3="Options..." \
-                         CDS_OPTIONS4="Options..." \
-                         CDS_OPTIONS5="Options..." \
-                         CDS_OPTIONS6="Options..." \
-                         CDS_OPTIONS7="Options..." \
-                         CDS_OPTIONS8="Options..." \
-                         CDS_OPTIONS9="Options..." \
-                         CDS_OPTIONS10="Options..." \
-                         CDS_OPTIONS11="Options..." \
-                         CDS_OPTIONS12="Options..." \
-                         CDS_OPTIONS13="Options..." \
-                         CDS_OPTIONS14="Options..." \
-                         CDS_OPTIONS15="Options..." \
-                         CDS_OPTIONS16="Options..." \
-                         CDS_DECL_OTHER_OPTIONS1="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS2="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS3="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS4="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS5="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS6="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS7="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS8="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS9="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS10="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS11="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS12="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS13="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS14="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS15="typename... Options2" \
-                         CDS_DECL_OTHER_OPTIONS16="typename... Options2" \
-                         CDS_OTHER_OPTIONS1="Options2..." \
-                         CDS_OTHER_OPTIONS2="Options2..." \
-                         CDS_OTHER_OPTIONS3="Options2..." \
-                         CDS_OTHER_OPTIONS4="Options2..." \
-                         CDS_OTHER_OPTIONS5="Options2..." \
-                         CDS_OTHER_OPTIONS6="Options2..." \
-                         CDS_OTHER_OPTIONS7="Options2..." \
-                         CDS_OTHER_OPTIONS8="Options2..." \
-                         CDS_OTHER_OPTIONS9="Options2..." \
-                         CDS_OTHER_OPTIONS10="Options2..." \
-                         CDS_OTHER_OPTIONS11="Options2..." \
-                         CDS_OTHER_OPTIONS12="Options2..." \
-                         CDS_OTHER_OPTIONS13="Options2..." \
-                         CDS_OTHER_OPTIONS14="Options2..." \
-                         CDS_OTHER_OPTIONS15="Options2..." \
-                         CDS_OTHER_OPTIONS16="Options2..."
+                         CDS_DEFAULT_SPECIFIER="=default"
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 # this tag can be used to specify a list of macro names that should be expanded.
index bf537fe481adfbe995816061c6ee9c0a394d5c7d..761a7233a20b15506cc795a098615bfa65087c8c 100644 (file)
@@ -116,19 +116,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 +145,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;
@@ -3773,18 +3773,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 +3796,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;
 
@@ -3877,18 +3877,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 +3900,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;
 
@@ -5180,17 +5180,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) );
     }
 
index 8f0d8af7c61cd38d1fe72f518a9e5572af8aea3a..a88b8604661392d79ad127a44013ad55e364bc7f 100644 (file)
@@ -80,19 +80,19 @@ namespace set2 {
     typedef cds::urcu::gc< cds::urcu::signal_threaded<> >  rcu_sht;
 #endif
 
-    template <typename V, CDS_DECL_OPTIONS10>
+    template <typename V, typename... Options>
     class CuckooStripedSet:
         public cc::CuckooSet< 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::CuckooSet< V, cuckoo_traits > cuckoo_base_class;
@@ -109,19 +109,19 @@ namespace set2 {
         }
     };
 
-    template <typename V, CDS_DECL_OPTIONS10>
+    template <typename V, typename... Options>
     class CuckooRefinableSet:
         public cc::CuckooSet< 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::CuckooSet< V, cuckoo_traits > cuckoo_base_class;
@@ -3374,18 +3374,18 @@ namespace set2 {
         // StripedSet
 
         // for sequential containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class StripedHashSet_seq:
             public cc::StripedSet< BucketEntry,
                 co::mutex_policy< cc::striped_set::striping<> >
                 ,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
-                , CDS_OPTIONS7
+                , Options...
             >
         {
             typedef cc::StripedSet< 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;
 
@@ -3403,18 +3403,18 @@ namespace set2 {
         };
 
         // for non-sequential ordered containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class StripedHashSet_ord:
             public cc::StripedSet< BucketEntry,
                 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::striping<> >
-                , CDS_OPTIONS7
+                , Options...
             >
         {
             typedef cc::StripedSet< 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;
 
@@ -3509,18 +3509,18 @@ namespace set2 {
         // RefinableSet
 
         // for sequential containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class RefinableHashSet_seq:
             public cc::StripedSet< BucketEntry,
             co::mutex_policy< cc::striped_set::refinable<> >
             ,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
-            , CDS_OPTIONS7
+            , Options...
             >
         {
             typedef cc::StripedSet< BucketEntry,
                 co::mutex_policy< cc::striped_set::refinable<> >
                 ,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
-                , CDS_OPTIONS7
+                , Options...
             > base_class;
             typedef typename base_class::resizing_policy resizing_policy_t;
 
@@ -3538,18 +3538,18 @@ namespace set2 {
         };
 
         // for non-sequential ordered containers
-        template <class BucketEntry, CDS_DECL_OPTIONS7>
+        template <class BucketEntry, typename... Options>
         class RefinableHashSet_ord:
             public cc::StripedSet< BucketEntry,
                 co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
                 ,co::mutex_policy< cc::striped_set::refinable<> >
-                , CDS_OPTIONS7
+                , Options...
             >
         {
             typedef cc::StripedSet< 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;
 
@@ -4731,17 +4731,17 @@ namespace set2 {
         CPPUNIT_MSG( s.statistics() << s.mutex_policy_statistics() );
     }
 
-    template <typename V, CDS_SPEC_OPTIONS10>
-    static inline void print_stat( CuckooStripedSet< V, CDS_OPTIONS10 > const& s )
+    template <typename V, typename... Options>
+    static inline void print_stat( CuckooStripedSet< V, Options... > const& s )
     {
-        typedef CuckooStripedSet< V, CDS_OPTIONS10 > set_type;
+        typedef CuckooStripedSet< V, Options... > set_type;
         print_stat( static_cast<typename set_type::cuckoo_base_class const&>(s) );
     }
 
-    template <typename V, CDS_SPEC_OPTIONS10>
-    static inline void print_stat( CuckooRefinableSet< V, CDS_OPTIONS10 > const& s )
+    template <typename V, typename... Options>
+    static inline void print_stat( CuckooRefinableSet< V, Options... > const& s )
     {
-        typedef CuckooRefinableSet< V, CDS_OPTIONS10 > set_type;
+        typedef CuckooRefinableSet< V, Options... > set_type;
         print_stat( static_cast<typename set_type::cuckoo_base_class const&>(s) );
     }