blob: 79157d1f71190dccde0271faa07596206ede7da4 [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001
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 "ndnboost/mpl/apply_wrap.hpp" header
10// -- DO NOT modify by hand!
11
12namespace ndnboost { namespace mpl {
13
14template< typename F>
15struct 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
34template<
35 typename F
36 >
37struct apply_wrap0
38{
39 typedef typename msvc_apply0<F>::template result_<
40
41 >::type type;
42};
43
44/// workaround for ETI bug
45template<>
46struct apply_wrap0<int>
47{
48 typedef int type;
49};
50
51template< typename F>
52struct 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
70template<
71 typename F, typename T1
72 >
73struct apply_wrap1
74{
75 typedef typename msvc_apply1<F>::template result_<
76 T1
77 >::type type;
78};
79
80/// workaround for ETI bug
81template<>
82struct apply_wrap1< int,int >
83{
84 typedef int type;
85};
86
87template< typename F>
88struct 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
106template<
107 typename F, typename T1, typename T2
108 >
109struct apply_wrap2
110{
111 typedef typename msvc_apply2<F>::template result_<
112 T1, T2
113 >::type type;
114};
115
116/// workaround for ETI bug
117template<>
118struct apply_wrap2< int,int,int >
119{
120 typedef int type;
121};
122
123template< typename F>
124struct 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
142template<
143 typename F, typename T1, typename T2, typename T3
144 >
145struct 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
153template<>
154struct apply_wrap3< int,int,int,int >
155{
156 typedef int type;
157};
158
159template< typename F>
160struct 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
184template<
185 typename F, typename T1, typename T2, typename T3, typename T4
186 >
187struct 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
195template<>
196struct apply_wrap4< int,int,int,int,int >
197{
198 typedef int type;
199};
200
201template< typename F>
202struct 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
228template<
229 typename F, typename T1, typename T2, typename T3, typename T4
230 , typename T5
231 >
232struct 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
240template<>
241struct apply_wrap5< int,int,int,int,int,int >
242{
243 typedef int type;
244};
245
246}}
247