indirect_traits.hpp
Go to the documentation of this file.
1 // Copyright David Abrahams 2002.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef INDIRECT_TRAITS_DWA2002131_HPP
6 # define INDIRECT_TRAITS_DWA2002131_HPP
18 
20 
21 # include <boost/mpl/eval_if.hpp>
22 # include <boost/mpl/if.hpp>
23 # include <boost/mpl/bool.hpp>
24 # include <boost/mpl/and.hpp>
25 # include <boost/mpl/not.hpp>
27 
28 
29 namespace boost { namespace detail {
30 
31 namespace indirect_traits {
32 
33 template <class T>
35 {
36 };
37 
38 template <class T>
40 {
41 };
42 
43 # if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
44 template<class T>
45 struct is_reference_to_const<T const volatile&> : mpl::true_
46 {
47 };
48 # endif
49 
50 template <class T>
52 {
53 };
54 
55 template <class T>
57 {
58 };
59 
60 template <class T>
62 {
63 };
64 
65 // There's no such thing as a pointer-to-cv-function, so we don't need
66 // specializations for those
67 template <class T>
69 {
70 };
71 
72 template <class T>
74 {
75 };
76 
77 template <class T>
80 {
81 };
82 
83 
84 template <class T>
87 {
89 };
90 
91 template <class T>
93  : mpl::and_<
94  is_reference<T>
95  , is_pointer_to_function<
96  typename remove_cv<
97  typename remove_reference<T>::type
98  >::type
99  >
100  >
101 {
102  // There's no such thing as a pointer-to-cv-function, so we don't need specializations for those
103 };
104 
105 template <class T>
107  : mpl::if_<
108  is_reference_to_function<T>
109  , mpl::false_
110  , is_reference_to_function_pointer_aux<T>
111  >::type
112 {
113 };
114 
115 template <class T>
117  : mpl::and_<
118  is_reference<T>
119  , mpl::not_<
120  is_reference_to_const<T>
121  >
122  >
123 {
124 };
125 
126 template <class T>
128 {
129 };
130 
131 template <class T>
133 {
134 };
135 
136 # if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
137 template <class T>
138 struct is_reference_to_volatile<T const volatile&> : mpl::true_
139 {
140 };
141 # endif
142 
143 
144 template <class T>
146 {
147 };
148 
149 template <class T>
151 {
152 };
153 
154 template <class T>
156 {
157 };
158 
159 template <class T>
160 struct is_reference_to_pointer<T* volatile&> : mpl::true_
161 {
162 };
163 
164 template <class T>
165 struct is_reference_to_pointer<T* const volatile&> : mpl::true_
166 {
167 };
168 
169 template <class T>
171  : mpl::and_<
172  is_reference<T>
173  , is_class<
174  typename remove_cv<
175  typename remove_reference<T>::type
176  >::type
177  >
178  >
179 {
181 };
182 
183 template <class T>
185  : mpl::and_<
186  is_pointer<T>
187  , is_class<
188  typename remove_cv<
189  typename remove_pointer<T>::type
190  >::type
191  >
192  >
193 {
195 };
196 
197 
198 }
199 
200 using namespace indirect_traits;
201 
202 }} // namespace boost::python::detail
203 
204 #endif // INDIRECT_TRAITS_DWA2002131_HPP
bool_< true > true_
Definition: bool_fwd.hpp:21
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
#define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params)
bool_< false > false_
Definition: bool_fwd.hpp:25
const char * detail


librealsense2
Author(s): Sergey Dorodnicov , Doron Hirshberg , Mark Horn , Reagan Lopez , Itay Carpis
autogenerated on Mon May 3 2021 02:47:17