annotate DEPENDENCIES/generic/include/boost/proto/transform/detail/preprocessed/call.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 ///////////////////////////////////////////////////////////////////////////////
Chris@16 2 /// \file call.hpp
Chris@16 3 /// Contains definition of the call<> transform.
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
Chris@16 9
Chris@16 10
Chris@16 11 template<typename Fun , typename A0>
Chris@16 12 struct call<Fun(A0...)> : transform<call<Fun(A0...)> >
Chris@16 13 {
Chris@16 14 template<typename Expr, typename State, typename Data>
Chris@16 15 struct impl
Chris@16 16 : call<
Chris@16 17 typename detail::expand_pattern<
Chris@16 18 proto::arity_of<Expr>::value
Chris@16 19 , A0
Chris@16 20 , detail::expand_pattern_rest_0<
Chris@16 21 Fun
Chris@16 22
Chris@16 23 >
Chris@16 24 >::type
Chris@16 25 >::template impl<Expr, State, Data>
Chris@16 26 {};
Chris@16 27 };
Chris@16 28
Chris@16 29
Chris@16 30
Chris@16 31 template<typename Fun , typename A0 , typename A1>
Chris@16 32 struct call<Fun(A0 , A1...)> : transform<call<Fun(A0 , A1...)> >
Chris@16 33 {
Chris@16 34 template<typename Expr, typename State, typename Data>
Chris@16 35 struct impl
Chris@16 36 : call<
Chris@16 37 typename detail::expand_pattern<
Chris@16 38 proto::arity_of<Expr>::value
Chris@16 39 , A1
Chris@16 40 , detail::expand_pattern_rest_1<
Chris@16 41 Fun
Chris@16 42 , A0
Chris@16 43 >
Chris@16 44 >::type
Chris@16 45 >::template impl<Expr, State, Data>
Chris@16 46 {};
Chris@16 47 };
Chris@16 48
Chris@16 49
Chris@16 50
Chris@16 51 template<typename Fun , typename A0 , typename A1 , typename A2>
Chris@16 52 struct call<Fun(A0 , A1 , A2...)> : transform<call<Fun(A0 , A1 , A2...)> >
Chris@16 53 {
Chris@16 54 template<typename Expr, typename State, typename Data>
Chris@16 55 struct impl
Chris@16 56 : call<
Chris@16 57 typename detail::expand_pattern<
Chris@16 58 proto::arity_of<Expr>::value
Chris@16 59 , A2
Chris@16 60 , detail::expand_pattern_rest_2<
Chris@16 61 Fun
Chris@16 62 , A0 , A1
Chris@16 63 >
Chris@16 64 >::type
Chris@16 65 >::template impl<Expr, State, Data>
Chris@16 66 {};
Chris@16 67 };
Chris@16 68
Chris@16 69
Chris@16 70
Chris@16 71 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3>
Chris@16 72 struct call<Fun(A0 , A1 , A2 , A3)> : transform<call<Fun(A0 , A1 , A2 , A3)> >
Chris@16 73 {
Chris@16 74 template<typename Expr, typename State, typename Data>
Chris@16 75 struct impl : transform_impl<Expr, State, Data>
Chris@16 76 {
Chris@16 77 typedef typename when<_, A0>::template impl<Expr, State, Data> a0; typedef typename a0::result_type b0; typedef typename when<_, A1>::template impl<Expr, State, Data> a1; typedef typename a1::result_type b1; typedef typename when<_, A2>::template impl<Expr, State, Data> a2; typedef typename a2::result_type b2; typedef typename when<_, A3>::template impl<Expr, State, Data> a3; typedef typename a3::result_type b3;
Chris@16 78 typedef detail::poly_function_traits<Fun, Fun(b0 , b1 , b2 , b3)> function_traits;
Chris@16 79 typedef typename function_traits::result_type result_type;
Chris@16 80
Chris@16 81
Chris@16 82
Chris@16 83
Chris@16 84
Chris@16 85
Chris@16 86
Chris@16 87 BOOST_FORCEINLINE
Chris@16 88 result_type operator ()(
Chris@16 89 typename impl::expr_param e
Chris@16 90 , typename impl::state_param s
Chris@16 91 , typename impl::data_param d
Chris@16 92 ) const
Chris@16 93 {
Chris@16 94 typedef typename function_traits::function_type function_type;
Chris@16 95 return function_type()(detail::as_lvalue(a0()(e, s, d)) , detail::as_lvalue(a1()(e, s, d)) , detail::as_lvalue(a2()(e, s, d)) , detail::as_lvalue(a3()(e, s, d)));
Chris@16 96 }
Chris@16 97 };
Chris@16 98 };
Chris@16 99
Chris@16 100
Chris@16 101
Chris@16 102 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3>
Chris@16 103 struct call<Fun(A0 , A1 , A2 , A3...)> : transform<call<Fun(A0 , A1 , A2 , A3...)> >
Chris@16 104 {
Chris@16 105 template<typename Expr, typename State, typename Data>
Chris@16 106 struct impl
Chris@16 107 : call<
Chris@16 108 typename detail::expand_pattern<
Chris@16 109 proto::arity_of<Expr>::value
Chris@16 110 , A3
Chris@16 111 , detail::expand_pattern_rest_3<
Chris@16 112 Fun
Chris@16 113 , A0 , A1 , A2
Chris@16 114 >
Chris@16 115 >::type
Chris@16 116 >::template impl<Expr, State, Data>
Chris@16 117 {};
Chris@16 118 };
Chris@16 119
Chris@16 120
Chris@16 121
Chris@16 122 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
Chris@16 123 struct call<Fun(A0 , A1 , A2 , A3 , A4)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4)> >
Chris@16 124 {
Chris@16 125 template<typename Expr, typename State, typename Data>
Chris@16 126 struct impl : transform_impl<Expr, State, Data>
Chris@16 127 {
Chris@16 128 typedef typename when<_, A0>::template impl<Expr, State, Data> a0; typedef typename a0::result_type b0; typedef typename when<_, A1>::template impl<Expr, State, Data> a1; typedef typename a1::result_type b1; typedef typename when<_, A2>::template impl<Expr, State, Data> a2; typedef typename a2::result_type b2; typedef typename when<_, A3>::template impl<Expr, State, Data> a3; typedef typename a3::result_type b3; typedef typename when<_, A4>::template impl<Expr, State, Data> a4; typedef typename a4::result_type b4;
Chris@16 129 typedef detail::poly_function_traits<Fun, Fun(b0 , b1 , b2 , b3 , b4)> function_traits;
Chris@16 130 typedef typename function_traits::result_type result_type;
Chris@16 131
Chris@16 132
Chris@16 133
Chris@16 134
Chris@16 135
Chris@16 136
Chris@16 137
Chris@16 138 BOOST_FORCEINLINE
Chris@16 139 result_type operator ()(
Chris@16 140 typename impl::expr_param e
Chris@16 141 , typename impl::state_param s
Chris@16 142 , typename impl::data_param d
Chris@16 143 ) const
Chris@16 144 {
Chris@16 145 typedef typename function_traits::function_type function_type;
Chris@16 146 return function_type()(detail::as_lvalue(a0()(e, s, d)) , detail::as_lvalue(a1()(e, s, d)) , detail::as_lvalue(a2()(e, s, d)) , detail::as_lvalue(a3()(e, s, d)) , detail::as_lvalue(a4()(e, s, d)));
Chris@16 147 }
Chris@16 148 };
Chris@16 149 };
Chris@16 150
Chris@16 151
Chris@16 152
Chris@16 153 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
Chris@16 154 struct call<Fun(A0 , A1 , A2 , A3 , A4...)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4...)> >
Chris@16 155 {
Chris@16 156 template<typename Expr, typename State, typename Data>
Chris@16 157 struct impl
Chris@16 158 : call<
Chris@16 159 typename detail::expand_pattern<
Chris@16 160 proto::arity_of<Expr>::value
Chris@16 161 , A4
Chris@16 162 , detail::expand_pattern_rest_4<
Chris@16 163 Fun
Chris@16 164 , A0 , A1 , A2 , A3
Chris@16 165 >
Chris@16 166 >::type
Chris@16 167 >::template impl<Expr, State, Data>
Chris@16 168 {};
Chris@16 169 };
Chris@16 170
Chris@16 171
Chris@16 172
Chris@16 173 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
Chris@16 174 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5)> >
Chris@16 175 {
Chris@16 176 template<typename Expr, typename State, typename Data>
Chris@16 177 struct impl : transform_impl<Expr, State, Data>
Chris@16 178 {
Chris@16 179 typedef typename when<_, A0>::template impl<Expr, State, Data> a0; typedef typename a0::result_type b0; typedef typename when<_, A1>::template impl<Expr, State, Data> a1; typedef typename a1::result_type b1; typedef typename when<_, A2>::template impl<Expr, State, Data> a2; typedef typename a2::result_type b2; typedef typename when<_, A3>::template impl<Expr, State, Data> a3; typedef typename a3::result_type b3; typedef typename when<_, A4>::template impl<Expr, State, Data> a4; typedef typename a4::result_type b4; typedef typename when<_, A5>::template impl<Expr, State, Data> a5; typedef typename a5::result_type b5;
Chris@16 180 typedef detail::poly_function_traits<Fun, Fun(b0 , b1 , b2 , b3 , b4 , b5)> function_traits;
Chris@16 181 typedef typename function_traits::result_type result_type;
Chris@16 182
Chris@16 183
Chris@16 184
Chris@16 185
Chris@16 186
Chris@16 187
Chris@16 188
Chris@16 189 BOOST_FORCEINLINE
Chris@16 190 result_type operator ()(
Chris@16 191 typename impl::expr_param e
Chris@16 192 , typename impl::state_param s
Chris@16 193 , typename impl::data_param d
Chris@16 194 ) const
Chris@16 195 {
Chris@16 196 typedef typename function_traits::function_type function_type;
Chris@16 197 return function_type()(detail::as_lvalue(a0()(e, s, d)) , detail::as_lvalue(a1()(e, s, d)) , detail::as_lvalue(a2()(e, s, d)) , detail::as_lvalue(a3()(e, s, d)) , detail::as_lvalue(a4()(e, s, d)) , detail::as_lvalue(a5()(e, s, d)));
Chris@16 198 }
Chris@16 199 };
Chris@16 200 };
Chris@16 201
Chris@16 202
Chris@16 203
Chris@16 204 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
Chris@16 205 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5...)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5...)> >
Chris@16 206 {
Chris@16 207 template<typename Expr, typename State, typename Data>
Chris@16 208 struct impl
Chris@16 209 : call<
Chris@16 210 typename detail::expand_pattern<
Chris@16 211 proto::arity_of<Expr>::value
Chris@16 212 , A5
Chris@16 213 , detail::expand_pattern_rest_5<
Chris@16 214 Fun
Chris@16 215 , A0 , A1 , A2 , A3 , A4
Chris@16 216 >
Chris@16 217 >::type
Chris@16 218 >::template impl<Expr, State, Data>
Chris@16 219 {};
Chris@16 220 };
Chris@16 221
Chris@16 222
Chris@16 223
Chris@16 224 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
Chris@16 225 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6)> >
Chris@16 226 {
Chris@16 227 template<typename Expr, typename State, typename Data>
Chris@16 228 struct impl : transform_impl<Expr, State, Data>
Chris@16 229 {
Chris@16 230 typedef typename when<_, A0>::template impl<Expr, State, Data> a0; typedef typename a0::result_type b0; typedef typename when<_, A1>::template impl<Expr, State, Data> a1; typedef typename a1::result_type b1; typedef typename when<_, A2>::template impl<Expr, State, Data> a2; typedef typename a2::result_type b2; typedef typename when<_, A3>::template impl<Expr, State, Data> a3; typedef typename a3::result_type b3; typedef typename when<_, A4>::template impl<Expr, State, Data> a4; typedef typename a4::result_type b4; typedef typename when<_, A5>::template impl<Expr, State, Data> a5; typedef typename a5::result_type b5; typedef typename when<_, A6>::template impl<Expr, State, Data> a6; typedef typename a6::result_type b6;
Chris@16 231 typedef detail::poly_function_traits<Fun, Fun(b0 , b1 , b2 , b3 , b4 , b5 , b6)> function_traits;
Chris@16 232 typedef typename function_traits::result_type result_type;
Chris@16 233
Chris@16 234
Chris@16 235
Chris@16 236
Chris@16 237
Chris@16 238
Chris@16 239
Chris@16 240 BOOST_FORCEINLINE
Chris@16 241 result_type operator ()(
Chris@16 242 typename impl::expr_param e
Chris@16 243 , typename impl::state_param s
Chris@16 244 , typename impl::data_param d
Chris@16 245 ) const
Chris@16 246 {
Chris@16 247 typedef typename function_traits::function_type function_type;
Chris@16 248 return function_type()(detail::as_lvalue(a0()(e, s, d)) , detail::as_lvalue(a1()(e, s, d)) , detail::as_lvalue(a2()(e, s, d)) , detail::as_lvalue(a3()(e, s, d)) , detail::as_lvalue(a4()(e, s, d)) , detail::as_lvalue(a5()(e, s, d)) , detail::as_lvalue(a6()(e, s, d)));
Chris@16 249 }
Chris@16 250 };
Chris@16 251 };
Chris@16 252
Chris@16 253
Chris@16 254
Chris@16 255 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
Chris@16 256 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6...)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6...)> >
Chris@16 257 {
Chris@16 258 template<typename Expr, typename State, typename Data>
Chris@16 259 struct impl
Chris@16 260 : call<
Chris@16 261 typename detail::expand_pattern<
Chris@16 262 proto::arity_of<Expr>::value
Chris@16 263 , A6
Chris@16 264 , detail::expand_pattern_rest_6<
Chris@16 265 Fun
Chris@16 266 , A0 , A1 , A2 , A3 , A4 , A5
Chris@16 267 >
Chris@16 268 >::type
Chris@16 269 >::template impl<Expr, State, Data>
Chris@16 270 {};
Chris@16 271 };
Chris@16 272
Chris@16 273
Chris@16 274
Chris@16 275 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
Chris@16 276 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)> >
Chris@16 277 {
Chris@16 278 template<typename Expr, typename State, typename Data>
Chris@16 279 struct impl : transform_impl<Expr, State, Data>
Chris@16 280 {
Chris@16 281 typedef typename when<_, A0>::template impl<Expr, State, Data> a0; typedef typename a0::result_type b0; typedef typename when<_, A1>::template impl<Expr, State, Data> a1; typedef typename a1::result_type b1; typedef typename when<_, A2>::template impl<Expr, State, Data> a2; typedef typename a2::result_type b2; typedef typename when<_, A3>::template impl<Expr, State, Data> a3; typedef typename a3::result_type b3; typedef typename when<_, A4>::template impl<Expr, State, Data> a4; typedef typename a4::result_type b4; typedef typename when<_, A5>::template impl<Expr, State, Data> a5; typedef typename a5::result_type b5; typedef typename when<_, A6>::template impl<Expr, State, Data> a6; typedef typename a6::result_type b6; typedef typename when<_, A7>::template impl<Expr, State, Data> a7; typedef typename a7::result_type b7;
Chris@16 282 typedef detail::poly_function_traits<Fun, Fun(b0 , b1 , b2 , b3 , b4 , b5 , b6 , b7)> function_traits;
Chris@16 283 typedef typename function_traits::result_type result_type;
Chris@16 284
Chris@16 285
Chris@16 286
Chris@16 287
Chris@16 288
Chris@16 289
Chris@16 290
Chris@16 291 BOOST_FORCEINLINE
Chris@16 292 result_type operator ()(
Chris@16 293 typename impl::expr_param e
Chris@16 294 , typename impl::state_param s
Chris@16 295 , typename impl::data_param d
Chris@16 296 ) const
Chris@16 297 {
Chris@16 298 typedef typename function_traits::function_type function_type;
Chris@16 299 return function_type()(detail::as_lvalue(a0()(e, s, d)) , detail::as_lvalue(a1()(e, s, d)) , detail::as_lvalue(a2()(e, s, d)) , detail::as_lvalue(a3()(e, s, d)) , detail::as_lvalue(a4()(e, s, d)) , detail::as_lvalue(a5()(e, s, d)) , detail::as_lvalue(a6()(e, s, d)) , detail::as_lvalue(a7()(e, s, d)));
Chris@16 300 }
Chris@16 301 };
Chris@16 302 };
Chris@16 303
Chris@16 304
Chris@16 305
Chris@16 306 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
Chris@16 307 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7...)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7...)> >
Chris@16 308 {
Chris@16 309 template<typename Expr, typename State, typename Data>
Chris@16 310 struct impl
Chris@16 311 : call<
Chris@16 312 typename detail::expand_pattern<
Chris@16 313 proto::arity_of<Expr>::value
Chris@16 314 , A7
Chris@16 315 , detail::expand_pattern_rest_7<
Chris@16 316 Fun
Chris@16 317 , A0 , A1 , A2 , A3 , A4 , A5 , A6
Chris@16 318 >
Chris@16 319 >::type
Chris@16 320 >::template impl<Expr, State, Data>
Chris@16 321 {};
Chris@16 322 };
Chris@16 323
Chris@16 324
Chris@16 325
Chris@16 326 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
Chris@16 327 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)> >
Chris@16 328 {
Chris@16 329 template<typename Expr, typename State, typename Data>
Chris@16 330 struct impl : transform_impl<Expr, State, Data>
Chris@16 331 {
Chris@16 332 typedef typename when<_, A0>::template impl<Expr, State, Data> a0; typedef typename a0::result_type b0; typedef typename when<_, A1>::template impl<Expr, State, Data> a1; typedef typename a1::result_type b1; typedef typename when<_, A2>::template impl<Expr, State, Data> a2; typedef typename a2::result_type b2; typedef typename when<_, A3>::template impl<Expr, State, Data> a3; typedef typename a3::result_type b3; typedef typename when<_, A4>::template impl<Expr, State, Data> a4; typedef typename a4::result_type b4; typedef typename when<_, A5>::template impl<Expr, State, Data> a5; typedef typename a5::result_type b5; typedef typename when<_, A6>::template impl<Expr, State, Data> a6; typedef typename a6::result_type b6; typedef typename when<_, A7>::template impl<Expr, State, Data> a7; typedef typename a7::result_type b7; typedef typename when<_, A8>::template impl<Expr, State, Data> a8; typedef typename a8::result_type b8;
Chris@16 333 typedef detail::poly_function_traits<Fun, Fun(b0 , b1 , b2 , b3 , b4 , b5 , b6 , b7 , b8)> function_traits;
Chris@16 334 typedef typename function_traits::result_type result_type;
Chris@16 335
Chris@16 336
Chris@16 337
Chris@16 338
Chris@16 339
Chris@16 340
Chris@16 341
Chris@16 342 BOOST_FORCEINLINE
Chris@16 343 result_type operator ()(
Chris@16 344 typename impl::expr_param e
Chris@16 345 , typename impl::state_param s
Chris@16 346 , typename impl::data_param d
Chris@16 347 ) const
Chris@16 348 {
Chris@16 349 typedef typename function_traits::function_type function_type;
Chris@16 350 return function_type()(detail::as_lvalue(a0()(e, s, d)) , detail::as_lvalue(a1()(e, s, d)) , detail::as_lvalue(a2()(e, s, d)) , detail::as_lvalue(a3()(e, s, d)) , detail::as_lvalue(a4()(e, s, d)) , detail::as_lvalue(a5()(e, s, d)) , detail::as_lvalue(a6()(e, s, d)) , detail::as_lvalue(a7()(e, s, d)) , detail::as_lvalue(a8()(e, s, d)));
Chris@16 351 }
Chris@16 352 };
Chris@16 353 };
Chris@16 354
Chris@16 355
Chris@16 356
Chris@16 357 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
Chris@16 358 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8...)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8...)> >
Chris@16 359 {
Chris@16 360 template<typename Expr, typename State, typename Data>
Chris@16 361 struct impl
Chris@16 362 : call<
Chris@16 363 typename detail::expand_pattern<
Chris@16 364 proto::arity_of<Expr>::value
Chris@16 365 , A8
Chris@16 366 , detail::expand_pattern_rest_8<
Chris@16 367 Fun
Chris@16 368 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
Chris@16 369 >
Chris@16 370 >::type
Chris@16 371 >::template impl<Expr, State, Data>
Chris@16 372 {};
Chris@16 373 };
Chris@16 374
Chris@16 375
Chris@16 376
Chris@16 377 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
Chris@16 378 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)> >
Chris@16 379 {
Chris@16 380 template<typename Expr, typename State, typename Data>
Chris@16 381 struct impl : transform_impl<Expr, State, Data>
Chris@16 382 {
Chris@16 383 typedef typename when<_, A0>::template impl<Expr, State, Data> a0; typedef typename a0::result_type b0; typedef typename when<_, A1>::template impl<Expr, State, Data> a1; typedef typename a1::result_type b1; typedef typename when<_, A2>::template impl<Expr, State, Data> a2; typedef typename a2::result_type b2; typedef typename when<_, A3>::template impl<Expr, State, Data> a3; typedef typename a3::result_type b3; typedef typename when<_, A4>::template impl<Expr, State, Data> a4; typedef typename a4::result_type b4; typedef typename when<_, A5>::template impl<Expr, State, Data> a5; typedef typename a5::result_type b5; typedef typename when<_, A6>::template impl<Expr, State, Data> a6; typedef typename a6::result_type b6; typedef typename when<_, A7>::template impl<Expr, State, Data> a7; typedef typename a7::result_type b7; typedef typename when<_, A8>::template impl<Expr, State, Data> a8; typedef typename a8::result_type b8; typedef typename when<_, A9>::template impl<Expr, State, Data> a9; typedef typename a9::result_type b9;
Chris@16 384 typedef detail::poly_function_traits<Fun, Fun(b0 , b1 , b2 , b3 , b4 , b5 , b6 , b7 , b8 , b9)> function_traits;
Chris@16 385 typedef typename function_traits::result_type result_type;
Chris@16 386
Chris@16 387
Chris@16 388
Chris@16 389
Chris@16 390
Chris@16 391
Chris@16 392
Chris@16 393 BOOST_FORCEINLINE
Chris@16 394 result_type operator ()(
Chris@16 395 typename impl::expr_param e
Chris@16 396 , typename impl::state_param s
Chris@16 397 , typename impl::data_param d
Chris@16 398 ) const
Chris@16 399 {
Chris@16 400 typedef typename function_traits::function_type function_type;
Chris@16 401 return function_type()(detail::as_lvalue(a0()(e, s, d)) , detail::as_lvalue(a1()(e, s, d)) , detail::as_lvalue(a2()(e, s, d)) , detail::as_lvalue(a3()(e, s, d)) , detail::as_lvalue(a4()(e, s, d)) , detail::as_lvalue(a5()(e, s, d)) , detail::as_lvalue(a6()(e, s, d)) , detail::as_lvalue(a7()(e, s, d)) , detail::as_lvalue(a8()(e, s, d)) , detail::as_lvalue(a9()(e, s, d)));
Chris@16 402 }
Chris@16 403 };
Chris@16 404 };
Chris@16 405
Chris@16 406
Chris@16 407
Chris@16 408 template<typename Fun , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
Chris@16 409 struct call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9...)> : transform<call<Fun(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9...)> >
Chris@16 410 {
Chris@16 411 template<typename Expr, typename State, typename Data>
Chris@16 412 struct impl
Chris@16 413 : call<
Chris@16 414 typename detail::expand_pattern<
Chris@16 415 proto::arity_of<Expr>::value
Chris@16 416 , A9
Chris@16 417 , detail::expand_pattern_rest_9<
Chris@16 418 Fun
Chris@16 419 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
Chris@16 420 >
Chris@16 421 >::type
Chris@16 422 >::template impl<Expr, State, Data>
Chris@16 423 {};
Chris@16 424 };