annotate DEPENDENCIES/generic/include/boost/proto/detail/preprocessed/make_expr_.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 ///////////////////////////////////////////////////////////////////////////////
Chris@16 2 /// \file make_expr_.hpp
Chris@16 3 /// Contains definition of make_expr_\<\> class template.
Chris@16 4 //
Chris@16 5 // Copyright 2008 Eric Niebler. Distributed under the Boost
Chris@16 6 // Software License, Version 1.0. (See accompanying file
Chris@16 7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8 template<
Chris@16 9 typename Tag
Chris@16 10 , typename Domain
Chris@16 11 , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void
Chris@16 12 , typename _ = void
Chris@16 13 >
Chris@16 14 struct make_expr_
Chris@16 15 {};
Chris@16 16 template<typename Domain, typename A>
Chris@16 17 struct make_expr_<tag::terminal, Domain, A
Chris@16 18 , void , void , void , void , void , void , void , void , void , void>
Chris@16 19 {
Chris@16 20 typedef typename proto::detail::protoify<A, Domain>::result_type result_type;
Chris@16 21 BOOST_FORCEINLINE
Chris@16 22 result_type operator()(typename add_reference<A>::type a) const
Chris@16 23 {
Chris@16 24 return proto::detail::protoify<A, Domain>()(a);
Chris@16 25 }
Chris@16 26 };
Chris@16 27 template<typename A>
Chris@16 28 struct make_expr_<tag::terminal, deduce_domain, A
Chris@16 29 , void , void , void , void , void , void , void , void , void , void>
Chris@16 30 : make_expr_<tag::terminal, default_domain, A>
Chris@16 31 {};
Chris@16 32 template<typename Tag, typename Domain , typename A0>
Chris@16 33 struct make_expr_<Tag, Domain , A0
Chris@16 34 , void , void , void , void , void , void , void , void , void, void>
Chris@16 35 {
Chris@16 36 typedef
Chris@16 37 list1<
Chris@16 38 typename boost::proto::detail::protoify< A0 , Domain >::result_type
Chris@16 39 >
Chris@16 40 proto_args;
Chris@16 41 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 42 typedef typename Domain::proto_generator proto_generator;
Chris@16 43 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 44 BOOST_FORCEINLINE
Chris@16 45 result_type operator()(typename add_reference<A0 >::type a0) const
Chris@16 46 {
Chris@16 47 expr_type const that = {
Chris@16 48 boost::proto::detail::protoify< A0 , Domain >()(a0)
Chris@16 49 };
Chris@16 50 return proto_generator()(that);
Chris@16 51 }
Chris@16 52 };
Chris@16 53 template<typename Tag , typename A0>
Chris@16 54 struct make_expr_<Tag, deduce_domain , A0
Chris@16 55 , void , void , void , void , void , void , void , void , void, void>
Chris@16 56 : make_expr_<
Chris@16 57 Tag
Chris@16 58 , typename deduce_domain1<A0>::type
Chris@16 59 , A0
Chris@16 60 >
Chris@16 61 {};
Chris@16 62 template<typename Tag, typename Domain , typename A0 , typename A1>
Chris@16 63 struct make_expr_<Tag, Domain , A0 , A1
Chris@16 64 , void , void , void , void , void , void , void , void, void>
Chris@16 65 {
Chris@16 66 typedef
Chris@16 67 list2<
Chris@16 68 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type
Chris@16 69 >
Chris@16 70 proto_args;
Chris@16 71 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 72 typedef typename Domain::proto_generator proto_generator;
Chris@16 73 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 74 BOOST_FORCEINLINE
Chris@16 75 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1) const
Chris@16 76 {
Chris@16 77 expr_type const that = {
Chris@16 78 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1)
Chris@16 79 };
Chris@16 80 return proto_generator()(that);
Chris@16 81 }
Chris@16 82 };
Chris@16 83 template<typename Tag , typename A0 , typename A1>
Chris@16 84 struct make_expr_<Tag, deduce_domain , A0 , A1
Chris@16 85 , void , void , void , void , void , void , void , void, void>
Chris@16 86 : make_expr_<
Chris@16 87 Tag
Chris@16 88 , typename deduce_domain2<A0 , A1>::type
Chris@16 89 , A0 , A1
Chris@16 90 >
Chris@16 91 {};
Chris@16 92 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2>
Chris@16 93 struct make_expr_<Tag, Domain , A0 , A1 , A2
Chris@16 94 , void , void , void , void , void , void , void, void>
Chris@16 95 {
Chris@16 96 typedef
Chris@16 97 list3<
Chris@16 98 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type
Chris@16 99 >
Chris@16 100 proto_args;
Chris@16 101 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 102 typedef typename Domain::proto_generator proto_generator;
Chris@16 103 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 104 BOOST_FORCEINLINE
Chris@16 105 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2) const
Chris@16 106 {
Chris@16 107 expr_type const that = {
Chris@16 108 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2)
Chris@16 109 };
Chris@16 110 return proto_generator()(that);
Chris@16 111 }
Chris@16 112 };
Chris@16 113 template<typename Tag , typename A0 , typename A1 , typename A2>
Chris@16 114 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2
Chris@16 115 , void , void , void , void , void , void , void, void>
Chris@16 116 : make_expr_<
Chris@16 117 Tag
Chris@16 118 , typename deduce_domain3<A0 , A1 , A2>::type
Chris@16 119 , A0 , A1 , A2
Chris@16 120 >
Chris@16 121 {};
Chris@16 122 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2 , typename A3>
Chris@16 123 struct make_expr_<Tag, Domain , A0 , A1 , A2 , A3
Chris@16 124 , void , void , void , void , void , void, void>
Chris@16 125 {
Chris@16 126 typedef
Chris@16 127 list4<
Chris@16 128 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type , typename boost::proto::detail::protoify< A3 , Domain >::result_type
Chris@16 129 >
Chris@16 130 proto_args;
Chris@16 131 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 132 typedef typename Domain::proto_generator proto_generator;
Chris@16 133 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 134 BOOST_FORCEINLINE
Chris@16 135 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2 , typename add_reference<A3 >::type a3) const
Chris@16 136 {
Chris@16 137 expr_type const that = {
Chris@16 138 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2) , boost::proto::detail::protoify< A3 , Domain >()(a3)
Chris@16 139 };
Chris@16 140 return proto_generator()(that);
Chris@16 141 }
Chris@16 142 };
Chris@16 143 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3>
Chris@16 144 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2 , A3
Chris@16 145 , void , void , void , void , void , void, void>
Chris@16 146 : make_expr_<
Chris@16 147 Tag
Chris@16 148 , typename deduce_domain4<A0 , A1 , A2 , A3>::type
Chris@16 149 , A0 , A1 , A2 , A3
Chris@16 150 >
Chris@16 151 {};
Chris@16 152 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
Chris@16 153 struct make_expr_<Tag, Domain , A0 , A1 , A2 , A3 , A4
Chris@16 154 , void , void , void , void , void, void>
Chris@16 155 {
Chris@16 156 typedef
Chris@16 157 list5<
Chris@16 158 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type , typename boost::proto::detail::protoify< A3 , Domain >::result_type , typename boost::proto::detail::protoify< A4 , Domain >::result_type
Chris@16 159 >
Chris@16 160 proto_args;
Chris@16 161 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 162 typedef typename Domain::proto_generator proto_generator;
Chris@16 163 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 164 BOOST_FORCEINLINE
Chris@16 165 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2 , typename add_reference<A3 >::type a3 , typename add_reference<A4 >::type a4) const
Chris@16 166 {
Chris@16 167 expr_type const that = {
Chris@16 168 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2) , boost::proto::detail::protoify< A3 , Domain >()(a3) , boost::proto::detail::protoify< A4 , Domain >()(a4)
Chris@16 169 };
Chris@16 170 return proto_generator()(that);
Chris@16 171 }
Chris@16 172 };
Chris@16 173 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
Chris@16 174 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2 , A3 , A4
Chris@16 175 , void , void , void , void , void, void>
Chris@16 176 : make_expr_<
Chris@16 177 Tag
Chris@16 178 , typename deduce_domain5<A0 , A1 , A2 , A3 , A4>::type
Chris@16 179 , A0 , A1 , A2 , A3 , A4
Chris@16 180 >
Chris@16 181 {};
Chris@16 182 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
Chris@16 183 struct make_expr_<Tag, Domain , A0 , A1 , A2 , A3 , A4 , A5
Chris@16 184 , void , void , void , void, void>
Chris@16 185 {
Chris@16 186 typedef
Chris@16 187 list6<
Chris@16 188 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type , typename boost::proto::detail::protoify< A3 , Domain >::result_type , typename boost::proto::detail::protoify< A4 , Domain >::result_type , typename boost::proto::detail::protoify< A5 , Domain >::result_type
Chris@16 189 >
Chris@16 190 proto_args;
Chris@16 191 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 192 typedef typename Domain::proto_generator proto_generator;
Chris@16 193 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 194 BOOST_FORCEINLINE
Chris@16 195 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2 , typename add_reference<A3 >::type a3 , typename add_reference<A4 >::type a4 , typename add_reference<A5 >::type a5) const
Chris@16 196 {
Chris@16 197 expr_type const that = {
Chris@16 198 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2) , boost::proto::detail::protoify< A3 , Domain >()(a3) , boost::proto::detail::protoify< A4 , Domain >()(a4) , boost::proto::detail::protoify< A5 , Domain >()(a5)
Chris@16 199 };
Chris@16 200 return proto_generator()(that);
Chris@16 201 }
Chris@16 202 };
Chris@16 203 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
Chris@16 204 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2 , A3 , A4 , A5
Chris@16 205 , void , void , void , void, void>
Chris@16 206 : make_expr_<
Chris@16 207 Tag
Chris@16 208 , typename deduce_domain6<A0 , A1 , A2 , A3 , A4 , A5>::type
Chris@16 209 , A0 , A1 , A2 , A3 , A4 , A5
Chris@16 210 >
Chris@16 211 {};
Chris@16 212 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
Chris@16 213 struct make_expr_<Tag, Domain , A0 , A1 , A2 , A3 , A4 , A5 , A6
Chris@16 214 , void , void , void, void>
Chris@16 215 {
Chris@16 216 typedef
Chris@16 217 list7<
Chris@16 218 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type , typename boost::proto::detail::protoify< A3 , Domain >::result_type , typename boost::proto::detail::protoify< A4 , Domain >::result_type , typename boost::proto::detail::protoify< A5 , Domain >::result_type , typename boost::proto::detail::protoify< A6 , Domain >::result_type
Chris@16 219 >
Chris@16 220 proto_args;
Chris@16 221 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 222 typedef typename Domain::proto_generator proto_generator;
Chris@16 223 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 224 BOOST_FORCEINLINE
Chris@16 225 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2 , typename add_reference<A3 >::type a3 , typename add_reference<A4 >::type a4 , typename add_reference<A5 >::type a5 , typename add_reference<A6 >::type a6) const
Chris@16 226 {
Chris@16 227 expr_type const that = {
Chris@16 228 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2) , boost::proto::detail::protoify< A3 , Domain >()(a3) , boost::proto::detail::protoify< A4 , Domain >()(a4) , boost::proto::detail::protoify< A5 , Domain >()(a5) , boost::proto::detail::protoify< A6 , Domain >()(a6)
Chris@16 229 };
Chris@16 230 return proto_generator()(that);
Chris@16 231 }
Chris@16 232 };
Chris@16 233 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
Chris@16 234 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2 , A3 , A4 , A5 , A6
Chris@16 235 , void , void , void, void>
Chris@16 236 : make_expr_<
Chris@16 237 Tag
Chris@16 238 , typename deduce_domain7<A0 , A1 , A2 , A3 , A4 , A5 , A6>::type
Chris@16 239 , A0 , A1 , A2 , A3 , A4 , A5 , A6
Chris@16 240 >
Chris@16 241 {};
Chris@16 242 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
Chris@16 243 struct make_expr_<Tag, Domain , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
Chris@16 244 , void , void, void>
Chris@16 245 {
Chris@16 246 typedef
Chris@16 247 list8<
Chris@16 248 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type , typename boost::proto::detail::protoify< A3 , Domain >::result_type , typename boost::proto::detail::protoify< A4 , Domain >::result_type , typename boost::proto::detail::protoify< A5 , Domain >::result_type , typename boost::proto::detail::protoify< A6 , Domain >::result_type , typename boost::proto::detail::protoify< A7 , Domain >::result_type
Chris@16 249 >
Chris@16 250 proto_args;
Chris@16 251 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 252 typedef typename Domain::proto_generator proto_generator;
Chris@16 253 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 254 BOOST_FORCEINLINE
Chris@16 255 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2 , typename add_reference<A3 >::type a3 , typename add_reference<A4 >::type a4 , typename add_reference<A5 >::type a5 , typename add_reference<A6 >::type a6 , typename add_reference<A7 >::type a7) const
Chris@16 256 {
Chris@16 257 expr_type const that = {
Chris@16 258 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2) , boost::proto::detail::protoify< A3 , Domain >()(a3) , boost::proto::detail::protoify< A4 , Domain >()(a4) , boost::proto::detail::protoify< A5 , Domain >()(a5) , boost::proto::detail::protoify< A6 , Domain >()(a6) , boost::proto::detail::protoify< A7 , Domain >()(a7)
Chris@16 259 };
Chris@16 260 return proto_generator()(that);
Chris@16 261 }
Chris@16 262 };
Chris@16 263 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
Chris@16 264 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
Chris@16 265 , void , void, void>
Chris@16 266 : make_expr_<
Chris@16 267 Tag
Chris@16 268 , typename deduce_domain8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type
Chris@16 269 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
Chris@16 270 >
Chris@16 271 {};
Chris@16 272 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
Chris@16 273 struct make_expr_<Tag, Domain , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
Chris@16 274 , void, void>
Chris@16 275 {
Chris@16 276 typedef
Chris@16 277 list9<
Chris@16 278 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type , typename boost::proto::detail::protoify< A3 , Domain >::result_type , typename boost::proto::detail::protoify< A4 , Domain >::result_type , typename boost::proto::detail::protoify< A5 , Domain >::result_type , typename boost::proto::detail::protoify< A6 , Domain >::result_type , typename boost::proto::detail::protoify< A7 , Domain >::result_type , typename boost::proto::detail::protoify< A8 , Domain >::result_type
Chris@16 279 >
Chris@16 280 proto_args;
Chris@16 281 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 282 typedef typename Domain::proto_generator proto_generator;
Chris@16 283 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 284 BOOST_FORCEINLINE
Chris@16 285 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2 , typename add_reference<A3 >::type a3 , typename add_reference<A4 >::type a4 , typename add_reference<A5 >::type a5 , typename add_reference<A6 >::type a6 , typename add_reference<A7 >::type a7 , typename add_reference<A8 >::type a8) const
Chris@16 286 {
Chris@16 287 expr_type const that = {
Chris@16 288 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2) , boost::proto::detail::protoify< A3 , Domain >()(a3) , boost::proto::detail::protoify< A4 , Domain >()(a4) , boost::proto::detail::protoify< A5 , Domain >()(a5) , boost::proto::detail::protoify< A6 , Domain >()(a6) , boost::proto::detail::protoify< A7 , Domain >()(a7) , boost::proto::detail::protoify< A8 , Domain >()(a8)
Chris@16 289 };
Chris@16 290 return proto_generator()(that);
Chris@16 291 }
Chris@16 292 };
Chris@16 293 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
Chris@16 294 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
Chris@16 295 , void, void>
Chris@16 296 : make_expr_<
Chris@16 297 Tag
Chris@16 298 , typename deduce_domain9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type
Chris@16 299 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
Chris@16 300 >
Chris@16 301 {};
Chris@16 302 template<typename Tag, typename Domain , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
Chris@16 303 struct make_expr_<Tag, Domain , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
Chris@16 304 , void>
Chris@16 305 {
Chris@16 306 typedef
Chris@16 307 list10<
Chris@16 308 typename boost::proto::detail::protoify< A0 , Domain >::result_type , typename boost::proto::detail::protoify< A1 , Domain >::result_type , typename boost::proto::detail::protoify< A2 , Domain >::result_type , typename boost::proto::detail::protoify< A3 , Domain >::result_type , typename boost::proto::detail::protoify< A4 , Domain >::result_type , typename boost::proto::detail::protoify< A5 , Domain >::result_type , typename boost::proto::detail::protoify< A6 , Domain >::result_type , typename boost::proto::detail::protoify< A7 , Domain >::result_type , typename boost::proto::detail::protoify< A8 , Domain >::result_type , typename boost::proto::detail::protoify< A9 , Domain >::result_type
Chris@16 309 >
Chris@16 310 proto_args;
Chris@16 311 typedef typename base_expr<Domain, Tag, proto_args>::type expr_type;
Chris@16 312 typedef typename Domain::proto_generator proto_generator;
Chris@16 313 typedef typename proto_generator::template result<proto_generator(expr_type)>::type result_type;
Chris@16 314 BOOST_FORCEINLINE
Chris@16 315 result_type operator()(typename add_reference<A0 >::type a0 , typename add_reference<A1 >::type a1 , typename add_reference<A2 >::type a2 , typename add_reference<A3 >::type a3 , typename add_reference<A4 >::type a4 , typename add_reference<A5 >::type a5 , typename add_reference<A6 >::type a6 , typename add_reference<A7 >::type a7 , typename add_reference<A8 >::type a8 , typename add_reference<A9 >::type a9) const
Chris@16 316 {
Chris@16 317 expr_type const that = {
Chris@16 318 boost::proto::detail::protoify< A0 , Domain >()(a0) , boost::proto::detail::protoify< A1 , Domain >()(a1) , boost::proto::detail::protoify< A2 , Domain >()(a2) , boost::proto::detail::protoify< A3 , Domain >()(a3) , boost::proto::detail::protoify< A4 , Domain >()(a4) , boost::proto::detail::protoify< A5 , Domain >()(a5) , boost::proto::detail::protoify< A6 , Domain >()(a6) , boost::proto::detail::protoify< A7 , Domain >()(a7) , boost::proto::detail::protoify< A8 , Domain >()(a8) , boost::proto::detail::protoify< A9 , Domain >()(a9)
Chris@16 319 };
Chris@16 320 return proto_generator()(that);
Chris@16 321 }
Chris@16 322 };
Chris@16 323 template<typename Tag , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
Chris@16 324 struct make_expr_<Tag, deduce_domain , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
Chris@16 325 , void>
Chris@16 326 : make_expr_<
Chris@16 327 Tag
Chris@16 328 , typename deduce_domain10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type
Chris@16 329 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
Chris@16 330 >
Chris@16 331 {};