Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:50:23

0001     ///////////////////////////////////////////////////////////////////////////////
0002     /// \file make_expr.hpp
0003     /// Contains overloads of make_expr() free function.
0004     //
0005     //  Copyright 2008 Eric Niebler. Distributed under the Boost
0006     //  Software License, Version 1.0. (See accompanying file
0007     //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0008     
0009     
0010     template<typename Tag , typename A0 , typename A1>
0011     BOOST_FORCEINLINE
0012     typename lazy_disable_if<
0013         is_domain<A0>
0014       , result_of::make_expr<
0015             Tag
0016             , const A0 , const A1
0017         >
0018     >::type const
0019     make_expr(const A0 &a0 , const A1 &a1)
0020     {
0021         return proto::detail::make_expr_<
0022             Tag
0023           , deduce_domain
0024             , const A0 , const A1
0025         >()(a0 , a1);
0026     }
0027     
0028     
0029     template<typename Tag, typename Domain , typename C0 , typename C1>
0030     BOOST_FORCEINLINE
0031     typename result_of::make_expr<
0032         Tag
0033       , Domain
0034         , const C0 , const C1
0035     >::type const
0036     make_expr(const C0 &c0 , const C1 &c1)
0037     {
0038         return proto::detail::make_expr_<
0039             Tag
0040           , Domain
0041             , const C0 , const C1
0042         >()(c0 , c1);
0043     }
0044     
0045     
0046     template<typename Tag , typename A0 , typename A1 , typename A2>
0047     BOOST_FORCEINLINE
0048     typename lazy_disable_if<
0049         is_domain<A0>
0050       , result_of::make_expr<
0051             Tag
0052             , const A0 , const A1 , const A2
0053         >
0054     >::type const
0055     make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2)
0056     {
0057         return proto::detail::make_expr_<
0058             Tag
0059           , deduce_domain
0060             , const A0 , const A1 , const A2
0061         >()(a0 , a1 , a2);
0062     }
0063     
0064     
0065     template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2>
0066     BOOST_FORCEINLINE
0067     typename result_of::make_expr<
0068         Tag
0069       , Domain
0070         , const C0 , const C1 , const C2
0071     >::type const
0072     make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2)
0073     {
0074         return proto::detail::make_expr_<
0075             Tag
0076           , Domain
0077             , const C0 , const C1 , const C2
0078         >()(c0 , c1 , c2);
0079     }
0080     
0081     
0082     template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3>
0083     BOOST_FORCEINLINE
0084     typename lazy_disable_if<
0085         is_domain<A0>
0086       , result_of::make_expr<
0087             Tag
0088             , const A0 , const A1 , const A2 , const A3
0089         >
0090     >::type const
0091     make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3)
0092     {
0093         return proto::detail::make_expr_<
0094             Tag
0095           , deduce_domain
0096             , const A0 , const A1 , const A2 , const A3
0097         >()(a0 , a1 , a2 , a3);
0098     }
0099     
0100     
0101     template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3>
0102     BOOST_FORCEINLINE
0103     typename result_of::make_expr<
0104         Tag
0105       , Domain
0106         , const C0 , const C1 , const C2 , const C3
0107     >::type const
0108     make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3)
0109     {
0110         return proto::detail::make_expr_<
0111             Tag
0112           , Domain
0113             , const C0 , const C1 , const C2 , const C3
0114         >()(c0 , c1 , c2 , c3);
0115     }
0116     
0117     
0118     template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0119     BOOST_FORCEINLINE
0120     typename lazy_disable_if<
0121         is_domain<A0>
0122       , result_of::make_expr<
0123             Tag
0124             , const A0 , const A1 , const A2 , const A3 , const A4
0125         >
0126     >::type const
0127     make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4)
0128     {
0129         return proto::detail::make_expr_<
0130             Tag
0131           , deduce_domain
0132             , const A0 , const A1 , const A2 , const A3 , const A4
0133         >()(a0 , a1 , a2 , a3 , a4);
0134     }
0135     
0136     
0137     template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
0138     BOOST_FORCEINLINE
0139     typename result_of::make_expr<
0140         Tag
0141       , Domain
0142         , const C0 , const C1 , const C2 , const C3 , const C4
0143     >::type const
0144     make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4)
0145     {
0146         return proto::detail::make_expr_<
0147             Tag
0148           , Domain
0149             , const C0 , const C1 , const C2 , const C3 , const C4
0150         >()(c0 , c1 , c2 , c3 , c4);
0151     }
0152     
0153     
0154     template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0155     BOOST_FORCEINLINE
0156     typename lazy_disable_if<
0157         is_domain<A0>
0158       , result_of::make_expr<
0159             Tag
0160             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
0161         >
0162     >::type const
0163     make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5)
0164     {
0165         return proto::detail::make_expr_<
0166             Tag
0167           , deduce_domain
0168             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
0169         >()(a0 , a1 , a2 , a3 , a4 , a5);
0170     }
0171     
0172     
0173     template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
0174     BOOST_FORCEINLINE
0175     typename result_of::make_expr<
0176         Tag
0177       , Domain
0178         , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
0179     >::type const
0180     make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5)
0181     {
0182         return proto::detail::make_expr_<
0183             Tag
0184           , Domain
0185             , const C0 , const C1 , const C2 , const C3 , const C4 , const C5
0186         >()(c0 , c1 , c2 , c3 , c4 , c5);
0187     }
0188     
0189     
0190     template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0191     BOOST_FORCEINLINE
0192     typename lazy_disable_if<
0193         is_domain<A0>
0194       , result_of::make_expr<
0195             Tag
0196             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
0197         >
0198     >::type const
0199     make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6)
0200     {
0201         return proto::detail::make_expr_<
0202             Tag
0203           , deduce_domain
0204             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
0205         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
0206     }
0207     
0208     
0209     template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
0210     BOOST_FORCEINLINE
0211     typename result_of::make_expr<
0212         Tag
0213       , Domain
0214         , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
0215     >::type const
0216     make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6)
0217     {
0218         return proto::detail::make_expr_<
0219             Tag
0220           , Domain
0221             , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6
0222         >()(c0 , c1 , c2 , c3 , c4 , c5 , c6);
0223     }
0224     
0225     
0226     template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0227     BOOST_FORCEINLINE
0228     typename lazy_disable_if<
0229         is_domain<A0>
0230       , result_of::make_expr<
0231             Tag
0232             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
0233         >
0234     >::type const
0235     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)
0236     {
0237         return proto::detail::make_expr_<
0238             Tag
0239           , deduce_domain
0240             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
0241         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
0242     }
0243     
0244     
0245     template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7>
0246     BOOST_FORCEINLINE
0247     typename result_of::make_expr<
0248         Tag
0249       , Domain
0250         , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7
0251     >::type const
0252     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)
0253     {
0254         return proto::detail::make_expr_<
0255             Tag
0256           , Domain
0257             , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7
0258         >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7);
0259     }
0260     
0261     
0262     template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0263     BOOST_FORCEINLINE
0264     typename lazy_disable_if<
0265         is_domain<A0>
0266       , result_of::make_expr<
0267             Tag
0268             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
0269         >
0270     >::type const
0271     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)
0272     {
0273         return proto::detail::make_expr_<
0274             Tag
0275           , deduce_domain
0276             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
0277         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
0278     }
0279     
0280     
0281     template<typename Tag, typename Domain , typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8>
0282     BOOST_FORCEINLINE
0283     typename result_of::make_expr<
0284         Tag
0285       , Domain
0286         , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8
0287     >::type const
0288     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)
0289     {
0290         return proto::detail::make_expr_<
0291             Tag
0292           , Domain
0293             , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8
0294         >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8);
0295     }
0296     
0297     
0298     template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0299     BOOST_FORCEINLINE
0300     typename lazy_disable_if<
0301         is_domain<A0>
0302       , result_of::make_expr<
0303             Tag
0304             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
0305         >
0306     >::type const
0307     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)
0308     {
0309         return proto::detail::make_expr_<
0310             Tag
0311           , deduce_domain
0312             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
0313         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
0314     }
0315     
0316     
0317     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>
0318     BOOST_FORCEINLINE
0319     typename result_of::make_expr<
0320         Tag
0321       , Domain
0322         , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9
0323     >::type const
0324     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)
0325     {
0326         return proto::detail::make_expr_<
0327             Tag
0328           , Domain
0329             , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9
0330         >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8 , c9);
0331     }