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