Add some magic to satisfy Intel C++ compiler on boost::intrusive adapters
[libcds.git] / cds / intrusive / striped_set / boost_splay_set.h
1 //$$CDS-header$$
2
3 #ifndef __CDS_INTRUSIVE_STRIPED_SET_BOOST_SPLAY_SET_ADAPTER_H
4 #define __CDS_INTRUSIVE_STRIPED_SET_BOOST_SPLAY_SET_ADAPTER_H
5
6 #include <boost/intrusive/splay_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::splay_set< T, O1, O2, O3, O4 >, Options... >
15     {
16     public:
17         typedef boost::intrusive::splay_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     };
23 #else
24     template <typename T, typename... BIOptons, typename... Options>
25     class adapt< boost::intrusive::splay_set< T, BIOptons... >, Options... >
26     {
27     public:
28         typedef boost::intrusive::splay_set< T, BIOptons... > container_type  ;   ///< underlying intrusive container type
29
30     public:
31         typedef details::boost_intrusive_set_adapter<container_type> type ;  ///< Result of the metafunction
32
33     };
34 #endif
35 }}} // namespace cds::intrusive::striped_set
36 //@endcond
37
38 #endif // #ifndef __CDS_INTRUSIVE_STRIPED_SET_BOOST_SPLAY_SET_ADAPTER_H