PageRenderTime 116ms CodeModel.GetById 53ms app.highlight 58ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/proto/detail/preprocessed/make_expr.hpp

http://hadesmem.googlecode.com/
C++ Header | 313 lines | 270 code | 36 blank | 7 comment | 0 complexity | 71eb9bd34ef81411d9010df6cc05e1f1 MD5 | raw file
  1    ///////////////////////////////////////////////////////////////////////////////
  2    /// \file make_expr.hpp
  3    /// Contains overloads of make_expr() free function.
  4    //
  5    //  Copyright 2008 Eric Niebler. Distributed under the Boost
  6    //  Software License, Version 1.0. (See accompanying file
  7    //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  8    
  9    
 10    template<typename Tag , typename A0 , typename A1>
 11    typename lazy_disable_if<
 12        is_domain<A0>
 13      , result_of::make_expr<
 14            Tag
 15            , const A0 , const A1
 16        >
 17    >::type const
 18    make_expr(const A0 &a0 , const A1 &a1)
 19    {
 20        return proto::detail::make_expr_<
 21            Tag
 22          , deduce_domain
 23            , const A0 , const A1
 24        >()(a0 , a1);
 25    }
 26    
 27    
 28    template<typename Tag, typename Domain , typename C0 , typename C1>
 29    typename result_of::make_expr<
 30        Tag
 31      , Domain
 32        , const C0 , const C1
 33    >::type const
 34    make_expr(const C0 &c0 , const C1 &c1)
 35    {
 36        return proto::detail::make_expr_<
 37            Tag
 38          , Domain
 39            , const C0 , const C1
 40        >()(c0 , c1);
 41    }
 42    
 43    
 44    template<typename Tag , typename A0 , typename A1 , typename A2>
 45    typename lazy_disable_if<
 46        is_domain<A0>
 47      , result_of::make_expr<
 48            Tag
 49            , const A0 , const A1 , const A2
 50        >
 51    >::type const
 52    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2)
 53    {
 54        return proto::detail::make_expr_<
 55            Tag
 56          , deduce_domain
 57            , const A0 , const A1 , const A2
 58        >()(a0 , a1 , a2);
 59    }
 60    
 61    
 62    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2>
 63    typename result_of::make_expr<
 64        Tag
 65      , Domain
 66        , const C0 , const C1 , const C2
 67    >::type const
 68    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2)
 69    {
 70        return proto::detail::make_expr_<
 71            Tag
 72          , Domain
 73            , const C0 , const C1 , const C2
 74        >()(c0 , c1 , c2);
 75    }
 76    
 77    
 78    template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3>
 79    typename lazy_disable_if<
 80        is_domain<A0>
 81      , result_of::make_expr<
 82            Tag
 83            , const A0 , const A1 , const A2 , const A3
 84        >
 85    >::type const
 86    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3)
 87    {
 88        return proto::detail::make_expr_<
 89            Tag
 90          , deduce_domain
 91            , const A0 , const A1 , const A2 , const A3
 92        >()(a0 , a1 , a2 , a3);
 93    }
 94    
 95    
 96    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3>
 97    typename result_of::make_expr<
 98        Tag
 99      , Domain
100        , const C0 , const C1 , const C2 , const C3
101    >::type const
102    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3)
103    {
104        return proto::detail::make_expr_<
105            Tag
106          , Domain
107            , const C0 , const C1 , const C2 , const C3
108        >()(c0 , c1 , c2 , c3);
109    }
110    
111    
112    template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
113    typename lazy_disable_if<
114        is_domain<A0>
115      , result_of::make_expr<
116            Tag
117            , const A0 , const A1 , const A2 , const A3 , const A4
118        >
119    >::type const
120    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4)
121    {
122        return proto::detail::make_expr_<
123            Tag
124          , deduce_domain
125            , const A0 , const A1 , const A2 , const A3 , const A4
126        >()(a0 , a1 , a2 , a3 , a4);
127    }
128    
129    
130    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
131    typename result_of::make_expr<
132        Tag
133      , Domain
134        , const C0 , const C1 , const C2 , const C3 , const C4
135    >::type const
136    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4)
137    {
138        return proto::detail::make_expr_<
139            Tag
140          , Domain
141            , const C0 , const C1 , const C2 , const C3 , const C4
142        >()(c0 , c1 , c2 , c3 , c4);
143    }
144    
145    
146    template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
147    typename lazy_disable_if<
148        is_domain<A0>
149      , result_of::make_expr<
150            Tag
151            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
152        >
153    >::type const
154    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5)
155    {
156        return proto::detail::make_expr_<
157            Tag
158          , deduce_domain
159            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
160        >()(a0 , a1 , a2 , a3 , a4 , a5);
161    }
162    
163    
164    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
165    typename result_of::make_expr<
166        Tag
167      , Domain
168        , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
169    >::type const
170    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5)
171    {
172        return proto::detail::make_expr_<
173            Tag
174          , Domain
175            , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
176        >()(c0 , c1 , c2 , c3 , c4 , c5);
177    }
178    
179    
180    template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
181    typename lazy_disable_if<
182        is_domain<A0>
183      , result_of::make_expr<
184            Tag
185            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
186        >
187    >::type const
188    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6)
189    {
190        return proto::detail::make_expr_<
191            Tag
192          , deduce_domain
193            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
194        >()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
195    }
196    
197    
198    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
199    typename result_of::make_expr<
200        Tag
201      , Domain
202        , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
203    >::type const
204    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6)
205    {
206        return proto::detail::make_expr_<
207            Tag
208          , Domain
209            , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
210        >()(c0 , c1 , c2 , c3 , c4 , c5 , c6);
211    }
212    
213    
214    template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
215    typename lazy_disable_if<
216        is_domain<A0>
217      , result_of::make_expr<
218            Tag
219            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
220        >
221    >::type const
222    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7)
223    {
224        return proto::detail::make_expr_<
225            Tag
226          , deduce_domain
227            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
228        >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
229    }
230    
231    
232    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7>
233    typename result_of::make_expr<
234        Tag
235      , Domain
236        , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7
237    >::type const
238    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7)
239    {
240        return proto::detail::make_expr_<
241            Tag
242          , Domain
243            , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7
244        >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7);
245    }
246    
247    
248    template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
249    typename lazy_disable_if<
250        is_domain<A0>
251      , result_of::make_expr<
252            Tag
253            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
254        >
255    >::type const
256    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7 , const A8 &a8)
257    {
258        return proto::detail::make_expr_<
259            Tag
260          , deduce_domain
261            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
262        >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
263    }
264    
265    
266    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8>
267    typename result_of::make_expr<
268        Tag
269      , Domain
270        , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8
271    >::type const
272    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7 , const C8 &c8)
273    {
274        return proto::detail::make_expr_<
275            Tag
276          , Domain
277            , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8
278        >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8);
279    }
280    
281    
282    template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
283    typename lazy_disable_if<
284        is_domain<A0>
285      , result_of::make_expr<
286            Tag
287            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
288        >
289    >::type const
290    make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7 , const A8 &a8 , const A9 &a9)
291    {
292        return proto::detail::make_expr_<
293            Tag
294          , deduce_domain
295            , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
296        >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
297    }
298    
299    
300    template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8 , typename C9>
301    typename result_of::make_expr<
302        Tag
303      , Domain
304        , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9
305    >::type const
306    make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7 , const C8 &c8 , const C9 &c9)
307    {
308        return proto::detail::make_expr_<
309            Tag
310          , Domain
311            , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9
312        >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8 , c9);
313    }