1 2 // Copyright Aleksey Gurtovoy 2000-2004 3 // 4 // Distributed under the Boost Software License, Version 1.0. 5 // (See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt) 7 // 8 9 // Preprocessed version of "boost/mpl/apply_wrap.hpp" header 10 // -- DO NOT modify by hand! 11 12 namespace boost { namespace mpl { 13 14 template< 15 int N, typename F 16 > 17 struct apply_wrap_impl0; 18 19 template< 20 typename F 21 > 22 struct apply_wrap_impl0< 23 0 24 , F 25 26 > 27 { 28 typedef typename F::template apply< 29 30 /// since the defaults are "lost", we have to pass *something* even for nullary 31 /// metafunction classes 32 na 33 > type; 34 }; 35 36 template< 37 typename F 38 > 39 struct apply_wrap_impl0< 40 1 41 , F 42 43 > 44 { 45 typedef typename F::template apply< 46 47 na 48 > type; 49 }; 50 51 template< 52 typename F 53 > 54 struct apply_wrap_impl0< 55 2 56 , F 57 58 > 59 { 60 typedef typename F::template apply< 61 62 na, na 63 64 > type; 65 }; 66 67 template< 68 typename F 69 > 70 struct apply_wrap_impl0< 71 3 72 , F 73 74 > 75 { 76 typedef typename F::template apply< 77 78 na, na, na 79 80 > type; 81 }; 82 83 template< 84 typename F 85 > 86 struct apply_wrap_impl0< 87 4 88 , F 89 90 > 91 { 92 typedef typename F::template apply< 93 94 na, na, na, na 95 96 > type; 97 }; 98 99 template< 100 typename F 101 > 102 struct apply_wrap_impl0< 103 5 104 , F 105 106 > 107 { 108 typedef typename F::template apply< 109 110 na, na, na, na, na 111 112 > type; 113 }; 114 115 template< 116 typename F 117 > 118 struct apply_wrap0 119 : apply_wrap_impl0< 120 ::boost::mpl::aux::arity< F,0 >::value 121 , F 122 123 >::type 124 { 125 }; 126 127 template< 128 int N, typename F, typename T1 129 > 130 struct apply_wrap_impl1; 131 132 template< 133 typename F, typename T1 134 > 135 struct apply_wrap_impl1< 136 1 137 , F 138 , T1 139 > 140 { 141 typedef typename F::template apply< 142 T1 143 > type; 144 }; 145 146 template< 147 typename F, typename T1 148 > 149 struct apply_wrap_impl1< 150 2 151 , F 152 , T1 153 > 154 { 155 typedef typename F::template apply< 156 T1 157 , na 158 159 > type; 160 }; 161 162 template< 163 typename F, typename T1 164 > 165 struct apply_wrap_impl1< 166 3 167 , F 168 , T1 169 > 170 { 171 typedef typename F::template apply< 172 T1 173 , na, na 174 175 > type; 176 }; 177 178 template< 179 typename F, typename T1 180 > 181 struct apply_wrap_impl1< 182 4 183 , F 184 , T1 185 > 186 { 187 typedef typename F::template apply< 188 T1 189 , na, na, na 190 191 > type; 192 }; 193 194 template< 195 typename F, typename T1 196 > 197 struct apply_wrap_impl1< 198 5 199 , F 200 , T1 201 > 202 { 203 typedef typename F::template apply< 204 T1 205 , na, na, na, na 206 207 > type; 208 }; 209 210 template< 211 typename F, typename T1 212 > 213 struct apply_wrap1 214 : apply_wrap_impl1< 215 ::boost::mpl::aux::arity< F,1 >::value 216 , F 217 , T1 218 >::type 219 { 220 }; 221 222 template< 223 int N, typename F, typename T1, typename T2 224 > 225 struct apply_wrap_impl2; 226 227 template< 228 typename F, typename T1, typename T2 229 > 230 struct apply_wrap_impl2< 231 2 232 , F 233 , T1, T2 234 > 235 { 236 typedef typename F::template apply< 237 T1, T2 238 239 > type; 240 }; 241 242 template< 243 typename F, typename T1, typename T2 244 > 245 struct apply_wrap_impl2< 246 3 247 , F 248 , T1, T2 249 > 250 { 251 typedef typename F::template apply< 252 T1, T2 253 254 , na 255 256 > type; 257 }; 258 259 template< 260 typename F, typename T1, typename T2 261 > 262 struct apply_wrap_impl2< 263 4 264 , F 265 , T1, T2 266 > 267 { 268 typedef typename F::template apply< 269 T1, T2 270 271 , na, na 272 273 > type; 274 }; 275 276 template< 277 typename F, typename T1, typename T2 278 > 279 struct apply_wrap_impl2< 280 5 281 , F 282 , T1, T2 283 > 284 { 285 typedef typename F::template apply< 286 T1, T2 287 288 , na, na, na 289 290 > type; 291 }; 292 293 template< 294 typename F, typename T1, typename T2 295 > 296 struct apply_wrap2 297 : apply_wrap_impl2< 298 ::boost::mpl::aux::arity< F,2 >::value 299 , F 300 , T1, T2 301 >::type 302 { 303 }; 304 305 template< 306 int N, typename F, typename T1, typename T2, typename T3 307 > 308 struct apply_wrap_impl3; 309 310 template< 311 typename F, typename T1, typename T2, typename T3 312 > 313 struct apply_wrap_impl3< 314 3 315 , F 316 , T1, T2, T3 317 > 318 { 319 typedef typename F::template apply< 320 T1, T2, T3 321 322 > type; 323 }; 324 325 template< 326 typename F, typename T1, typename T2, typename T3 327 > 328 struct apply_wrap_impl3< 329 4 330 , F 331 , T1, T2, T3 332 > 333 { 334 typedef typename F::template apply< 335 T1, T2, T3 336 337 , na 338 339 > type; 340 }; 341 342 template< 343 typename F, typename T1, typename T2, typename T3 344 > 345 struct apply_wrap_impl3< 346 5 347 , F 348 , T1, T2, T3 349 > 350 { 351 typedef typename F::template apply< 352 T1, T2, T3 353 354 , na, na 355 356 > type; 357 }; 358 359 template< 360 typename F, typename T1, typename T2, typename T3 361 > 362 struct apply_wrap3 363 : apply_wrap_impl3< 364 ::boost::mpl::aux::arity< F,3 >::value 365 , F 366 , T1, T2, T3 367 >::type 368 { 369 }; 370 371 template< 372 int N, typename F, typename T1, typename T2, typename T3, typename T4 373 > 374 struct apply_wrap_impl4; 375 376 template< 377 typename F, typename T1, typename T2, typename T3, typename T4 378 > 379 struct apply_wrap_impl4< 380 4 381 , F 382 , T1, T2, T3, T4 383 > 384 { 385 typedef typename F::template apply< 386 T1, T2, T3, T4 387 388 > type; 389 }; 390 391 template< 392 typename F, typename T1, typename T2, typename T3, typename T4 393 > 394 struct apply_wrap_impl4< 395 5 396 , F 397 , T1, T2, T3, T4 398 > 399 { 400 typedef typename F::template apply< 401 T1, T2, T3, T4 402 403 , na 404 405 > type; 406 }; 407 408 template< 409 typename F, typename T1, typename T2, typename T3, typename T4 410 > 411 struct apply_wrap4 412 : apply_wrap_impl4< 413 ::boost::mpl::aux::arity< F,4 >::value 414 , F 415 , T1, T2, T3, T4 416 >::type 417 { 418 }; 419 420 template< 421 int N, typename F, typename T1, typename T2, typename T3, typename T4 422 , typename T5 423 > 424 struct apply_wrap_impl5; 425 426 template< 427 typename F, typename T1, typename T2, typename T3, typename T4 428 , typename T5 429 > 430 struct apply_wrap_impl5< 431 5 432 , F 433 , T1, T2, T3, T4, T5 434 > 435 { 436 typedef typename F::template apply< 437 T1, T2, T3, T4, T5 438 439 > type; 440 }; 441 442 template< 443 typename F, typename T1, typename T2, typename T3, typename T4 444 , typename T5 445 > 446 struct apply_wrap5 447 : apply_wrap_impl5< 448 ::boost::mpl::aux::arity< F,5 >::value 449 , F 450 , T1, T2, T3, T4, T5 451 >::type 452 { 453 }; 454 455 }} 456 457