Fix clang 3.4-3.5 64bit build (boost.atomic problem, see https://svn.boost.org/trac...
[libcds.git] / cds / container / tsigas_cycle_queue.h
index 0e90505034563c10833cf7392e4112647e944087..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:
@@ -141,13 +141,11 @@ namespace cds { namespace container {
         {
             return cxx_allocator().New( val );
         }
-#   ifdef CDS_EMPLACE_SUPPORT
         template <typename... Args>
         static value_type * alloc_node_move( Args&&... args )
         {
             return cxx_allocator().MoveNew( std::forward<Args>( args )... );
         }
-#   endif
         static void free_node( value_type * p )
         {
             node_deallocator()( p );
@@ -234,12 +232,7 @@ namespace cds { namespace container {
             return false;
         }
 
-#   ifdef CDS_EMPLACE_SUPPORT
         /// Enqueues data of type \ref value_type constructed with <tt>std::forward<Args>(args)...</tt>
-        /**
-            This function is available only for compiler that supports
-            variadic template and move semantics
-        */
         template <typename... Args>
         bool emplace( Args&&... args )
         {
@@ -250,7 +243,6 @@ namespace cds { namespace container {
             }
             return false;
         }
-#   endif
 
         /// Dequeues a value using copy functor
         /**
@@ -328,7 +320,7 @@ namespace cds { namespace container {
 
         /// Clear the queue
         /**
-            The function repeatedly calls \ref dequeue until it returns NULL.
+            The function repeatedly calls \ref dequeue until it returns \p nullptr.
         */
         void clear()
         {