]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
Logo AND Algorithmique Numérique Distribuée

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