Add some magic to satisfy Intel C++ compiler on boost::intrusive adapters
[libcds.git] / cds / intrusive / striped_set / boost_sg_set.h
1 //$$CDS-header$$
2
3 #ifndef __CDS_INTRUSIVE_STRIPED_SET_BOOST_SG_SET_ADAPTER_H
4 #define __CDS_INTRUSIVE_STRIPED_SET_BOOST_SG_SET_ADAPTER_H
5
6 #include <boost/intrusive/sg_set.hpp>
7 #include <cds/intrusive/striped_set/adapter.h>
8
9 //@cond
10 namespace cds { namespace intrusive { namespace striped_set {
11
12 #if CDS_COMPILER == CDS_COMPILER_INTEL && CDS_COMPILER_VERSION <= 1500
13     template <typename T, typename O1, typename O2, typename O3, typename O4, typename... Options>
14     class adapt< boost::intrusive::sg_set< T, O1, O2, O3, O4 >, Options... >
15     {
16     public:
17         typedef boost::intrusive::sg_set< T, O1, O2, O3, O4 >  container_type;   ///< underlying intrusive container type
18
19     public:
20         typedef details::boost_intrusive_set_adapter<container_type>   type;  ///< Result of the metafunction
21     };
22 #else
23     template <typename T, typename... BIOptons, typename... Options>
24     class adapt< boost::intrusive::sg_set< T, BIOptons... >, Options... >
25     {
26     public:
27         typedef boost::intrusive::sg_set< T, BIOptons... >  container_type  ;   ///< underlying intrusive container type
28
29     public:
30         typedef details::boost_intrusive_set_adapter<container_type>   type ;  ///< Result of the metafunction
31     };
32 #endif
33 }}} // namespace cds::intrusive::striped_set
34 //@endcond
35
36 #endif // #ifndef __CDS_INTRUSIVE_STRIPED_SET_BOOST_SG_SET_ADAPTER_H