Ugly, not-to-be-pushed sucking in of all of Boost to get windows to work.
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / msvc60 / apply_wrap.hpp
1
2 // Copyright Aleksey Gurtovoy 2000-2004
3 //
4 // Distributed under the Boost Software License, Version 1.0. 
5 // (See accompanying file LICENSE_1_0.txt or copy at 
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8
9 // Preprocessed version of "boost/mpl/apply_wrap.hpp" header
10 // -- DO NOT modify by hand!
11
12 namespace boost { namespace mpl {
13
14 template< typename F>
15 struct msvc_apply0
16 {
17     template< bool > struct f_ : F {};
18     template<> struct f_<true>
19     {
20         template< typename P  = int > struct apply
21         {
22             typedef int type;
23         };
24     };
25
26     template< typename T  = int > struct result_
27         : f_< aux::msvc_never_true<F>::value >
28             ::template apply<>
29     {
30     };
31
32 };
33
34 template<
35       typename F
36     >
37 struct apply_wrap0
38 {
39     typedef typename msvc_apply0<F>::template result_<
40          
41         >::type type;
42 };
43
44 /// workaround for ETI bug
45 template<>
46 struct apply_wrap0<int>
47 {
48     typedef int type;
49 };
50
51 template< typename F>
52 struct msvc_apply1
53 {
54     template< bool > struct f_ : F {};
55     template<> struct f_<true>
56     {
57         template< typename P1 > struct apply
58         {
59             typedef int type;
60         };
61     };
62
63     template< typename T1 > struct result_
64         : f_< aux::msvc_never_true<F>::value >
65             ::template apply<T1>
66     {
67     };
68 };
69
70 template<
71       typename F, typename T1
72     >
73 struct apply_wrap1
74 {
75     typedef typename msvc_apply1<F>::template result_<
76           T1
77         >::type type;
78 };
79
80 /// workaround for ETI bug
81 template<>
82 struct apply_wrap1< int,int >
83 {
84     typedef int type;
85 };
86
87 template< typename F>
88 struct msvc_apply2
89 {
90     template< bool > struct f_ : F {};
91     template<> struct f_<true>
92     {
93         template< typename P1, typename P2 > struct apply
94         {
95             typedef int type;
96         };
97     };
98
99     template< typename T1, typename T2 > struct result_
100         : f_< aux::msvc_never_true<F>::value >
101             ::template apply< T1,T2 >
102     {
103     };
104 };
105
106 template<
107       typename F, typename T1, typename T2
108     >
109 struct apply_wrap2
110 {
111     typedef typename msvc_apply2<F>::template result_<
112           T1, T2
113         >::type type;
114 };
115
116 /// workaround for ETI bug
117 template<>
118 struct apply_wrap2< int,int,int >
119 {
120     typedef int type;
121 };
122
123 template< typename F>
124 struct msvc_apply3
125 {
126     template< bool > struct f_ : F {};
127     template<> struct f_<true>
128     {
129         template< typename P1, typename P2, typename P3 > struct apply
130         {
131             typedef int type;
132         };
133     };
134
135     template< typename T1, typename T2, typename T3 > struct result_
136         : f_< aux::msvc_never_true<F>::value >
137             ::template apply< T1,T2,T3 >
138     {
139     };
140 };
141
142 template<
143       typename F, typename T1, typename T2, typename T3
144     >
145 struct apply_wrap3
146 {
147     typedef typename msvc_apply3<F>::template result_<
148           T1, T2, T3
149         >::type type;
150 };
151
152 /// workaround for ETI bug
153 template<>
154 struct apply_wrap3< int,int,int,int >
155 {
156     typedef int type;
157 };
158
159 template< typename F>
160 struct msvc_apply4
161 {
162     template< bool > struct f_ : F {};
163     template<> struct f_<true>
164     {
165         template<
166               typename P1, typename P2, typename P3, typename P4
167             >
168         struct apply
169         {
170             typedef int type;
171         };
172     };
173
174     template<
175           typename T1, typename T2, typename T3, typename T4
176         >
177     struct result_
178         : f_< aux::msvc_never_true<F>::value >
179             ::template apply< T1,T2,T3,T4 >
180     {
181     };
182 };
183
184 template<
185       typename F, typename T1, typename T2, typename T3, typename T4
186     >
187 struct apply_wrap4
188 {
189     typedef typename msvc_apply4<F>::template result_<
190           T1, T2, T3, T4
191         >::type type;
192 };
193
194 /// workaround for ETI bug
195 template<>
196 struct apply_wrap4< int,int,int,int,int >
197 {
198     typedef int type;
199 };
200
201 template< typename F>
202 struct msvc_apply5
203 {
204     template< bool > struct f_ : F {};
205     template<> struct f_<true>
206     {
207         template<
208               typename P1, typename P2, typename P3, typename P4
209             , typename P5
210             >
211         struct apply
212         {
213             typedef int type;
214         };
215     };
216
217     template<
218           typename T1, typename T2, typename T3, typename T4
219         , typename T5
220         >
221     struct result_
222         : f_< aux::msvc_never_true<F>::value >
223             ::template apply< T1,T2,T3,T4,T5 >
224     {
225     };
226 };
227
228 template<
229       typename F, typename T1, typename T2, typename T3, typename T4
230     , typename T5
231     >
232 struct apply_wrap5
233 {
234     typedef typename msvc_apply5<F>::template result_<
235           T1, T2, T3, T4, T5
236         >::type type;
237 };
238
239 /// workaround for ETI bug
240 template<>
241 struct apply_wrap5< int,int,int,int,int,int >
242 {
243     typedef int type;
244 };
245
246 }}
247