vector10.hpp 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528
  1. // Copyright Aleksey Gurtovoy 2000-2004
  2. //
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // (See accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. //
  7. // Preprocessed version of "boost/mpl/vector/vector10.hpp" header
  8. // -- DO NOT modify by hand!
  9. namespace boost { namespace mpl {
  10. namespace aux {
  11. template<> struct v_at_impl<0>
  12. {
  13. template< typename V_ > struct result_
  14. {
  15. typedef typename V_::item0 type;
  16. };
  17. };
  18. }
  19. template<>
  20. struct at_impl< aux::vector_tag<0> >
  21. {
  22. template< typename V_, typename N > struct apply
  23. {
  24. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  25. ::template result_<V_>::type type;
  26. };
  27. };
  28. template<>
  29. struct size_impl< aux::vector_tag<0> >
  30. {
  31. template< typename Vector > struct apply
  32. : long_<0>
  33. {
  34. };
  35. };
  36. template<>
  37. struct O1_size_impl< aux::vector_tag<0> >
  38. : size_impl< aux::vector_tag<0> >
  39. {
  40. };
  41. template<>
  42. struct clear_impl< aux::vector_tag<0> >
  43. {
  44. template< typename Vector > struct apply
  45. {
  46. typedef vector0<> type;
  47. };
  48. };
  49. template<
  50. typename T0
  51. >
  52. struct vector1
  53. {
  54. typedef aux::vector_tag<1> tag;
  55. typedef vector1 type;
  56. typedef T0 item0;
  57. typedef void_ item1;
  58. typedef T0 back;
  59. typedef v_iter< type,0 > begin;
  60. typedef v_iter< type,1 > end;
  61. };
  62. template<>
  63. struct push_front_impl< aux::vector_tag<0> >
  64. {
  65. template< typename Vector, typename T > struct apply
  66. {
  67. typedef vector1<
  68. T
  69. > type;
  70. };
  71. };
  72. template<>
  73. struct pop_front_impl< aux::vector_tag<1> >
  74. {
  75. template< typename Vector > struct apply
  76. {
  77. typedef vector0<
  78. > type;
  79. };
  80. };
  81. template<>
  82. struct push_back_impl< aux::vector_tag<0> >
  83. {
  84. template< typename Vector, typename T > struct apply
  85. {
  86. typedef vector1<
  87. T
  88. > type;
  89. };
  90. };
  91. template<>
  92. struct pop_back_impl< aux::vector_tag<1> >
  93. {
  94. template< typename Vector > struct apply
  95. {
  96. typedef vector0<
  97. > type;
  98. };
  99. };
  100. namespace aux {
  101. template<> struct v_at_impl<1>
  102. {
  103. template< typename V_ > struct result_
  104. {
  105. typedef typename V_::item1 type;
  106. };
  107. };
  108. }
  109. template<>
  110. struct at_impl< aux::vector_tag<1> >
  111. {
  112. template< typename V_, typename N > struct apply
  113. {
  114. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  115. ::template result_<V_>::type type;
  116. };
  117. };
  118. template<>
  119. struct front_impl< aux::vector_tag<1> >
  120. {
  121. template< typename Vector > struct apply
  122. {
  123. typedef typename Vector::item0 type;
  124. };
  125. };
  126. template<>
  127. struct back_impl< aux::vector_tag<1> >
  128. {
  129. template< typename Vector > struct apply
  130. {
  131. typedef typename Vector::back type;
  132. };
  133. };
  134. template<>
  135. struct empty_impl< aux::vector_tag<1> >
  136. {
  137. template< typename Vector > struct apply
  138. : false_
  139. {
  140. };
  141. };
  142. template<>
  143. struct size_impl< aux::vector_tag<1> >
  144. {
  145. template< typename Vector > struct apply
  146. : long_<1>
  147. {
  148. };
  149. };
  150. template<>
  151. struct O1_size_impl< aux::vector_tag<1> >
  152. : size_impl< aux::vector_tag<1> >
  153. {
  154. };
  155. template<>
  156. struct clear_impl< aux::vector_tag<1> >
  157. {
  158. template< typename Vector > struct apply
  159. {
  160. typedef vector0<> type;
  161. };
  162. };
  163. template<
  164. typename T0, typename T1
  165. >
  166. struct vector2
  167. {
  168. typedef aux::vector_tag<2> tag;
  169. typedef vector2 type;
  170. typedef T0 item0;
  171. typedef T1 item1;
  172. typedef void_ item2;
  173. typedef T1 back;
  174. typedef v_iter< type,0 > begin;
  175. typedef v_iter< type,2 > end;
  176. };
  177. template<>
  178. struct push_front_impl< aux::vector_tag<1> >
  179. {
  180. template< typename Vector, typename T > struct apply
  181. {
  182. typedef vector2<
  183. T
  184. ,
  185. typename Vector::item0
  186. > type;
  187. };
  188. };
  189. template<>
  190. struct pop_front_impl< aux::vector_tag<2> >
  191. {
  192. template< typename Vector > struct apply
  193. {
  194. typedef vector1<
  195. typename Vector::item1
  196. > type;
  197. };
  198. };
  199. template<>
  200. struct push_back_impl< aux::vector_tag<1> >
  201. {
  202. template< typename Vector, typename T > struct apply
  203. {
  204. typedef vector2<
  205. typename Vector::item0
  206. ,
  207. T
  208. > type;
  209. };
  210. };
  211. template<>
  212. struct pop_back_impl< aux::vector_tag<2> >
  213. {
  214. template< typename Vector > struct apply
  215. {
  216. typedef vector1<
  217. typename Vector::item0
  218. > type;
  219. };
  220. };
  221. namespace aux {
  222. template<> struct v_at_impl<2>
  223. {
  224. template< typename V_ > struct result_
  225. {
  226. typedef typename V_::item2 type;
  227. };
  228. };
  229. }
  230. template<>
  231. struct at_impl< aux::vector_tag<2> >
  232. {
  233. template< typename V_, typename N > struct apply
  234. {
  235. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  236. ::template result_<V_>::type type;
  237. };
  238. };
  239. template<>
  240. struct front_impl< aux::vector_tag<2> >
  241. {
  242. template< typename Vector > struct apply
  243. {
  244. typedef typename Vector::item0 type;
  245. };
  246. };
  247. template<>
  248. struct back_impl< aux::vector_tag<2> >
  249. {
  250. template< typename Vector > struct apply
  251. {
  252. typedef typename Vector::back type;
  253. };
  254. };
  255. template<>
  256. struct empty_impl< aux::vector_tag<2> >
  257. {
  258. template< typename Vector > struct apply
  259. : false_
  260. {
  261. };
  262. };
  263. template<>
  264. struct size_impl< aux::vector_tag<2> >
  265. {
  266. template< typename Vector > struct apply
  267. : long_<2>
  268. {
  269. };
  270. };
  271. template<>
  272. struct O1_size_impl< aux::vector_tag<2> >
  273. : size_impl< aux::vector_tag<2> >
  274. {
  275. };
  276. template<>
  277. struct clear_impl< aux::vector_tag<2> >
  278. {
  279. template< typename Vector > struct apply
  280. {
  281. typedef vector0<> type;
  282. };
  283. };
  284. template<
  285. typename T0, typename T1, typename T2
  286. >
  287. struct vector3
  288. {
  289. typedef aux::vector_tag<3> tag;
  290. typedef vector3 type;
  291. typedef T0 item0;
  292. typedef T1 item1;
  293. typedef T2 item2;
  294. typedef void_ item3;
  295. typedef T2 back;
  296. typedef v_iter< type,0 > begin;
  297. typedef v_iter< type,3 > end;
  298. };
  299. template<>
  300. struct push_front_impl< aux::vector_tag<2> >
  301. {
  302. template< typename Vector, typename T > struct apply
  303. {
  304. typedef vector3<
  305. T
  306. ,
  307. typename Vector::item0, typename Vector::item1
  308. > type;
  309. };
  310. };
  311. template<>
  312. struct pop_front_impl< aux::vector_tag<3> >
  313. {
  314. template< typename Vector > struct apply
  315. {
  316. typedef vector2<
  317. typename Vector::item1, typename Vector::item2
  318. > type;
  319. };
  320. };
  321. template<>
  322. struct push_back_impl< aux::vector_tag<2> >
  323. {
  324. template< typename Vector, typename T > struct apply
  325. {
  326. typedef vector3<
  327. typename Vector::item0, typename Vector::item1
  328. ,
  329. T
  330. > type;
  331. };
  332. };
  333. template<>
  334. struct pop_back_impl< aux::vector_tag<3> >
  335. {
  336. template< typename Vector > struct apply
  337. {
  338. typedef vector2<
  339. typename Vector::item0, typename Vector::item1
  340. > type;
  341. };
  342. };
  343. namespace aux {
  344. template<> struct v_at_impl<3>
  345. {
  346. template< typename V_ > struct result_
  347. {
  348. typedef typename V_::item3 type;
  349. };
  350. };
  351. }
  352. template<>
  353. struct at_impl< aux::vector_tag<3> >
  354. {
  355. template< typename V_, typename N > struct apply
  356. {
  357. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  358. ::template result_<V_>::type type;
  359. };
  360. };
  361. template<>
  362. struct front_impl< aux::vector_tag<3> >
  363. {
  364. template< typename Vector > struct apply
  365. {
  366. typedef typename Vector::item0 type;
  367. };
  368. };
  369. template<>
  370. struct back_impl< aux::vector_tag<3> >
  371. {
  372. template< typename Vector > struct apply
  373. {
  374. typedef typename Vector::back type;
  375. };
  376. };
  377. template<>
  378. struct empty_impl< aux::vector_tag<3> >
  379. {
  380. template< typename Vector > struct apply
  381. : false_
  382. {
  383. };
  384. };
  385. template<>
  386. struct size_impl< aux::vector_tag<3> >
  387. {
  388. template< typename Vector > struct apply
  389. : long_<3>
  390. {
  391. };
  392. };
  393. template<>
  394. struct O1_size_impl< aux::vector_tag<3> >
  395. : size_impl< aux::vector_tag<3> >
  396. {
  397. };
  398. template<>
  399. struct clear_impl< aux::vector_tag<3> >
  400. {
  401. template< typename Vector > struct apply
  402. {
  403. typedef vector0<> type;
  404. };
  405. };
  406. template<
  407. typename T0, typename T1, typename T2, typename T3
  408. >
  409. struct vector4
  410. {
  411. typedef aux::vector_tag<4> tag;
  412. typedef vector4 type;
  413. typedef T0 item0;
  414. typedef T1 item1;
  415. typedef T2 item2;
  416. typedef T3 item3;
  417. typedef void_ item4;
  418. typedef T3 back;
  419. typedef v_iter< type,0 > begin;
  420. typedef v_iter< type,4 > end;
  421. };
  422. template<>
  423. struct push_front_impl< aux::vector_tag<3> >
  424. {
  425. template< typename Vector, typename T > struct apply
  426. {
  427. typedef vector4<
  428. T
  429. ,
  430. typename Vector::item0, typename Vector::item1
  431. , typename Vector::item2
  432. > type;
  433. };
  434. };
  435. template<>
  436. struct pop_front_impl< aux::vector_tag<4> >
  437. {
  438. template< typename Vector > struct apply
  439. {
  440. typedef vector3<
  441. typename Vector::item1, typename Vector::item2
  442. , typename Vector::item3
  443. > type;
  444. };
  445. };
  446. template<>
  447. struct push_back_impl< aux::vector_tag<3> >
  448. {
  449. template< typename Vector, typename T > struct apply
  450. {
  451. typedef vector4<
  452. typename Vector::item0, typename Vector::item1
  453. , typename Vector::item2
  454. ,
  455. T
  456. > type;
  457. };
  458. };
  459. template<>
  460. struct pop_back_impl< aux::vector_tag<4> >
  461. {
  462. template< typename Vector > struct apply
  463. {
  464. typedef vector3<
  465. typename Vector::item0, typename Vector::item1
  466. , typename Vector::item2
  467. > type;
  468. };
  469. };
  470. namespace aux {
  471. template<> struct v_at_impl<4>
  472. {
  473. template< typename V_ > struct result_
  474. {
  475. typedef typename V_::item4 type;
  476. };
  477. };
  478. }
  479. template<>
  480. struct at_impl< aux::vector_tag<4> >
  481. {
  482. template< typename V_, typename N > struct apply
  483. {
  484. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  485. ::template result_<V_>::type type;
  486. };
  487. };
  488. template<>
  489. struct front_impl< aux::vector_tag<4> >
  490. {
  491. template< typename Vector > struct apply
  492. {
  493. typedef typename Vector::item0 type;
  494. };
  495. };
  496. template<>
  497. struct back_impl< aux::vector_tag<4> >
  498. {
  499. template< typename Vector > struct apply
  500. {
  501. typedef typename Vector::back type;
  502. };
  503. };
  504. template<>
  505. struct empty_impl< aux::vector_tag<4> >
  506. {
  507. template< typename Vector > struct apply
  508. : false_
  509. {
  510. };
  511. };
  512. template<>
  513. struct size_impl< aux::vector_tag<4> >
  514. {
  515. template< typename Vector > struct apply
  516. : long_<4>
  517. {
  518. };
  519. };
  520. template<>
  521. struct O1_size_impl< aux::vector_tag<4> >
  522. : size_impl< aux::vector_tag<4> >
  523. {
  524. };
  525. template<>
  526. struct clear_impl< aux::vector_tag<4> >
  527. {
  528. template< typename Vector > struct apply
  529. {
  530. typedef vector0<> type;
  531. };
  532. };
  533. template<
  534. typename T0, typename T1, typename T2, typename T3, typename T4
  535. >
  536. struct vector5
  537. {
  538. typedef aux::vector_tag<5> tag;
  539. typedef vector5 type;
  540. typedef T0 item0;
  541. typedef T1 item1;
  542. typedef T2 item2;
  543. typedef T3 item3;
  544. typedef T4 item4;
  545. typedef void_ item5;
  546. typedef T4 back;
  547. typedef v_iter< type,0 > begin;
  548. typedef v_iter< type,5 > end;
  549. };
  550. template<>
  551. struct push_front_impl< aux::vector_tag<4> >
  552. {
  553. template< typename Vector, typename T > struct apply
  554. {
  555. typedef vector5<
  556. T
  557. ,
  558. typename Vector::item0, typename Vector::item1
  559. , typename Vector::item2, typename Vector::item3
  560. > type;
  561. };
  562. };
  563. template<>
  564. struct pop_front_impl< aux::vector_tag<5> >
  565. {
  566. template< typename Vector > struct apply
  567. {
  568. typedef vector4<
  569. typename Vector::item1, typename Vector::item2
  570. , typename Vector::item3, typename Vector::item4
  571. > type;
  572. };
  573. };
  574. template<>
  575. struct push_back_impl< aux::vector_tag<4> >
  576. {
  577. template< typename Vector, typename T > struct apply
  578. {
  579. typedef vector5<
  580. typename Vector::item0, typename Vector::item1
  581. , typename Vector::item2, typename Vector::item3
  582. ,
  583. T
  584. > type;
  585. };
  586. };
  587. template<>
  588. struct pop_back_impl< aux::vector_tag<5> >
  589. {
  590. template< typename Vector > struct apply
  591. {
  592. typedef vector4<
  593. typename Vector::item0, typename Vector::item1
  594. , typename Vector::item2, typename Vector::item3
  595. > type;
  596. };
  597. };
  598. namespace aux {
  599. template<> struct v_at_impl<5>
  600. {
  601. template< typename V_ > struct result_
  602. {
  603. typedef typename V_::item5 type;
  604. };
  605. };
  606. }
  607. template<>
  608. struct at_impl< aux::vector_tag<5> >
  609. {
  610. template< typename V_, typename N > struct apply
  611. {
  612. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  613. ::template result_<V_>::type type;
  614. };
  615. };
  616. template<>
  617. struct front_impl< aux::vector_tag<5> >
  618. {
  619. template< typename Vector > struct apply
  620. {
  621. typedef typename Vector::item0 type;
  622. };
  623. };
  624. template<>
  625. struct back_impl< aux::vector_tag<5> >
  626. {
  627. template< typename Vector > struct apply
  628. {
  629. typedef typename Vector::back type;
  630. };
  631. };
  632. template<>
  633. struct empty_impl< aux::vector_tag<5> >
  634. {
  635. template< typename Vector > struct apply
  636. : false_
  637. {
  638. };
  639. };
  640. template<>
  641. struct size_impl< aux::vector_tag<5> >
  642. {
  643. template< typename Vector > struct apply
  644. : long_<5>
  645. {
  646. };
  647. };
  648. template<>
  649. struct O1_size_impl< aux::vector_tag<5> >
  650. : size_impl< aux::vector_tag<5> >
  651. {
  652. };
  653. template<>
  654. struct clear_impl< aux::vector_tag<5> >
  655. {
  656. template< typename Vector > struct apply
  657. {
  658. typedef vector0<> type;
  659. };
  660. };
  661. template<
  662. typename T0, typename T1, typename T2, typename T3, typename T4
  663. , typename T5
  664. >
  665. struct vector6
  666. {
  667. typedef aux::vector_tag<6> tag;
  668. typedef vector6 type;
  669. typedef T0 item0;
  670. typedef T1 item1;
  671. typedef T2 item2;
  672. typedef T3 item3;
  673. typedef T4 item4;
  674. typedef T5 item5;
  675. typedef void_ item6;
  676. typedef T5 back;
  677. typedef v_iter< type,0 > begin;
  678. typedef v_iter< type,6 > end;
  679. };
  680. template<>
  681. struct push_front_impl< aux::vector_tag<5> >
  682. {
  683. template< typename Vector, typename T > struct apply
  684. {
  685. typedef vector6<
  686. T
  687. ,
  688. typename Vector::item0, typename Vector::item1
  689. , typename Vector::item2, typename Vector::item3
  690. , typename Vector::item4
  691. > type;
  692. };
  693. };
  694. template<>
  695. struct pop_front_impl< aux::vector_tag<6> >
  696. {
  697. template< typename Vector > struct apply
  698. {
  699. typedef vector5<
  700. typename Vector::item1, typename Vector::item2
  701. , typename Vector::item3, typename Vector::item4
  702. , typename Vector::item5
  703. > type;
  704. };
  705. };
  706. template<>
  707. struct push_back_impl< aux::vector_tag<5> >
  708. {
  709. template< typename Vector, typename T > struct apply
  710. {
  711. typedef vector6<
  712. typename Vector::item0, typename Vector::item1
  713. , typename Vector::item2, typename Vector::item3
  714. , typename Vector::item4
  715. ,
  716. T
  717. > type;
  718. };
  719. };
  720. template<>
  721. struct pop_back_impl< aux::vector_tag<6> >
  722. {
  723. template< typename Vector > struct apply
  724. {
  725. typedef vector5<
  726. typename Vector::item0, typename Vector::item1
  727. , typename Vector::item2, typename Vector::item3
  728. , typename Vector::item4
  729. > type;
  730. };
  731. };
  732. namespace aux {
  733. template<> struct v_at_impl<6>
  734. {
  735. template< typename V_ > struct result_
  736. {
  737. typedef typename V_::item6 type;
  738. };
  739. };
  740. }
  741. template<>
  742. struct at_impl< aux::vector_tag<6> >
  743. {
  744. template< typename V_, typename N > struct apply
  745. {
  746. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  747. ::template result_<V_>::type type;
  748. };
  749. };
  750. template<>
  751. struct front_impl< aux::vector_tag<6> >
  752. {
  753. template< typename Vector > struct apply
  754. {
  755. typedef typename Vector::item0 type;
  756. };
  757. };
  758. template<>
  759. struct back_impl< aux::vector_tag<6> >
  760. {
  761. template< typename Vector > struct apply
  762. {
  763. typedef typename Vector::back type;
  764. };
  765. };
  766. template<>
  767. struct empty_impl< aux::vector_tag<6> >
  768. {
  769. template< typename Vector > struct apply
  770. : false_
  771. {
  772. };
  773. };
  774. template<>
  775. struct size_impl< aux::vector_tag<6> >
  776. {
  777. template< typename Vector > struct apply
  778. : long_<6>
  779. {
  780. };
  781. };
  782. template<>
  783. struct O1_size_impl< aux::vector_tag<6> >
  784. : size_impl< aux::vector_tag<6> >
  785. {
  786. };
  787. template<>
  788. struct clear_impl< aux::vector_tag<6> >
  789. {
  790. template< typename Vector > struct apply
  791. {
  792. typedef vector0<> type;
  793. };
  794. };
  795. template<
  796. typename T0, typename T1, typename T2, typename T3, typename T4
  797. , typename T5, typename T6
  798. >
  799. struct vector7
  800. {
  801. typedef aux::vector_tag<7> tag;
  802. typedef vector7 type;
  803. typedef T0 item0;
  804. typedef T1 item1;
  805. typedef T2 item2;
  806. typedef T3 item3;
  807. typedef T4 item4;
  808. typedef T5 item5;
  809. typedef T6 item6;
  810. typedef void_ item7;
  811. typedef T6 back;
  812. typedef v_iter< type,0 > begin;
  813. typedef v_iter< type,7 > end;
  814. };
  815. template<>
  816. struct push_front_impl< aux::vector_tag<6> >
  817. {
  818. template< typename Vector, typename T > struct apply
  819. {
  820. typedef vector7<
  821. T
  822. ,
  823. typename Vector::item0, typename Vector::item1
  824. , typename Vector::item2, typename Vector::item3
  825. , typename Vector::item4, typename Vector::item5
  826. > type;
  827. };
  828. };
  829. template<>
  830. struct pop_front_impl< aux::vector_tag<7> >
  831. {
  832. template< typename Vector > struct apply
  833. {
  834. typedef vector6<
  835. typename Vector::item1, typename Vector::item2
  836. , typename Vector::item3, typename Vector::item4
  837. , typename Vector::item5, typename Vector::item6
  838. > type;
  839. };
  840. };
  841. template<>
  842. struct push_back_impl< aux::vector_tag<6> >
  843. {
  844. template< typename Vector, typename T > struct apply
  845. {
  846. typedef vector7<
  847. typename Vector::item0, typename Vector::item1
  848. , typename Vector::item2, typename Vector::item3
  849. , typename Vector::item4, typename Vector::item5
  850. ,
  851. T
  852. > type;
  853. };
  854. };
  855. template<>
  856. struct pop_back_impl< aux::vector_tag<7> >
  857. {
  858. template< typename Vector > struct apply
  859. {
  860. typedef vector6<
  861. typename Vector::item0, typename Vector::item1
  862. , typename Vector::item2, typename Vector::item3
  863. , typename Vector::item4, typename Vector::item5
  864. > type;
  865. };
  866. };
  867. namespace aux {
  868. template<> struct v_at_impl<7>
  869. {
  870. template< typename V_ > struct result_
  871. {
  872. typedef typename V_::item7 type;
  873. };
  874. };
  875. }
  876. template<>
  877. struct at_impl< aux::vector_tag<7> >
  878. {
  879. template< typename V_, typename N > struct apply
  880. {
  881. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  882. ::template result_<V_>::type type;
  883. };
  884. };
  885. template<>
  886. struct front_impl< aux::vector_tag<7> >
  887. {
  888. template< typename Vector > struct apply
  889. {
  890. typedef typename Vector::item0 type;
  891. };
  892. };
  893. template<>
  894. struct back_impl< aux::vector_tag<7> >
  895. {
  896. template< typename Vector > struct apply
  897. {
  898. typedef typename Vector::back type;
  899. };
  900. };
  901. template<>
  902. struct empty_impl< aux::vector_tag<7> >
  903. {
  904. template< typename Vector > struct apply
  905. : false_
  906. {
  907. };
  908. };
  909. template<>
  910. struct size_impl< aux::vector_tag<7> >
  911. {
  912. template< typename Vector > struct apply
  913. : long_<7>
  914. {
  915. };
  916. };
  917. template<>
  918. struct O1_size_impl< aux::vector_tag<7> >
  919. : size_impl< aux::vector_tag<7> >
  920. {
  921. };
  922. template<>
  923. struct clear_impl< aux::vector_tag<7> >
  924. {
  925. template< typename Vector > struct apply
  926. {
  927. typedef vector0<> type;
  928. };
  929. };
  930. template<
  931. typename T0, typename T1, typename T2, typename T3, typename T4
  932. , typename T5, typename T6, typename T7
  933. >
  934. struct vector8
  935. {
  936. typedef aux::vector_tag<8> tag;
  937. typedef vector8 type;
  938. typedef T0 item0;
  939. typedef T1 item1;
  940. typedef T2 item2;
  941. typedef T3 item3;
  942. typedef T4 item4;
  943. typedef T5 item5;
  944. typedef T6 item6;
  945. typedef T7 item7;
  946. typedef void_ item8;
  947. typedef T7 back;
  948. typedef v_iter< type,0 > begin;
  949. typedef v_iter< type,8 > end;
  950. };
  951. template<>
  952. struct push_front_impl< aux::vector_tag<7> >
  953. {
  954. template< typename Vector, typename T > struct apply
  955. {
  956. typedef vector8<
  957. T
  958. ,
  959. typename Vector::item0, typename Vector::item1
  960. , typename Vector::item2, typename Vector::item3
  961. , typename Vector::item4, typename Vector::item5
  962. , typename Vector::item6
  963. > type;
  964. };
  965. };
  966. template<>
  967. struct pop_front_impl< aux::vector_tag<8> >
  968. {
  969. template< typename Vector > struct apply
  970. {
  971. typedef vector7<
  972. typename Vector::item1, typename Vector::item2
  973. , typename Vector::item3, typename Vector::item4
  974. , typename Vector::item5, typename Vector::item6
  975. , typename Vector::item7
  976. > type;
  977. };
  978. };
  979. template<>
  980. struct push_back_impl< aux::vector_tag<7> >
  981. {
  982. template< typename Vector, typename T > struct apply
  983. {
  984. typedef vector8<
  985. typename Vector::item0, typename Vector::item1
  986. , typename Vector::item2, typename Vector::item3
  987. , typename Vector::item4, typename Vector::item5
  988. , typename Vector::item6
  989. ,
  990. T
  991. > type;
  992. };
  993. };
  994. template<>
  995. struct pop_back_impl< aux::vector_tag<8> >
  996. {
  997. template< typename Vector > struct apply
  998. {
  999. typedef vector7<
  1000. typename Vector::item0, typename Vector::item1
  1001. , typename Vector::item2, typename Vector::item3
  1002. , typename Vector::item4, typename Vector::item5
  1003. , typename Vector::item6
  1004. > type;
  1005. };
  1006. };
  1007. namespace aux {
  1008. template<> struct v_at_impl<8>
  1009. {
  1010. template< typename V_ > struct result_
  1011. {
  1012. typedef typename V_::item8 type;
  1013. };
  1014. };
  1015. }
  1016. template<>
  1017. struct at_impl< aux::vector_tag<8> >
  1018. {
  1019. template< typename V_, typename N > struct apply
  1020. {
  1021. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  1022. ::template result_<V_>::type type;
  1023. };
  1024. };
  1025. template<>
  1026. struct front_impl< aux::vector_tag<8> >
  1027. {
  1028. template< typename Vector > struct apply
  1029. {
  1030. typedef typename Vector::item0 type;
  1031. };
  1032. };
  1033. template<>
  1034. struct back_impl< aux::vector_tag<8> >
  1035. {
  1036. template< typename Vector > struct apply
  1037. {
  1038. typedef typename Vector::back type;
  1039. };
  1040. };
  1041. template<>
  1042. struct empty_impl< aux::vector_tag<8> >
  1043. {
  1044. template< typename Vector > struct apply
  1045. : false_
  1046. {
  1047. };
  1048. };
  1049. template<>
  1050. struct size_impl< aux::vector_tag<8> >
  1051. {
  1052. template< typename Vector > struct apply
  1053. : long_<8>
  1054. {
  1055. };
  1056. };
  1057. template<>
  1058. struct O1_size_impl< aux::vector_tag<8> >
  1059. : size_impl< aux::vector_tag<8> >
  1060. {
  1061. };
  1062. template<>
  1063. struct clear_impl< aux::vector_tag<8> >
  1064. {
  1065. template< typename Vector > struct apply
  1066. {
  1067. typedef vector0<> type;
  1068. };
  1069. };
  1070. template<
  1071. typename T0, typename T1, typename T2, typename T3, typename T4
  1072. , typename T5, typename T6, typename T7, typename T8
  1073. >
  1074. struct vector9
  1075. {
  1076. typedef aux::vector_tag<9> tag;
  1077. typedef vector9 type;
  1078. typedef T0 item0;
  1079. typedef T1 item1;
  1080. typedef T2 item2;
  1081. typedef T3 item3;
  1082. typedef T4 item4;
  1083. typedef T5 item5;
  1084. typedef T6 item6;
  1085. typedef T7 item7;
  1086. typedef T8 item8;
  1087. typedef void_ item9;
  1088. typedef T8 back;
  1089. typedef v_iter< type,0 > begin;
  1090. typedef v_iter< type,9 > end;
  1091. };
  1092. template<>
  1093. struct push_front_impl< aux::vector_tag<8> >
  1094. {
  1095. template< typename Vector, typename T > struct apply
  1096. {
  1097. typedef vector9<
  1098. T
  1099. ,
  1100. typename Vector::item0, typename Vector::item1
  1101. , typename Vector::item2, typename Vector::item3
  1102. , typename Vector::item4, typename Vector::item5
  1103. , typename Vector::item6, typename Vector::item7
  1104. > type;
  1105. };
  1106. };
  1107. template<>
  1108. struct pop_front_impl< aux::vector_tag<9> >
  1109. {
  1110. template< typename Vector > struct apply
  1111. {
  1112. typedef vector8<
  1113. typename Vector::item1, typename Vector::item2
  1114. , typename Vector::item3, typename Vector::item4
  1115. , typename Vector::item5, typename Vector::item6
  1116. , typename Vector::item7, typename Vector::item8
  1117. > type;
  1118. };
  1119. };
  1120. template<>
  1121. struct push_back_impl< aux::vector_tag<8> >
  1122. {
  1123. template< typename Vector, typename T > struct apply
  1124. {
  1125. typedef vector9<
  1126. typename Vector::item0, typename Vector::item1
  1127. , typename Vector::item2, typename Vector::item3
  1128. , typename Vector::item4, typename Vector::item5
  1129. , typename Vector::item6, typename Vector::item7
  1130. ,
  1131. T
  1132. > type;
  1133. };
  1134. };
  1135. template<>
  1136. struct pop_back_impl< aux::vector_tag<9> >
  1137. {
  1138. template< typename Vector > struct apply
  1139. {
  1140. typedef vector8<
  1141. typename Vector::item0, typename Vector::item1
  1142. , typename Vector::item2, typename Vector::item3
  1143. , typename Vector::item4, typename Vector::item5
  1144. , typename Vector::item6, typename Vector::item7
  1145. > type;
  1146. };
  1147. };
  1148. namespace aux {
  1149. template<> struct v_at_impl<9>
  1150. {
  1151. template< typename V_ > struct result_
  1152. {
  1153. typedef typename V_::item9 type;
  1154. };
  1155. };
  1156. }
  1157. template<>
  1158. struct at_impl< aux::vector_tag<9> >
  1159. {
  1160. template< typename V_, typename N > struct apply
  1161. {
  1162. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  1163. ::template result_<V_>::type type;
  1164. };
  1165. };
  1166. template<>
  1167. struct front_impl< aux::vector_tag<9> >
  1168. {
  1169. template< typename Vector > struct apply
  1170. {
  1171. typedef typename Vector::item0 type;
  1172. };
  1173. };
  1174. template<>
  1175. struct back_impl< aux::vector_tag<9> >
  1176. {
  1177. template< typename Vector > struct apply
  1178. {
  1179. typedef typename Vector::back type;
  1180. };
  1181. };
  1182. template<>
  1183. struct empty_impl< aux::vector_tag<9> >
  1184. {
  1185. template< typename Vector > struct apply
  1186. : false_
  1187. {
  1188. };
  1189. };
  1190. template<>
  1191. struct size_impl< aux::vector_tag<9> >
  1192. {
  1193. template< typename Vector > struct apply
  1194. : long_<9>
  1195. {
  1196. };
  1197. };
  1198. template<>
  1199. struct O1_size_impl< aux::vector_tag<9> >
  1200. : size_impl< aux::vector_tag<9> >
  1201. {
  1202. };
  1203. template<>
  1204. struct clear_impl< aux::vector_tag<9> >
  1205. {
  1206. template< typename Vector > struct apply
  1207. {
  1208. typedef vector0<> type;
  1209. };
  1210. };
  1211. template<
  1212. typename T0, typename T1, typename T2, typename T3, typename T4
  1213. , typename T5, typename T6, typename T7, typename T8, typename T9
  1214. >
  1215. struct vector10
  1216. {
  1217. typedef aux::vector_tag<10> tag;
  1218. typedef vector10 type;
  1219. typedef T0 item0;
  1220. typedef T1 item1;
  1221. typedef T2 item2;
  1222. typedef T3 item3;
  1223. typedef T4 item4;
  1224. typedef T5 item5;
  1225. typedef T6 item6;
  1226. typedef T7 item7;
  1227. typedef T8 item8;
  1228. typedef T9 item9;
  1229. typedef void_ item10;
  1230. typedef T9 back;
  1231. typedef v_iter< type,0 > begin;
  1232. typedef v_iter< type,10 > end;
  1233. };
  1234. template<>
  1235. struct push_front_impl< aux::vector_tag<9> >
  1236. {
  1237. template< typename Vector, typename T > struct apply
  1238. {
  1239. typedef vector10<
  1240. T
  1241. ,
  1242. typename Vector::item0, typename Vector::item1
  1243. , typename Vector::item2, typename Vector::item3
  1244. , typename Vector::item4, typename Vector::item5
  1245. , typename Vector::item6, typename Vector::item7
  1246. , typename Vector::item8
  1247. > type;
  1248. };
  1249. };
  1250. template<>
  1251. struct pop_front_impl< aux::vector_tag<10> >
  1252. {
  1253. template< typename Vector > struct apply
  1254. {
  1255. typedef vector9<
  1256. typename Vector::item1, typename Vector::item2
  1257. , typename Vector::item3, typename Vector::item4
  1258. , typename Vector::item5, typename Vector::item6
  1259. , typename Vector::item7, typename Vector::item8
  1260. , typename Vector::item9
  1261. > type;
  1262. };
  1263. };
  1264. template<>
  1265. struct push_back_impl< aux::vector_tag<9> >
  1266. {
  1267. template< typename Vector, typename T > struct apply
  1268. {
  1269. typedef vector10<
  1270. typename Vector::item0, typename Vector::item1
  1271. , typename Vector::item2, typename Vector::item3
  1272. , typename Vector::item4, typename Vector::item5
  1273. , typename Vector::item6, typename Vector::item7
  1274. , typename Vector::item8
  1275. ,
  1276. T
  1277. > type;
  1278. };
  1279. };
  1280. template<>
  1281. struct pop_back_impl< aux::vector_tag<10> >
  1282. {
  1283. template< typename Vector > struct apply
  1284. {
  1285. typedef vector9<
  1286. typename Vector::item0, typename Vector::item1
  1287. , typename Vector::item2, typename Vector::item3
  1288. , typename Vector::item4, typename Vector::item5
  1289. , typename Vector::item6, typename Vector::item7
  1290. , typename Vector::item8
  1291. > type;
  1292. };
  1293. };
  1294. namespace aux {
  1295. template<> struct v_at_impl<10>
  1296. {
  1297. template< typename V_ > struct result_
  1298. {
  1299. typedef typename V_::item10 type;
  1300. };
  1301. };
  1302. }
  1303. template<>
  1304. struct at_impl< aux::vector_tag<10> >
  1305. {
  1306. template< typename V_, typename N > struct apply
  1307. {
  1308. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  1309. ::template result_<V_>::type type;
  1310. };
  1311. };
  1312. template<>
  1313. struct front_impl< aux::vector_tag<10> >
  1314. {
  1315. template< typename Vector > struct apply
  1316. {
  1317. typedef typename Vector::item0 type;
  1318. };
  1319. };
  1320. template<>
  1321. struct back_impl< aux::vector_tag<10> >
  1322. {
  1323. template< typename Vector > struct apply
  1324. {
  1325. typedef typename Vector::back type;
  1326. };
  1327. };
  1328. template<>
  1329. struct empty_impl< aux::vector_tag<10> >
  1330. {
  1331. template< typename Vector > struct apply
  1332. : false_
  1333. {
  1334. };
  1335. };
  1336. template<>
  1337. struct size_impl< aux::vector_tag<10> >
  1338. {
  1339. template< typename Vector > struct apply
  1340. : long_<10>
  1341. {
  1342. };
  1343. };
  1344. template<>
  1345. struct O1_size_impl< aux::vector_tag<10> >
  1346. : size_impl< aux::vector_tag<10> >
  1347. {
  1348. };
  1349. template<>
  1350. struct clear_impl< aux::vector_tag<10> >
  1351. {
  1352. template< typename Vector > struct apply
  1353. {
  1354. typedef vector0<> type;
  1355. };
  1356. };
  1357. }}