]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/include/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / mpl / include / boost / mpl / aux_ / preprocessed / bcc_pre590 / basic_bind.hpp
1
2 // Copyright Peter Dimov 2001
3 // Copyright Aleksey Gurtovoy 2001-2004
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //
9
10 // *Preprocessed* version of the main "basic_bind.hpp" header
11 // -- DO NOT modify by hand!
12
13 namespace boost { namespace mpl {
14
15 namespace aux {
16
17 template<
18 typename T, typename U1, typename U2, typename U3, typename U4
19 , typename U5
20 >
21 struct resolve_bind_arg
22 {
23 typedef T type;
24 };
25
26 template<
27 int N, typename U1, typename U2, typename U3, typename U4, typename U5
28 >
29 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
30 {
31 typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
32 };
33
34 } // namespace aux
35
36 template<
37 typename F
38 >
39 struct bind0
40 {
41 template<
42 typename U1, typename U2, typename U3, typename U4, typename U5
43 >
44 struct apply
45 {
46 private:
47 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
48
49 public:
50 typedef typename apply_wrap0<
51 f_
52 >::type type;
53
54 };
55 };
56
57 namespace aux {
58
59 template<
60 typename F, typename U1, typename U2, typename U3, typename U4
61 , typename U5
62 >
63 struct resolve_bind_arg<
64 bind0<F>, U1, U2, U3, U4, U5
65 >
66 {
67 typedef bind0<F> f_;
68 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
69 };
70
71 } // namespace aux
72
73 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
74 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
75
76 template<
77 typename F, typename T1
78 >
79 struct bind1
80 {
81 template<
82 typename U1, typename U2, typename U3, typename U4, typename U5
83 >
84 struct apply
85 {
86 private:
87 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
88 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
89
90 public:
91 typedef typename apply_wrap1<
92 f_
93 , typename t1::type
94 >::type type;
95
96 };
97 };
98
99 namespace aux {
100
101 template<
102 typename F, typename T1, typename U1, typename U2, typename U3
103 , typename U4, typename U5
104 >
105 struct resolve_bind_arg<
106 bind1< F,T1 >, U1, U2, U3, U4, U5
107 >
108 {
109 typedef bind1< F,T1 > f_;
110 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
111 };
112
113 } // namespace aux
114
115 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
116 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
117
118 template<
119 typename F, typename T1, typename T2
120 >
121 struct bind2
122 {
123 template<
124 typename U1, typename U2, typename U3, typename U4, typename U5
125 >
126 struct apply
127 {
128 private:
129 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
130 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
131 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
132
133 public:
134 typedef typename apply_wrap2<
135 f_
136 , typename t1::type, typename t2::type
137 >::type type;
138
139 };
140 };
141
142 namespace aux {
143
144 template<
145 typename F, typename T1, typename T2, typename U1, typename U2
146 , typename U3, typename U4, typename U5
147 >
148 struct resolve_bind_arg<
149 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
150 >
151 {
152 typedef bind2< F,T1,T2 > f_;
153 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
154 };
155
156 } // namespace aux
157
158 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
159 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
160
161 template<
162 typename F, typename T1, typename T2, typename T3
163 >
164 struct bind3
165 {
166 template<
167 typename U1, typename U2, typename U3, typename U4, typename U5
168 >
169 struct apply
170 {
171 private:
172 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
173 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
174 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
175 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
176
177 public:
178 typedef typename apply_wrap3<
179 f_
180 , typename t1::type, typename t2::type, typename t3::type
181 >::type type;
182
183 };
184 };
185
186 namespace aux {
187
188 template<
189 typename F, typename T1, typename T2, typename T3, typename U1
190 , typename U2, typename U3, typename U4, typename U5
191 >
192 struct resolve_bind_arg<
193 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
194 >
195 {
196 typedef bind3< F,T1,T2,T3 > f_;
197 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
198 };
199
200 } // namespace aux
201
202 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
203 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
204
205 template<
206 typename F, typename T1, typename T2, typename T3, typename T4
207 >
208 struct bind4
209 {
210 template<
211 typename U1, typename U2, typename U3, typename U4, typename U5
212 >
213 struct apply
214 {
215 private:
216 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
217 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
218 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
219 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
220 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
221
222 public:
223 typedef typename apply_wrap4<
224 f_
225 , typename t1::type, typename t2::type, typename t3::type
226 , typename t4::type
227 >::type type;
228
229 };
230 };
231
232 namespace aux {
233
234 template<
235 typename F, typename T1, typename T2, typename T3, typename T4
236 , typename U1, typename U2, typename U3, typename U4, typename U5
237 >
238 struct resolve_bind_arg<
239 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
240 >
241 {
242 typedef bind4< F,T1,T2,T3,T4 > f_;
243 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
244 };
245
246 } // namespace aux
247
248 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
249 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
250
251 template<
252 typename F, typename T1, typename T2, typename T3, typename T4
253 , typename T5
254 >
255 struct bind5
256 {
257 template<
258 typename U1, typename U2, typename U3, typename U4, typename U5
259 >
260 struct apply
261 {
262 private:
263 typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
264 typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
265 typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
266 typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
267 typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
268 typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
269
270 public:
271 typedef typename apply_wrap5<
272 f_
273 , typename t1::type, typename t2::type, typename t3::type
274 , typename t4::type, typename t5::type
275 >::type type;
276
277 };
278 };
279
280 namespace aux {
281
282 template<
283 typename F, typename T1, typename T2, typename T3, typename T4
284 , typename T5, typename U1, typename U2, typename U3, typename U4
285 , typename U5
286 >
287 struct resolve_bind_arg<
288 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
289 >
290 {
291 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
292 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
293 };
294
295 } // namespace aux
296
297 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
298 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
299 }}
300