cds::gc::HRC has been removed
[libcds.git] / cds / container / optimistic_queue.h
index 800e654cf7333c15f013439f57befe2352807f09..bd304a341bf7e081fe18b5e0d40a302c340d0ecd 100644 (file)
@@ -58,7 +58,7 @@ namespace cds { namespace container {
             - opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter (item counting disabled)
                 To enable item counting use \p cds::atomicity::item_counter
             - opt::stat - the type to gather internal statistics.
-                Possible statistics types are: \p optimistic_queue::stat, \p optimistic_queue::empty_stat, 
+                Possible statistics types are: \p optimistic_queue::stat, \p optimistic_queue::empty_stat,
                 user-provided class that supports \p %optimistic_queue::stat interface.
                 Default is \p %optimistic_queue::empty_stat.
             - opt::alignment - the alignment for internal queue data. Default is \p opt::cache_line_alignment
@@ -97,17 +97,6 @@ namespace cds { namespace container {
             typedef T value_type;
             typedef Traits traits;
 
-            /*
-            struct default_options {
-                typedef cds::backoff::empty     back_off;
-                typedef CDS_DEFAULT_ALLOCATOR   allocator;
-                typedef atomicity::empty_item_counter item_counter;
-                typedef intrusive::optimistic_queue::dummy_stat stat;
-                typedef opt::v::relaxed_ordering    memory_model;
-                enum { alignment = opt::cache_line_alignment };
-            };
-            */
-
             struct node_type: public cds::intrusive::optimistic_queue::node< gc >
             {
                 value_type  m_value;
@@ -151,7 +140,7 @@ namespace cds { namespace container {
             - [2008] Edya Ladan-Mozes, Nir Shavit "An Optimistic Approach to Lock-Free FIFO Queues"
 
         Template arguments:
-        - \p GC - garbage collector type: gc::HP, gc::PTB. Note that gc::HRC is <b>not</b> supported
+        - \p GC - garbage collector type: \p gc::HP, \p gc::DHP.
         - \p T - type of values to be stored in the queue
         - \p Traits - queue traits, default is \p optimistic_queue::traits. You can use \p optimistic_queue::make_traits
             metafunction to make your traits or just derive your traits from \p %optimistic_queue::traits:
@@ -163,15 +152,15 @@ namespace cds { namespace container {
             typedef cds::container::OptimisticQueue< cds::gc::HP, Foo, myTraits > myQueue;
 
             // Equivalent make_traits example:
-            typedef cds::container::OptimisticQueue< cds::gc::HP, Foo, 
-                typename cds::container::optimistic_queue::make_traits< 
+            typedef cds::container::OptimisticQueue< cds::gc::HP, Foo,
+                typename cds::container::optimistic_queue::make_traits<
                     cds::opt::stat< cds::container::optimistic_queue::stat<> >,
                     cds::opt::item_counter< cds::atomicity::item_counter >
                 >::type
             > myQueue;
             \endcode
     */
-    template <typename GC, typename T, typename Traits>
+    template <typename GC, typename T, typename Traits = optimistic_queue::traits >
     class OptimisticQueue:
 #ifdef CDS_DOXYGEN_INVOKED
         private intrusive::OptimisticQueue< GC, cds::intrusive::optimistic_queue::node< T >, Traits >
@@ -202,7 +191,7 @@ namespace cds { namespace container {
         typedef typename base_class::stat               stat;           ///< Internal statistics policy used
         typedef typename base_class::memory_model       memory_model;   ///< Memory ordering. See \p cds::opt::memory_model option
 
-        static CDS_CONSTEXPR_CONST size_t c_nHazardPtrCount = base_class::c_nHazardPtrCount; ///< Count of hazard pointer required for the algorithm
+        static CDS_CONSTEXPR const size_t c_nHazardPtrCount = base_class::c_nHazardPtrCount; ///< Count of hazard pointer required for the algorithm
 
     protected:
         //@cond
@@ -322,7 +311,6 @@ namespace cds { namespace container {
         */
         bool dequeue( value_type& dest )
         {
-            typedef cds::details::trivial_assign<value_type, value_type> functor;
             return dequeue_with( [&dest]( value_type& src ) { dest = src; } );
         }