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

Private GIT Repository
5b1d0ccac3057098edd3386412947295b08785c2
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / aux_ / preprocessed / msvc70 / 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 template< bool >\r
17 struct resolve_arg_impl\r
18 {\r
19     template<\r
20           typename T, typename U1, typename U2, typename U3\r
21         , typename U4, typename U5\r
22         >\r
23     struct result_\r
24     {\r
25         typedef T type;\r
26     };\r
27 };\r
28 \r
29 template<>\r
30 struct resolve_arg_impl<true>\r
31 {\r
32     template<\r
33           typename T, typename U1, typename U2, typename U3\r
34         , typename U4, typename U5\r
35         >\r
36     struct result_\r
37     {\r
38         typedef typename apply_wrap5<\r
39               T\r
40             , U1, U2, U3, U4, U5\r
41             >::type type;\r
42     };\r
43 };\r
44 \r
45 template< typename T > struct is_bind_template;\r
46 \r
47 template<\r
48       typename T, typename U1, typename U2, typename U3, typename U4\r
49     , typename U5\r
50     >\r
51 struct resolve_bind_arg\r
52     : resolve_arg_impl< is_bind_template<T>::value >\r
53             ::template result_< T,U1,U2,U3,U4,U5 >\r
54 {\r
55 };\r
56 \r
57 template< int arity_ > struct bind_chooser;\r
58 \r
59 aux::no_tag is_bind_helper(...);\r
60 template< typename T > aux::no_tag is_bind_helper(protect<T>*);\r
61 \r
62 template< int N >\r
63 aux::yes_tag is_bind_helper(arg<N>*);\r
64 \r
65 template< bool is_ref_  = true >\r
66 struct is_bind_template_impl\r
67 {\r
68     template< typename T > struct result_\r
69     {\r
70         BOOST_STATIC_CONSTANT(bool, value  = false);\r
71     };\r
72 };\r
73 \r
74 template<>\r
75 struct is_bind_template_impl<false>\r
76 {\r
77     template< typename T > struct result_\r
78     {\r
79         BOOST_STATIC_CONSTANT(bool, value =\r
80               sizeof(aux::is_bind_helper(static_cast<T*>(0)))\r
81                 == sizeof(aux::yes_tag)\r
82             );\r
83     };\r
84 };\r
85 \r
86 template< typename T > struct is_bind_template\r
87     : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >\r
88         ::template result_<T>\r
89 {\r
90 };\r
91 \r
92 } // namespace aux\r
93 \r
94 template<\r
95       typename F\r
96     >\r
97 struct bind0\r
98 {\r
99     template<\r
100           typename U1 = na, typename U2 = na, typename U3 = na\r
101         , typename U4 = na, typename U5 = na\r
102         >\r
103     struct apply\r
104     {\r
105      private:\r
106         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;\r
107 \r
108      public:\r
109         typedef typename apply_wrap0<\r
110               f_\r
111             >::type type;\r
112 \r
113     };\r
114 };\r
115 \r
116 namespace aux {\r
117 \r
118 template<\r
119       typename F\r
120     >\r
121 aux::yes_tag\r
122 is_bind_helper(bind0<F>*);\r
123 \r
124 } // namespace aux\r
125 \r
126 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)\r
127 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)\r
128 \r
129 template<\r
130       typename F, typename T1\r
131     >\r
132 struct bind1\r
133 {\r
134     template<\r
135           typename U1 = na, typename U2 = na, typename U3 = na\r
136         , typename U4 = na, typename U5 = na\r
137         >\r
138     struct apply\r
139     {\r
140      private:\r
141         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;\r
142         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;\r
143 \r
144      public:\r
145         typedef typename apply_wrap1<\r
146               f_\r
147             , typename t1::type\r
148             >::type type;\r
149 \r
150     };\r
151 };\r
152 \r
153 namespace aux {\r
154 \r
155 template<\r
156       typename F, typename T1\r
157     >\r
158 aux::yes_tag\r
159 is_bind_helper(bind1< F,T1 >*);\r
160 \r
161 } // namespace aux\r
162 \r
163 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)\r
164 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)\r
165 \r
166 template<\r
167       typename F, typename T1, typename T2\r
168     >\r
169 struct bind2\r
170 {\r
171     template<\r
172           typename U1 = na, typename U2 = na, typename U3 = na\r
173         , typename U4 = na, typename U5 = na\r
174         >\r
175     struct apply\r
176     {\r
177      private:\r
178         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;\r
179         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;\r
180         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;\r
181 \r
182      public:\r
183         typedef typename apply_wrap2<\r
184               f_\r
185             , typename t1::type, typename t2::type\r
186             >::type type;\r
187 \r
188     };\r
189 };\r
190 \r
191 namespace aux {\r
192 \r
193 template<\r
194       typename F, typename T1, typename T2\r
195     >\r
196 aux::yes_tag\r
197 is_bind_helper(bind2< F,T1,T2 >*);\r
198 \r
199 } // namespace aux\r
200 \r
201 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)\r
202 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)\r
203 \r
204 template<\r
205       typename F, typename T1, typename T2, typename T3\r
206     >\r
207 struct bind3\r
208 {\r
209     template<\r
210           typename U1 = na, typename U2 = na, typename U3 = na\r
211         , typename U4 = na, typename U5 = na\r
212         >\r
213     struct apply\r
214     {\r
215      private:\r
216         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;\r
217         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;\r
218         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;\r
219         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;\r
220 \r
221      public:\r
222         typedef typename apply_wrap3<\r
223               f_\r
224             , typename t1::type, typename t2::type, typename t3::type\r
225             >::type type;\r
226 \r
227     };\r
228 };\r
229 \r
230 namespace aux {\r
231 \r
232 template<\r
233       typename F, typename T1, typename T2, typename T3\r
234     >\r
235 aux::yes_tag\r
236 is_bind_helper(bind3< F,T1,T2,T3 >*);\r
237 \r
238 } // namespace aux\r
239 \r
240 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)\r
241 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)\r
242 \r
243 template<\r
244       typename F, typename T1, typename T2, typename T3, typename T4\r
245     >\r
246 struct bind4\r
247 {\r
248     template<\r
249           typename U1 = na, typename U2 = na, typename U3 = na\r
250         , typename U4 = na, typename U5 = na\r
251         >\r
252     struct apply\r
253     {\r
254      private:\r
255         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;\r
256         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;\r
257         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;\r
258         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;\r
259         typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;\r
260 \r
261      public:\r
262         typedef typename apply_wrap4<\r
263               f_\r
264             , typename t1::type, typename t2::type, typename t3::type\r
265             , typename t4::type\r
266             >::type type;\r
267 \r
268     };\r
269 };\r
270 \r
271 namespace aux {\r
272 \r
273 template<\r
274       typename F, typename T1, typename T2, typename T3, typename T4\r
275     >\r
276 aux::yes_tag\r
277 is_bind_helper(bind4< F,T1,T2,T3,T4 >*);\r
278 \r
279 } // namespace aux\r
280 \r
281 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)\r
282 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)\r
283 \r
284 template<\r
285       typename F, typename T1, typename T2, typename T3, typename T4\r
286     , typename T5\r
287     >\r
288 struct bind5\r
289 {\r
290     template<\r
291           typename U1 = na, typename U2 = na, typename U3 = na\r
292         , typename U4 = na, typename U5 = na\r
293         >\r
294     struct apply\r
295     {\r
296      private:\r
297         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;\r
298         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;\r
299         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;\r
300         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;\r
301         typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;\r
302         typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;\r
303 \r
304      public:\r
305         typedef typename apply_wrap5<\r
306               f_\r
307             , typename t1::type, typename t2::type, typename t3::type\r
308             , typename t4::type, typename t5::type\r
309             >::type type;\r
310 \r
311     };\r
312 };\r
313 \r
314 namespace aux {\r
315 \r
316 template<\r
317       typename F, typename T1, typename T2, typename T3, typename T4\r
318     , typename T5\r
319     >\r
320 aux::yes_tag\r
321 is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);\r
322 \r
323 } // namespace aux\r
324 \r
325 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)\r
326 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)\r
327 }}\r
328 \r