TreiberStack bugfix
[libcds.git] / cds / intrusive / tsigas_cycle_queue.h
index b734d7f60e63431231f73fa9fbb908dc61a70113..f9bbb360a74ee097be6f59b30ca2486168d49779 100644 (file)
@@ -3,11 +3,11 @@
 #ifndef __CDS_INTRUSIVE_TSIGAS_CYCLE_QUEUE_H
 #define __CDS_INTRUSIVE_TSIGAS_CYCLE_QUEUE_H
 
-#include <cds/intrusive/base.h>
+#include <functional>   // ref
+#include <cds/intrusive/details/base.h>
 #include <cds/cxx11_atomic.h>
 #include <cds/details/bounded_container.h>
 #include <cds/opt/buffer.h>
-#include <cds/ref.h>
 
 namespace cds { namespace intrusive {
 
@@ -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:
@@ -343,7 +343,7 @@ namespace cds { namespace intrusive {
                 void operator ()( T * val );
             };
             \endcode
-            You can pass \p disposer by reference using \p boost::ref.
+            You can pass \p disposer by reference using \p std::ref.
             The disposer will be called immediately for each item.
         */
         template <typename Disposer>
@@ -351,7 +351,7 @@ namespace cds { namespace intrusive {
         {
             value_type * pv;
             while ( (pv = pop()) != nullptr ) {
-                unref(f)( pv );
+                f( pv );
             }
         }