3 #ifndef __CDS_DETAILS_HASH_FUNCTOR_SELECTOR_H
4 #define __CDS_DETAILS_HASH_FUNCTOR_SELECTOR_H
8 #if CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL
10 #elif CDS_COMPILER == CDS_COMPILER_GCC || CDS_COMPILER == CDS_COMPILER_CLANG
12 # include <functional>
14 // Default, use boost implementation
15 # include <boost/tr1/functional.hpp>
18 namespace cds { namespace details {
20 #if CDS_COMPILER == CDS_COMPILER_MSVC || CDS_COMPILER == CDS_COMPILER_INTEL
22 // MSVC 2010 and above
24 # define CDS_BEGIN_STD_HASH_NAMESPACE namespace std {
25 # define CDS_END_STD_HASH_NAMESPACE }
26 # define CDS_STD_HASH_NAMESPACE std
30 # define CDS_BEGIN_STD_HASH_NAMESPACE namespace std { namespace tr1 {
31 # define CDS_END_STD_HASH_NAMESPACE }}
32 # define CDS_STD_HASH_NAMESPACE std::tr1
34 #elif CDS_COMPILER == CDS_COMPILER_GCC || CDS_COMPILER == CDS_COMPILER_CLANG
37 # define CDS_BEGIN_STD_HASH_NAMESPACE namespace std {
38 # define CDS_END_STD_HASH_NAMESPACE }
39 # define CDS_STD_HASH_NAMESPACE std
41 // Default, use boost implementation
43 # define CDS_BEGIN_STD_HASH_NAMESPACE namespace std { namespace tr1 {
44 # define CDS_END_STD_HASH_NAMESPACE }}
45 # define CDS_STD_HASH_NAMESPACE std::tr1
48 }} // namespace cds::details
51 #endif // __CDS_DETAILS_HASH_FUNCTOR_SELECTOR_H