Back to home page

EIC code displayed by LXR

 
 

    


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

0001     ///////////////////////////////////////////////////////////////////////////////
0002     /// \file make_expr_funop.hpp
0003     /// Contains definition of make_expr\<\>::operator() member functions.
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     template<typename This , typename A0 , typename A1>
0009     struct result<This(A0 , A1)>
0010     {
0011         typedef
0012             typename result_of::make_expr<
0013                 Tag
0014               , Domain
0015                 , A0 , A1
0016             >::type
0017         type;
0018     };
0019     
0020     
0021     template<typename A0 , typename A1>
0022     BOOST_FORCEINLINE
0023     typename result_of::make_expr<
0024         Tag
0025       , Domain
0026         , const A0 , const A1
0027     >::type const
0028     operator ()(const A0 &a0 , const A1 &a1) const
0029     {
0030         return proto::detail::make_expr_<
0031             Tag
0032           , Domain
0033             , const A0 , const A1
0034         >()(a0 , a1);
0035     }
0036     template<typename This , typename A0 , typename A1 , typename A2>
0037     struct result<This(A0 , A1 , A2)>
0038     {
0039         typedef
0040             typename result_of::make_expr<
0041                 Tag
0042               , Domain
0043                 , A0 , A1 , A2
0044             >::type
0045         type;
0046     };
0047     
0048     
0049     template<typename A0 , typename A1 , typename A2>
0050     BOOST_FORCEINLINE
0051     typename result_of::make_expr<
0052         Tag
0053       , Domain
0054         , const A0 , const A1 , const A2
0055     >::type const
0056     operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2) const
0057     {
0058         return proto::detail::make_expr_<
0059             Tag
0060           , Domain
0061             , const A0 , const A1 , const A2
0062         >()(a0 , a1 , a2);
0063     }
0064     template<typename This , typename A0 , typename A1 , typename A2 , typename A3>
0065     struct result<This(A0 , A1 , A2 , A3)>
0066     {
0067         typedef
0068             typename result_of::make_expr<
0069                 Tag
0070               , Domain
0071                 , A0 , A1 , A2 , A3
0072             >::type
0073         type;
0074     };
0075     
0076     
0077     template<typename A0 , typename A1 , typename A2 , typename A3>
0078     BOOST_FORCEINLINE
0079     typename result_of::make_expr<
0080         Tag
0081       , Domain
0082         , const A0 , const A1 , const A2 , const A3
0083     >::type const
0084     operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3) const
0085     {
0086         return proto::detail::make_expr_<
0087             Tag
0088           , Domain
0089             , const A0 , const A1 , const A2 , const A3
0090         >()(a0 , a1 , a2 , a3);
0091     }
0092     template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0093     struct result<This(A0 , A1 , A2 , A3 , A4)>
0094     {
0095         typedef
0096             typename result_of::make_expr<
0097                 Tag
0098               , Domain
0099                 , A0 , A1 , A2 , A3 , A4
0100             >::type
0101         type;
0102     };
0103     
0104     
0105     template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0106     BOOST_FORCEINLINE
0107     typename result_of::make_expr<
0108         Tag
0109       , Domain
0110         , const A0 , const A1 , const A2 , const A3 , const A4
0111     >::type const
0112     operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4) const
0113     {
0114         return proto::detail::make_expr_<
0115             Tag
0116           , Domain
0117             , const A0 , const A1 , const A2 , const A3 , const A4
0118         >()(a0 , a1 , a2 , a3 , a4);
0119     }
0120     template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0121     struct result<This(A0 , A1 , A2 , A3 , A4 , A5)>
0122     {
0123         typedef
0124             typename result_of::make_expr<
0125                 Tag
0126               , Domain
0127                 , A0 , A1 , A2 , A3 , A4 , A5
0128             >::type
0129         type;
0130     };
0131     
0132     
0133     template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0134     BOOST_FORCEINLINE
0135     typename result_of::make_expr<
0136         Tag
0137       , Domain
0138         , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
0139     >::type const
0140     operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5) const
0141     {
0142         return proto::detail::make_expr_<
0143             Tag
0144           , Domain
0145             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
0146         >()(a0 , a1 , a2 , a3 , a4 , a5);
0147     }
0148     template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0149     struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
0150     {
0151         typedef
0152             typename result_of::make_expr<
0153                 Tag
0154               , Domain
0155                 , A0 , A1 , A2 , A3 , A4 , A5 , A6
0156             >::type
0157         type;
0158     };
0159     
0160     
0161     template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0162     BOOST_FORCEINLINE
0163     typename result_of::make_expr<
0164         Tag
0165       , Domain
0166         , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
0167     >::type const
0168     operator ()(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6) const
0169     {
0170         return proto::detail::make_expr_<
0171             Tag
0172           , Domain
0173             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
0174         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
0175     }
0176     template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0177     struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
0178     {
0179         typedef
0180             typename result_of::make_expr<
0181                 Tag
0182               , Domain
0183                 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
0184             >::type
0185         type;
0186     };
0187     
0188     
0189     template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0190     BOOST_FORCEINLINE
0191     typename result_of::make_expr<
0192         Tag
0193       , Domain
0194         , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
0195     >::type const
0196     operator ()(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
0197     {
0198         return proto::detail::make_expr_<
0199             Tag
0200           , Domain
0201             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
0202         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
0203     }
0204     template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0205     struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
0206     {
0207         typedef
0208             typename result_of::make_expr<
0209                 Tag
0210               , Domain
0211                 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
0212             >::type
0213         type;
0214     };
0215     
0216     
0217     template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0218     BOOST_FORCEINLINE
0219     typename result_of::make_expr<
0220         Tag
0221       , Domain
0222         , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
0223     >::type const
0224     operator ()(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
0225     {
0226         return proto::detail::make_expr_<
0227             Tag
0228           , Domain
0229             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
0230         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
0231     }
0232     template<typename This , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0233     struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
0234     {
0235         typedef
0236             typename result_of::make_expr<
0237                 Tag
0238               , Domain
0239                 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
0240             >::type
0241         type;
0242     };
0243     
0244     
0245     template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0246     BOOST_FORCEINLINE
0247     typename result_of::make_expr<
0248         Tag
0249       , Domain
0250         , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
0251     >::type const
0252     operator ()(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) const
0253     {
0254         return proto::detail::make_expr_<
0255             Tag
0256           , Domain
0257             , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9
0258         >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
0259     }