Add some magic to satisfy Intel C++ compiler on boost::intrusive adapters
[libcds.git] / cds / intrusive / striped_set / boost_treap_set.h
index 9df0f682d86955035ccc16a88ce47a73329135a5..fff8ffc8a90716d599403de40d98a60da0be45ac 100644 (file)
@@ -9,16 +9,27 @@
 //@cond
 namespace cds { namespace intrusive { namespace striped_set {
 
-    template <typename T, typename... BIOptons, typename... Options>
-    class adapt< boost::intrusive::treap_set< T, BIOptons... >, Options... >
+#if CDS_COMPILER == CDS_COMPILER_INTEL && CDS_COMPILER_VERSION <= 1500
+    template <typename T, typename O1, typename O2, typename O3, typename O4, typename... Options>
+    class adapt< boost::intrusive::treap_set< T, O1, O2, O3, O4 >, Options... >
     {
     public:
-        typedef boost::intrusive::treap_set< T, BIOptons... >  container_type  ;   ///< underlying intrusive container type
+        typedef boost::intrusive::treap_set< T, O1, O2, O3, O4 >  container_type  ;   ///< underlying intrusive container type
 
     public:
         typedef details::boost_intrusive_set_adapter<container_type>   type ;  ///< Result of the metafunction
+    };
+#else
+    template <typename T, typename... BIOptons, typename... Options>
+    class adapt< boost::intrusive::treap_set< T, BIOptons... >, Options... >
+    {
+    public:
+        typedef boost::intrusive::treap_set< T, BIOptons... >  container_type;   ///< underlying intrusive container type
 
+    public:
+        typedef details::boost_intrusive_set_adapter<container_type>   type;  ///< Result of the metafunction
     };
+#endif
 }}} // namespace cds::intrusive::striped_set
 //@endcond