GCC-4.8 workaround for passing parameter pack to a lambda
[libcds.git] / cds / intrusive / michael_set_nogc.h
index 9c9ae882e6ed5ca2551117a33a95629b38a74b9f..d2cc7fa2202f1d443e42b7448dbc6c18d41a8019 100644 (file)
@@ -1,7 +1,7 @@
 //$$CDS-header$$
 
-#ifndef __CDS_INTRUSIVE_MICHAEL_SET_NOGC_H
-#define __CDS_INTRUSIVE_MICHAEL_SET_NOGC_H
+#ifndef CDSLIB_INTRUSIVE_MICHAEL_SET_NOGC_H
+#define CDSLIB_INTRUSIVE_MICHAEL_SET_NOGC_H
 
 #include <cds/intrusive/details/michael_set_base.h>
 #include <cds/gc/nogc.h>
@@ -145,7 +145,7 @@ namespace cds { namespace intrusive {
             static_assert( std::is_same<gc, typename bucket_type::gc>::value, "GC and OrderedList::gc must be the same");
 
             // atomicity::empty_item_counter is not allowed as a item counter
-            static_assert( !std::is_same<item_counter, atomicity::empty_item_counter>::value, 
+            static_assert( !std::is_same<item_counter, atomicity::empty_item_counter>::value,
                            "atomicity::empty_item_counter is not allowed as a item counter");
 
             m_Buckets = bucket_table_allocator().NewArray( bucket_count() );
@@ -264,6 +264,13 @@ namespace cds { namespace intrusive {
         {
             return bucket( key ).find( key, f );
         }
+        //@cond
+        template <typename Q, typename Func>
+        bool find( Q const& key, Func f )
+        {
+            return bucket( key ).find( key, f );
+        }
+        //@endcond
 
         /// Finds the key \p key using \p pred predicate for searching
         /**
@@ -277,6 +284,13 @@ namespace cds { namespace intrusive {
         {
             return bucket( key ).find_with( key, pred, f );
         }
+        //@cond
+        template <typename Q, typename Less, typename Func>
+        bool find_with( Q const& key, Less pred, Func f )
+        {
+            return bucket( key ).find_with( key, pred, f );
+        }
+        //@endcond
 
         /// Clears the set (non-atomic)
         /**
@@ -327,5 +341,5 @@ namespace cds { namespace intrusive {
 
 }} // namespace cds::intrusive
 
-#endif // #ifndef __CDS_INTRUSIVE_MICHAEL_SET_NOGC_H
+#endif // #ifndef CDSLIB_INTRUSIVE_MICHAEL_SET_NOGC_H