libcopp  1.1.0
functional.h
Go to the documentation of this file.
1 
14 #ifndef STD_FUNCTIONAL_H
15 #define STD_FUNCTIONAL_H
16 
17 #pragma once
18 
19 // ============================================================
20 // 公共包含部分
21 // 自动导入TR1库
22 // ============================================================
23 
35 #include <cstdlib>
36 
37 // VC9.0 SP1以上分支判断
38 #if defined(_MSC_VER) && ((_MSC_VER == 1500 && defined(_HAS_TR1)) || _MSC_VER > 1500)
39 // 采用VC std::tr1库
40 #include <functional>
41 #elif defined(__clang__) && __clang_major__ >= 3 && (__cplusplus >= 201103L || !defined(_LIBCPP_HAS_NO_VARIADICS))
42 // 采用Clang c++11库
43 #include <functional>
44 #elif defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4)
45 // 采用GCC c++11库
46 #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
47 #include <functional>
48 #else
49 #include <tr1/functional>
50 namespace std {
51  using tr1::cref;
52  using tr1::hash;
53  using tr1::ref;
54  using tr1::reference_wrapper;
55  using tr1::result_of;
56  using tr1::swap;
57 
58  using tr1::bad_function_call;
59  using tr1::bind;
60  using tr1::function;
61  using tr1::is_bind_expression;
62  using tr1::is_placeholder;
63  using tr1::mem_fn;
64  using tr1::swap;
65 
66  namespace placeholders {
67  using namespace tr1::placeholders;
68  }
69 } // namespace std
70 #endif
71 #else
72 // 采用boost tr1库
73 #include <boost/tr1/functional>
74 namespace std {
75  using tr1::cref;
76  using tr1::hash;
77  using tr1::ref;
78  using tr1::reference_wrapper;
79  using tr1::result_of;
80  using tr1::swap;
81 
82  using tr1::bad_function_call;
83  using tr1::bind;
84  using tr1::function;
85  using tr1::is_bind_expression;
86  using tr1::is_placeholder;
87  using tr1::mem_fn;
88  using tr1::swap;
89 
90  namespace placeholders {
91  using namespace tr1::placeholders;
92  }
93 } // namespace std
94 #endif
95 
96 
97 #endif
STL namespace.