vector20.hpp 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804
  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/vector20.hpp" header
  8. // -- DO NOT modify by hand!
  9. namespace boost { namespace mpl {
  10. template<
  11. typename T0, typename T1, typename T2, typename T3, typename T4
  12. , typename T5, typename T6, typename T7, typename T8, typename T9
  13. , typename T10
  14. >
  15. struct vector11
  16. {
  17. typedef aux::vector_tag<11> tag;
  18. typedef vector11 type;
  19. typedef T0 item0;
  20. typedef T1 item1;
  21. typedef T2 item2;
  22. typedef T3 item3;
  23. typedef T4 item4;
  24. typedef T5 item5;
  25. typedef T6 item6;
  26. typedef T7 item7;
  27. typedef T8 item8;
  28. typedef T9 item9;
  29. typedef T10 item10;
  30. typedef void_ item11;
  31. typedef T10 back;
  32. typedef v_iter< type,0 > begin;
  33. typedef v_iter< type,11 > end;
  34. };
  35. template<>
  36. struct push_front_impl< aux::vector_tag<10> >
  37. {
  38. template< typename Vector, typename T > struct apply
  39. {
  40. typedef vector11<
  41. T
  42. ,
  43. typename Vector::item0, typename Vector::item1
  44. , typename Vector::item2, typename Vector::item3
  45. , typename Vector::item4, typename Vector::item5
  46. , typename Vector::item6, typename Vector::item7
  47. , typename Vector::item8, typename Vector::item9
  48. > type;
  49. };
  50. };
  51. template<>
  52. struct pop_front_impl< aux::vector_tag<11> >
  53. {
  54. template< typename Vector > struct apply
  55. {
  56. typedef vector10<
  57. typename Vector::item1, typename Vector::item2
  58. , typename Vector::item3, typename Vector::item4
  59. , typename Vector::item5, typename Vector::item6
  60. , typename Vector::item7, typename Vector::item8
  61. , typename Vector::item9, typename Vector::item10
  62. > type;
  63. };
  64. };
  65. template<>
  66. struct push_back_impl< aux::vector_tag<10> >
  67. {
  68. template< typename Vector, typename T > struct apply
  69. {
  70. typedef vector11<
  71. typename Vector::item0, typename Vector::item1
  72. , typename Vector::item2, typename Vector::item3
  73. , typename Vector::item4, typename Vector::item5
  74. , typename Vector::item6, typename Vector::item7
  75. , typename Vector::item8, typename Vector::item9
  76. ,
  77. T
  78. > type;
  79. };
  80. };
  81. template<>
  82. struct pop_back_impl< aux::vector_tag<11> >
  83. {
  84. template< typename Vector > struct apply
  85. {
  86. typedef vector10<
  87. typename Vector::item0, typename Vector::item1
  88. , typename Vector::item2, typename Vector::item3
  89. , typename Vector::item4, typename Vector::item5
  90. , typename Vector::item6, typename Vector::item7
  91. , typename Vector::item8, typename Vector::item9
  92. > type;
  93. };
  94. };
  95. namespace aux {
  96. template<> struct v_at_impl<11>
  97. {
  98. template< typename V_ > struct result_
  99. {
  100. typedef typename V_::item11 type;
  101. };
  102. };
  103. }
  104. template<>
  105. struct at_impl< aux::vector_tag<11> >
  106. {
  107. template< typename V_, typename N > struct apply
  108. {
  109. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  110. ::template result_<V_>::type type;
  111. };
  112. };
  113. template<>
  114. struct front_impl< aux::vector_tag<11> >
  115. {
  116. template< typename Vector > struct apply
  117. {
  118. typedef typename Vector::item0 type;
  119. };
  120. };
  121. template<>
  122. struct back_impl< aux::vector_tag<11> >
  123. {
  124. template< typename Vector > struct apply
  125. {
  126. typedef typename Vector::back type;
  127. };
  128. };
  129. template<>
  130. struct empty_impl< aux::vector_tag<11> >
  131. {
  132. template< typename Vector > struct apply
  133. : false_
  134. {
  135. };
  136. };
  137. template<>
  138. struct size_impl< aux::vector_tag<11> >
  139. {
  140. template< typename Vector > struct apply
  141. : long_<11>
  142. {
  143. };
  144. };
  145. template<>
  146. struct O1_size_impl< aux::vector_tag<11> >
  147. : size_impl< aux::vector_tag<11> >
  148. {
  149. };
  150. template<>
  151. struct clear_impl< aux::vector_tag<11> >
  152. {
  153. template< typename Vector > struct apply
  154. {
  155. typedef vector0<> type;
  156. };
  157. };
  158. template<
  159. typename T0, typename T1, typename T2, typename T3, typename T4
  160. , typename T5, typename T6, typename T7, typename T8, typename T9
  161. , typename T10, typename T11
  162. >
  163. struct vector12
  164. {
  165. typedef aux::vector_tag<12> tag;
  166. typedef vector12 type;
  167. typedef T0 item0;
  168. typedef T1 item1;
  169. typedef T2 item2;
  170. typedef T3 item3;
  171. typedef T4 item4;
  172. typedef T5 item5;
  173. typedef T6 item6;
  174. typedef T7 item7;
  175. typedef T8 item8;
  176. typedef T9 item9;
  177. typedef T10 item10;
  178. typedef T11 item11;
  179. typedef void_ item12;
  180. typedef T11 back;
  181. typedef v_iter< type,0 > begin;
  182. typedef v_iter< type,12 > end;
  183. };
  184. template<>
  185. struct push_front_impl< aux::vector_tag<11> >
  186. {
  187. template< typename Vector, typename T > struct apply
  188. {
  189. typedef vector12<
  190. T
  191. ,
  192. typename Vector::item0, typename Vector::item1
  193. , typename Vector::item2, typename Vector::item3
  194. , typename Vector::item4, typename Vector::item5
  195. , typename Vector::item6, typename Vector::item7
  196. , typename Vector::item8, typename Vector::item9
  197. , typename Vector::item10
  198. > type;
  199. };
  200. };
  201. template<>
  202. struct pop_front_impl< aux::vector_tag<12> >
  203. {
  204. template< typename Vector > struct apply
  205. {
  206. typedef vector11<
  207. typename Vector::item1, typename Vector::item2
  208. , typename Vector::item3, typename Vector::item4
  209. , typename Vector::item5, typename Vector::item6
  210. , typename Vector::item7, typename Vector::item8
  211. , typename Vector::item9, typename Vector::item10
  212. , typename Vector::item11
  213. > type;
  214. };
  215. };
  216. template<>
  217. struct push_back_impl< aux::vector_tag<11> >
  218. {
  219. template< typename Vector, typename T > struct apply
  220. {
  221. typedef vector12<
  222. typename Vector::item0, typename Vector::item1
  223. , typename Vector::item2, typename Vector::item3
  224. , typename Vector::item4, typename Vector::item5
  225. , typename Vector::item6, typename Vector::item7
  226. , typename Vector::item8, typename Vector::item9
  227. , typename Vector::item10
  228. ,
  229. T
  230. > type;
  231. };
  232. };
  233. template<>
  234. struct pop_back_impl< aux::vector_tag<12> >
  235. {
  236. template< typename Vector > struct apply
  237. {
  238. typedef vector11<
  239. typename Vector::item0, typename Vector::item1
  240. , typename Vector::item2, typename Vector::item3
  241. , typename Vector::item4, typename Vector::item5
  242. , typename Vector::item6, typename Vector::item7
  243. , typename Vector::item8, typename Vector::item9
  244. , typename Vector::item10
  245. > type;
  246. };
  247. };
  248. namespace aux {
  249. template<> struct v_at_impl<12>
  250. {
  251. template< typename V_ > struct result_
  252. {
  253. typedef typename V_::item12 type;
  254. };
  255. };
  256. }
  257. template<>
  258. struct at_impl< aux::vector_tag<12> >
  259. {
  260. template< typename V_, typename N > struct apply
  261. {
  262. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  263. ::template result_<V_>::type type;
  264. };
  265. };
  266. template<>
  267. struct front_impl< aux::vector_tag<12> >
  268. {
  269. template< typename Vector > struct apply
  270. {
  271. typedef typename Vector::item0 type;
  272. };
  273. };
  274. template<>
  275. struct back_impl< aux::vector_tag<12> >
  276. {
  277. template< typename Vector > struct apply
  278. {
  279. typedef typename Vector::back type;
  280. };
  281. };
  282. template<>
  283. struct empty_impl< aux::vector_tag<12> >
  284. {
  285. template< typename Vector > struct apply
  286. : false_
  287. {
  288. };
  289. };
  290. template<>
  291. struct size_impl< aux::vector_tag<12> >
  292. {
  293. template< typename Vector > struct apply
  294. : long_<12>
  295. {
  296. };
  297. };
  298. template<>
  299. struct O1_size_impl< aux::vector_tag<12> >
  300. : size_impl< aux::vector_tag<12> >
  301. {
  302. };
  303. template<>
  304. struct clear_impl< aux::vector_tag<12> >
  305. {
  306. template< typename Vector > struct apply
  307. {
  308. typedef vector0<> type;
  309. };
  310. };
  311. template<
  312. typename T0, typename T1, typename T2, typename T3, typename T4
  313. , typename T5, typename T6, typename T7, typename T8, typename T9
  314. , typename T10, typename T11, typename T12
  315. >
  316. struct vector13
  317. {
  318. typedef aux::vector_tag<13> tag;
  319. typedef vector13 type;
  320. typedef T0 item0;
  321. typedef T1 item1;
  322. typedef T2 item2;
  323. typedef T3 item3;
  324. typedef T4 item4;
  325. typedef T5 item5;
  326. typedef T6 item6;
  327. typedef T7 item7;
  328. typedef T8 item8;
  329. typedef T9 item9;
  330. typedef T10 item10;
  331. typedef T11 item11;
  332. typedef T12 item12;
  333. typedef void_ item13;
  334. typedef T12 back;
  335. typedef v_iter< type,0 > begin;
  336. typedef v_iter< type,13 > end;
  337. };
  338. template<>
  339. struct push_front_impl< aux::vector_tag<12> >
  340. {
  341. template< typename Vector, typename T > struct apply
  342. {
  343. typedef vector13<
  344. T
  345. ,
  346. typename Vector::item0, typename Vector::item1
  347. , typename Vector::item2, typename Vector::item3
  348. , typename Vector::item4, typename Vector::item5
  349. , typename Vector::item6, typename Vector::item7
  350. , typename Vector::item8, typename Vector::item9
  351. , typename Vector::item10, typename Vector::item11
  352. > type;
  353. };
  354. };
  355. template<>
  356. struct pop_front_impl< aux::vector_tag<13> >
  357. {
  358. template< typename Vector > struct apply
  359. {
  360. typedef vector12<
  361. typename Vector::item1, typename Vector::item2
  362. , typename Vector::item3, typename Vector::item4
  363. , typename Vector::item5, typename Vector::item6
  364. , typename Vector::item7, typename Vector::item8
  365. , typename Vector::item9, typename Vector::item10
  366. , typename Vector::item11, typename Vector::item12
  367. > type;
  368. };
  369. };
  370. template<>
  371. struct push_back_impl< aux::vector_tag<12> >
  372. {
  373. template< typename Vector, typename T > struct apply
  374. {
  375. typedef vector13<
  376. typename Vector::item0, typename Vector::item1
  377. , typename Vector::item2, typename Vector::item3
  378. , typename Vector::item4, typename Vector::item5
  379. , typename Vector::item6, typename Vector::item7
  380. , typename Vector::item8, typename Vector::item9
  381. , typename Vector::item10, typename Vector::item11
  382. ,
  383. T
  384. > type;
  385. };
  386. };
  387. template<>
  388. struct pop_back_impl< aux::vector_tag<13> >
  389. {
  390. template< typename Vector > struct apply
  391. {
  392. typedef vector12<
  393. typename Vector::item0, typename Vector::item1
  394. , typename Vector::item2, typename Vector::item3
  395. , typename Vector::item4, typename Vector::item5
  396. , typename Vector::item6, typename Vector::item7
  397. , typename Vector::item8, typename Vector::item9
  398. , typename Vector::item10, typename Vector::item11
  399. > type;
  400. };
  401. };
  402. namespace aux {
  403. template<> struct v_at_impl<13>
  404. {
  405. template< typename V_ > struct result_
  406. {
  407. typedef typename V_::item13 type;
  408. };
  409. };
  410. }
  411. template<>
  412. struct at_impl< aux::vector_tag<13> >
  413. {
  414. template< typename V_, typename N > struct apply
  415. {
  416. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  417. ::template result_<V_>::type type;
  418. };
  419. };
  420. template<>
  421. struct front_impl< aux::vector_tag<13> >
  422. {
  423. template< typename Vector > struct apply
  424. {
  425. typedef typename Vector::item0 type;
  426. };
  427. };
  428. template<>
  429. struct back_impl< aux::vector_tag<13> >
  430. {
  431. template< typename Vector > struct apply
  432. {
  433. typedef typename Vector::back type;
  434. };
  435. };
  436. template<>
  437. struct empty_impl< aux::vector_tag<13> >
  438. {
  439. template< typename Vector > struct apply
  440. : false_
  441. {
  442. };
  443. };
  444. template<>
  445. struct size_impl< aux::vector_tag<13> >
  446. {
  447. template< typename Vector > struct apply
  448. : long_<13>
  449. {
  450. };
  451. };
  452. template<>
  453. struct O1_size_impl< aux::vector_tag<13> >
  454. : size_impl< aux::vector_tag<13> >
  455. {
  456. };
  457. template<>
  458. struct clear_impl< aux::vector_tag<13> >
  459. {
  460. template< typename Vector > struct apply
  461. {
  462. typedef vector0<> type;
  463. };
  464. };
  465. template<
  466. typename T0, typename T1, typename T2, typename T3, typename T4
  467. , typename T5, typename T6, typename T7, typename T8, typename T9
  468. , typename T10, typename T11, typename T12, typename T13
  469. >
  470. struct vector14
  471. {
  472. typedef aux::vector_tag<14> tag;
  473. typedef vector14 type;
  474. typedef T0 item0;
  475. typedef T1 item1;
  476. typedef T2 item2;
  477. typedef T3 item3;
  478. typedef T4 item4;
  479. typedef T5 item5;
  480. typedef T6 item6;
  481. typedef T7 item7;
  482. typedef T8 item8;
  483. typedef T9 item9;
  484. typedef T10 item10;
  485. typedef T11 item11;
  486. typedef T12 item12;
  487. typedef T13 item13;
  488. typedef void_ item14;
  489. typedef T13 back;
  490. typedef v_iter< type,0 > begin;
  491. typedef v_iter< type,14 > end;
  492. };
  493. template<>
  494. struct push_front_impl< aux::vector_tag<13> >
  495. {
  496. template< typename Vector, typename T > struct apply
  497. {
  498. typedef vector14<
  499. T
  500. ,
  501. typename Vector::item0, typename Vector::item1
  502. , typename Vector::item2, typename Vector::item3
  503. , typename Vector::item4, typename Vector::item5
  504. , typename Vector::item6, typename Vector::item7
  505. , typename Vector::item8, typename Vector::item9
  506. , typename Vector::item10, typename Vector::item11
  507. , typename Vector::item12
  508. > type;
  509. };
  510. };
  511. template<>
  512. struct pop_front_impl< aux::vector_tag<14> >
  513. {
  514. template< typename Vector > struct apply
  515. {
  516. typedef vector13<
  517. typename Vector::item1, typename Vector::item2
  518. , typename Vector::item3, typename Vector::item4
  519. , typename Vector::item5, typename Vector::item6
  520. , typename Vector::item7, typename Vector::item8
  521. , typename Vector::item9, typename Vector::item10
  522. , typename Vector::item11, typename Vector::item12
  523. , typename Vector::item13
  524. > type;
  525. };
  526. };
  527. template<>
  528. struct push_back_impl< aux::vector_tag<13> >
  529. {
  530. template< typename Vector, typename T > struct apply
  531. {
  532. typedef vector14<
  533. typename Vector::item0, typename Vector::item1
  534. , typename Vector::item2, typename Vector::item3
  535. , typename Vector::item4, typename Vector::item5
  536. , typename Vector::item6, typename Vector::item7
  537. , typename Vector::item8, typename Vector::item9
  538. , typename Vector::item10, typename Vector::item11
  539. , typename Vector::item12
  540. ,
  541. T
  542. > type;
  543. };
  544. };
  545. template<>
  546. struct pop_back_impl< aux::vector_tag<14> >
  547. {
  548. template< typename Vector > struct apply
  549. {
  550. typedef vector13<
  551. typename Vector::item0, typename Vector::item1
  552. , typename Vector::item2, typename Vector::item3
  553. , typename Vector::item4, typename Vector::item5
  554. , typename Vector::item6, typename Vector::item7
  555. , typename Vector::item8, typename Vector::item9
  556. , typename Vector::item10, typename Vector::item11
  557. , typename Vector::item12
  558. > type;
  559. };
  560. };
  561. namespace aux {
  562. template<> struct v_at_impl<14>
  563. {
  564. template< typename V_ > struct result_
  565. {
  566. typedef typename V_::item14 type;
  567. };
  568. };
  569. }
  570. template<>
  571. struct at_impl< aux::vector_tag<14> >
  572. {
  573. template< typename V_, typename N > struct apply
  574. {
  575. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  576. ::template result_<V_>::type type;
  577. };
  578. };
  579. template<>
  580. struct front_impl< aux::vector_tag<14> >
  581. {
  582. template< typename Vector > struct apply
  583. {
  584. typedef typename Vector::item0 type;
  585. };
  586. };
  587. template<>
  588. struct back_impl< aux::vector_tag<14> >
  589. {
  590. template< typename Vector > struct apply
  591. {
  592. typedef typename Vector::back type;
  593. };
  594. };
  595. template<>
  596. struct empty_impl< aux::vector_tag<14> >
  597. {
  598. template< typename Vector > struct apply
  599. : false_
  600. {
  601. };
  602. };
  603. template<>
  604. struct size_impl< aux::vector_tag<14> >
  605. {
  606. template< typename Vector > struct apply
  607. : long_<14>
  608. {
  609. };
  610. };
  611. template<>
  612. struct O1_size_impl< aux::vector_tag<14> >
  613. : size_impl< aux::vector_tag<14> >
  614. {
  615. };
  616. template<>
  617. struct clear_impl< aux::vector_tag<14> >
  618. {
  619. template< typename Vector > struct apply
  620. {
  621. typedef vector0<> type;
  622. };
  623. };
  624. template<
  625. typename T0, typename T1, typename T2, typename T3, typename T4
  626. , typename T5, typename T6, typename T7, typename T8, typename T9
  627. , typename T10, typename T11, typename T12, typename T13, typename T14
  628. >
  629. struct vector15
  630. {
  631. typedef aux::vector_tag<15> tag;
  632. typedef vector15 type;
  633. typedef T0 item0;
  634. typedef T1 item1;
  635. typedef T2 item2;
  636. typedef T3 item3;
  637. typedef T4 item4;
  638. typedef T5 item5;
  639. typedef T6 item6;
  640. typedef T7 item7;
  641. typedef T8 item8;
  642. typedef T9 item9;
  643. typedef T10 item10;
  644. typedef T11 item11;
  645. typedef T12 item12;
  646. typedef T13 item13;
  647. typedef T14 item14;
  648. typedef void_ item15;
  649. typedef T14 back;
  650. typedef v_iter< type,0 > begin;
  651. typedef v_iter< type,15 > end;
  652. };
  653. template<>
  654. struct push_front_impl< aux::vector_tag<14> >
  655. {
  656. template< typename Vector, typename T > struct apply
  657. {
  658. typedef vector15<
  659. T
  660. ,
  661. typename Vector::item0, typename Vector::item1
  662. , typename Vector::item2, typename Vector::item3
  663. , typename Vector::item4, typename Vector::item5
  664. , typename Vector::item6, typename Vector::item7
  665. , typename Vector::item8, typename Vector::item9
  666. , typename Vector::item10, typename Vector::item11
  667. , typename Vector::item12, typename Vector::item13
  668. > type;
  669. };
  670. };
  671. template<>
  672. struct pop_front_impl< aux::vector_tag<15> >
  673. {
  674. template< typename Vector > struct apply
  675. {
  676. typedef vector14<
  677. typename Vector::item1, typename Vector::item2
  678. , typename Vector::item3, typename Vector::item4
  679. , typename Vector::item5, typename Vector::item6
  680. , typename Vector::item7, typename Vector::item8
  681. , typename Vector::item9, typename Vector::item10
  682. , typename Vector::item11, typename Vector::item12
  683. , typename Vector::item13, typename Vector::item14
  684. > type;
  685. };
  686. };
  687. template<>
  688. struct push_back_impl< aux::vector_tag<14> >
  689. {
  690. template< typename Vector, typename T > struct apply
  691. {
  692. typedef vector15<
  693. typename Vector::item0, typename Vector::item1
  694. , typename Vector::item2, typename Vector::item3
  695. , typename Vector::item4, typename Vector::item5
  696. , typename Vector::item6, typename Vector::item7
  697. , typename Vector::item8, typename Vector::item9
  698. , typename Vector::item10, typename Vector::item11
  699. , typename Vector::item12, typename Vector::item13
  700. ,
  701. T
  702. > type;
  703. };
  704. };
  705. template<>
  706. struct pop_back_impl< aux::vector_tag<15> >
  707. {
  708. template< typename Vector > struct apply
  709. {
  710. typedef vector14<
  711. typename Vector::item0, typename Vector::item1
  712. , typename Vector::item2, typename Vector::item3
  713. , typename Vector::item4, typename Vector::item5
  714. , typename Vector::item6, typename Vector::item7
  715. , typename Vector::item8, typename Vector::item9
  716. , typename Vector::item10, typename Vector::item11
  717. , typename Vector::item12, typename Vector::item13
  718. > type;
  719. };
  720. };
  721. namespace aux {
  722. template<> struct v_at_impl<15>
  723. {
  724. template< typename V_ > struct result_
  725. {
  726. typedef typename V_::item15 type;
  727. };
  728. };
  729. }
  730. template<>
  731. struct at_impl< aux::vector_tag<15> >
  732. {
  733. template< typename V_, typename N > struct apply
  734. {
  735. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  736. ::template result_<V_>::type type;
  737. };
  738. };
  739. template<>
  740. struct front_impl< aux::vector_tag<15> >
  741. {
  742. template< typename Vector > struct apply
  743. {
  744. typedef typename Vector::item0 type;
  745. };
  746. };
  747. template<>
  748. struct back_impl< aux::vector_tag<15> >
  749. {
  750. template< typename Vector > struct apply
  751. {
  752. typedef typename Vector::back type;
  753. };
  754. };
  755. template<>
  756. struct empty_impl< aux::vector_tag<15> >
  757. {
  758. template< typename Vector > struct apply
  759. : false_
  760. {
  761. };
  762. };
  763. template<>
  764. struct size_impl< aux::vector_tag<15> >
  765. {
  766. template< typename Vector > struct apply
  767. : long_<15>
  768. {
  769. };
  770. };
  771. template<>
  772. struct O1_size_impl< aux::vector_tag<15> >
  773. : size_impl< aux::vector_tag<15> >
  774. {
  775. };
  776. template<>
  777. struct clear_impl< aux::vector_tag<15> >
  778. {
  779. template< typename Vector > struct apply
  780. {
  781. typedef vector0<> type;
  782. };
  783. };
  784. template<
  785. typename T0, typename T1, typename T2, typename T3, typename T4
  786. , typename T5, typename T6, typename T7, typename T8, typename T9
  787. , typename T10, typename T11, typename T12, typename T13, typename T14
  788. , typename T15
  789. >
  790. struct vector16
  791. {
  792. typedef aux::vector_tag<16> tag;
  793. typedef vector16 type;
  794. typedef T0 item0;
  795. typedef T1 item1;
  796. typedef T2 item2;
  797. typedef T3 item3;
  798. typedef T4 item4;
  799. typedef T5 item5;
  800. typedef T6 item6;
  801. typedef T7 item7;
  802. typedef T8 item8;
  803. typedef T9 item9;
  804. typedef T10 item10;
  805. typedef T11 item11;
  806. typedef T12 item12;
  807. typedef T13 item13;
  808. typedef T14 item14;
  809. typedef T15 item15;
  810. typedef void_ item16;
  811. typedef T15 back;
  812. typedef v_iter< type,0 > begin;
  813. typedef v_iter< type,16 > end;
  814. };
  815. template<>
  816. struct push_front_impl< aux::vector_tag<15> >
  817. {
  818. template< typename Vector, typename T > struct apply
  819. {
  820. typedef vector16<
  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. , typename Vector::item6, typename Vector::item7
  827. , typename Vector::item8, typename Vector::item9
  828. , typename Vector::item10, typename Vector::item11
  829. , typename Vector::item12, typename Vector::item13
  830. , typename Vector::item14
  831. > type;
  832. };
  833. };
  834. template<>
  835. struct pop_front_impl< aux::vector_tag<16> >
  836. {
  837. template< typename Vector > struct apply
  838. {
  839. typedef vector15<
  840. typename Vector::item1, typename Vector::item2
  841. , typename Vector::item3, typename Vector::item4
  842. , typename Vector::item5, typename Vector::item6
  843. , typename Vector::item7, typename Vector::item8
  844. , typename Vector::item9, typename Vector::item10
  845. , typename Vector::item11, typename Vector::item12
  846. , typename Vector::item13, typename Vector::item14
  847. , typename Vector::item15
  848. > type;
  849. };
  850. };
  851. template<>
  852. struct push_back_impl< aux::vector_tag<15> >
  853. {
  854. template< typename Vector, typename T > struct apply
  855. {
  856. typedef vector16<
  857. typename Vector::item0, typename Vector::item1
  858. , typename Vector::item2, typename Vector::item3
  859. , typename Vector::item4, typename Vector::item5
  860. , typename Vector::item6, typename Vector::item7
  861. , typename Vector::item8, typename Vector::item9
  862. , typename Vector::item10, typename Vector::item11
  863. , typename Vector::item12, typename Vector::item13
  864. , typename Vector::item14
  865. ,
  866. T
  867. > type;
  868. };
  869. };
  870. template<>
  871. struct pop_back_impl< aux::vector_tag<16> >
  872. {
  873. template< typename Vector > struct apply
  874. {
  875. typedef vector15<
  876. typename Vector::item0, typename Vector::item1
  877. , typename Vector::item2, typename Vector::item3
  878. , typename Vector::item4, typename Vector::item5
  879. , typename Vector::item6, typename Vector::item7
  880. , typename Vector::item8, typename Vector::item9
  881. , typename Vector::item10, typename Vector::item11
  882. , typename Vector::item12, typename Vector::item13
  883. , typename Vector::item14
  884. > type;
  885. };
  886. };
  887. namespace aux {
  888. template<> struct v_at_impl<16>
  889. {
  890. template< typename V_ > struct result_
  891. {
  892. typedef typename V_::item16 type;
  893. };
  894. };
  895. }
  896. template<>
  897. struct at_impl< aux::vector_tag<16> >
  898. {
  899. template< typename V_, typename N > struct apply
  900. {
  901. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  902. ::template result_<V_>::type type;
  903. };
  904. };
  905. template<>
  906. struct front_impl< aux::vector_tag<16> >
  907. {
  908. template< typename Vector > struct apply
  909. {
  910. typedef typename Vector::item0 type;
  911. };
  912. };
  913. template<>
  914. struct back_impl< aux::vector_tag<16> >
  915. {
  916. template< typename Vector > struct apply
  917. {
  918. typedef typename Vector::back type;
  919. };
  920. };
  921. template<>
  922. struct empty_impl< aux::vector_tag<16> >
  923. {
  924. template< typename Vector > struct apply
  925. : false_
  926. {
  927. };
  928. };
  929. template<>
  930. struct size_impl< aux::vector_tag<16> >
  931. {
  932. template< typename Vector > struct apply
  933. : long_<16>
  934. {
  935. };
  936. };
  937. template<>
  938. struct O1_size_impl< aux::vector_tag<16> >
  939. : size_impl< aux::vector_tag<16> >
  940. {
  941. };
  942. template<>
  943. struct clear_impl< aux::vector_tag<16> >
  944. {
  945. template< typename Vector > struct apply
  946. {
  947. typedef vector0<> type;
  948. };
  949. };
  950. template<
  951. typename T0, typename T1, typename T2, typename T3, typename T4
  952. , typename T5, typename T6, typename T7, typename T8, typename T9
  953. , typename T10, typename T11, typename T12, typename T13, typename T14
  954. , typename T15, typename T16
  955. >
  956. struct vector17
  957. {
  958. typedef aux::vector_tag<17> tag;
  959. typedef vector17 type;
  960. typedef T0 item0;
  961. typedef T1 item1;
  962. typedef T2 item2;
  963. typedef T3 item3;
  964. typedef T4 item4;
  965. typedef T5 item5;
  966. typedef T6 item6;
  967. typedef T7 item7;
  968. typedef T8 item8;
  969. typedef T9 item9;
  970. typedef T10 item10;
  971. typedef T11 item11;
  972. typedef T12 item12;
  973. typedef T13 item13;
  974. typedef T14 item14;
  975. typedef T15 item15;
  976. typedef T16 item16;
  977. typedef void_ item17;
  978. typedef T16 back;
  979. typedef v_iter< type,0 > begin;
  980. typedef v_iter< type,17 > end;
  981. };
  982. template<>
  983. struct push_front_impl< aux::vector_tag<16> >
  984. {
  985. template< typename Vector, typename T > struct apply
  986. {
  987. typedef vector17<
  988. T
  989. ,
  990. typename Vector::item0, typename Vector::item1
  991. , typename Vector::item2, typename Vector::item3
  992. , typename Vector::item4, typename Vector::item5
  993. , typename Vector::item6, typename Vector::item7
  994. , typename Vector::item8, typename Vector::item9
  995. , typename Vector::item10, typename Vector::item11
  996. , typename Vector::item12, typename Vector::item13
  997. , typename Vector::item14, typename Vector::item15
  998. > type;
  999. };
  1000. };
  1001. template<>
  1002. struct pop_front_impl< aux::vector_tag<17> >
  1003. {
  1004. template< typename Vector > struct apply
  1005. {
  1006. typedef vector16<
  1007. typename Vector::item1, typename Vector::item2
  1008. , typename Vector::item3, typename Vector::item4
  1009. , typename Vector::item5, typename Vector::item6
  1010. , typename Vector::item7, typename Vector::item8
  1011. , typename Vector::item9, typename Vector::item10
  1012. , typename Vector::item11, typename Vector::item12
  1013. , typename Vector::item13, typename Vector::item14
  1014. , typename Vector::item15, typename Vector::item16
  1015. > type;
  1016. };
  1017. };
  1018. template<>
  1019. struct push_back_impl< aux::vector_tag<16> >
  1020. {
  1021. template< typename Vector, typename T > struct apply
  1022. {
  1023. typedef vector17<
  1024. typename Vector::item0, typename Vector::item1
  1025. , typename Vector::item2, typename Vector::item3
  1026. , typename Vector::item4, typename Vector::item5
  1027. , typename Vector::item6, typename Vector::item7
  1028. , typename Vector::item8, typename Vector::item9
  1029. , typename Vector::item10, typename Vector::item11
  1030. , typename Vector::item12, typename Vector::item13
  1031. , typename Vector::item14, typename Vector::item15
  1032. ,
  1033. T
  1034. > type;
  1035. };
  1036. };
  1037. template<>
  1038. struct pop_back_impl< aux::vector_tag<17> >
  1039. {
  1040. template< typename Vector > struct apply
  1041. {
  1042. typedef vector16<
  1043. typename Vector::item0, typename Vector::item1
  1044. , typename Vector::item2, typename Vector::item3
  1045. , typename Vector::item4, typename Vector::item5
  1046. , typename Vector::item6, typename Vector::item7
  1047. , typename Vector::item8, typename Vector::item9
  1048. , typename Vector::item10, typename Vector::item11
  1049. , typename Vector::item12, typename Vector::item13
  1050. , typename Vector::item14, typename Vector::item15
  1051. > type;
  1052. };
  1053. };
  1054. namespace aux {
  1055. template<> struct v_at_impl<17>
  1056. {
  1057. template< typename V_ > struct result_
  1058. {
  1059. typedef typename V_::item17 type;
  1060. };
  1061. };
  1062. }
  1063. template<>
  1064. struct at_impl< aux::vector_tag<17> >
  1065. {
  1066. template< typename V_, typename N > struct apply
  1067. {
  1068. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  1069. ::template result_<V_>::type type;
  1070. };
  1071. };
  1072. template<>
  1073. struct front_impl< aux::vector_tag<17> >
  1074. {
  1075. template< typename Vector > struct apply
  1076. {
  1077. typedef typename Vector::item0 type;
  1078. };
  1079. };
  1080. template<>
  1081. struct back_impl< aux::vector_tag<17> >
  1082. {
  1083. template< typename Vector > struct apply
  1084. {
  1085. typedef typename Vector::back type;
  1086. };
  1087. };
  1088. template<>
  1089. struct empty_impl< aux::vector_tag<17> >
  1090. {
  1091. template< typename Vector > struct apply
  1092. : false_
  1093. {
  1094. };
  1095. };
  1096. template<>
  1097. struct size_impl< aux::vector_tag<17> >
  1098. {
  1099. template< typename Vector > struct apply
  1100. : long_<17>
  1101. {
  1102. };
  1103. };
  1104. template<>
  1105. struct O1_size_impl< aux::vector_tag<17> >
  1106. : size_impl< aux::vector_tag<17> >
  1107. {
  1108. };
  1109. template<>
  1110. struct clear_impl< aux::vector_tag<17> >
  1111. {
  1112. template< typename Vector > struct apply
  1113. {
  1114. typedef vector0<> type;
  1115. };
  1116. };
  1117. template<
  1118. typename T0, typename T1, typename T2, typename T3, typename T4
  1119. , typename T5, typename T6, typename T7, typename T8, typename T9
  1120. , typename T10, typename T11, typename T12, typename T13, typename T14
  1121. , typename T15, typename T16, typename T17
  1122. >
  1123. struct vector18
  1124. {
  1125. typedef aux::vector_tag<18> tag;
  1126. typedef vector18 type;
  1127. typedef T0 item0;
  1128. typedef T1 item1;
  1129. typedef T2 item2;
  1130. typedef T3 item3;
  1131. typedef T4 item4;
  1132. typedef T5 item5;
  1133. typedef T6 item6;
  1134. typedef T7 item7;
  1135. typedef T8 item8;
  1136. typedef T9 item9;
  1137. typedef T10 item10;
  1138. typedef T11 item11;
  1139. typedef T12 item12;
  1140. typedef T13 item13;
  1141. typedef T14 item14;
  1142. typedef T15 item15;
  1143. typedef T16 item16;
  1144. typedef T17 item17;
  1145. typedef void_ item18;
  1146. typedef T17 back;
  1147. typedef v_iter< type,0 > begin;
  1148. typedef v_iter< type,18 > end;
  1149. };
  1150. template<>
  1151. struct push_front_impl< aux::vector_tag<17> >
  1152. {
  1153. template< typename Vector, typename T > struct apply
  1154. {
  1155. typedef vector18<
  1156. T
  1157. ,
  1158. typename Vector::item0, typename Vector::item1
  1159. , typename Vector::item2, typename Vector::item3
  1160. , typename Vector::item4, typename Vector::item5
  1161. , typename Vector::item6, typename Vector::item7
  1162. , typename Vector::item8, typename Vector::item9
  1163. , typename Vector::item10, typename Vector::item11
  1164. , typename Vector::item12, typename Vector::item13
  1165. , typename Vector::item14, typename Vector::item15
  1166. , typename Vector::item16
  1167. > type;
  1168. };
  1169. };
  1170. template<>
  1171. struct pop_front_impl< aux::vector_tag<18> >
  1172. {
  1173. template< typename Vector > struct apply
  1174. {
  1175. typedef vector17<
  1176. typename Vector::item1, typename Vector::item2
  1177. , typename Vector::item3, typename Vector::item4
  1178. , typename Vector::item5, typename Vector::item6
  1179. , typename Vector::item7, typename Vector::item8
  1180. , typename Vector::item9, typename Vector::item10
  1181. , typename Vector::item11, typename Vector::item12
  1182. , typename Vector::item13, typename Vector::item14
  1183. , typename Vector::item15, typename Vector::item16
  1184. , typename Vector::item17
  1185. > type;
  1186. };
  1187. };
  1188. template<>
  1189. struct push_back_impl< aux::vector_tag<17> >
  1190. {
  1191. template< typename Vector, typename T > struct apply
  1192. {
  1193. typedef vector18<
  1194. typename Vector::item0, typename Vector::item1
  1195. , typename Vector::item2, typename Vector::item3
  1196. , typename Vector::item4, typename Vector::item5
  1197. , typename Vector::item6, typename Vector::item7
  1198. , typename Vector::item8, typename Vector::item9
  1199. , typename Vector::item10, typename Vector::item11
  1200. , typename Vector::item12, typename Vector::item13
  1201. , typename Vector::item14, typename Vector::item15
  1202. , typename Vector::item16
  1203. ,
  1204. T
  1205. > type;
  1206. };
  1207. };
  1208. template<>
  1209. struct pop_back_impl< aux::vector_tag<18> >
  1210. {
  1211. template< typename Vector > struct apply
  1212. {
  1213. typedef vector17<
  1214. typename Vector::item0, typename Vector::item1
  1215. , typename Vector::item2, typename Vector::item3
  1216. , typename Vector::item4, typename Vector::item5
  1217. , typename Vector::item6, typename Vector::item7
  1218. , typename Vector::item8, typename Vector::item9
  1219. , typename Vector::item10, typename Vector::item11
  1220. , typename Vector::item12, typename Vector::item13
  1221. , typename Vector::item14, typename Vector::item15
  1222. , typename Vector::item16
  1223. > type;
  1224. };
  1225. };
  1226. namespace aux {
  1227. template<> struct v_at_impl<18>
  1228. {
  1229. template< typename V_ > struct result_
  1230. {
  1231. typedef typename V_::item18 type;
  1232. };
  1233. };
  1234. }
  1235. template<>
  1236. struct at_impl< aux::vector_tag<18> >
  1237. {
  1238. template< typename V_, typename N > struct apply
  1239. {
  1240. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  1241. ::template result_<V_>::type type;
  1242. };
  1243. };
  1244. template<>
  1245. struct front_impl< aux::vector_tag<18> >
  1246. {
  1247. template< typename Vector > struct apply
  1248. {
  1249. typedef typename Vector::item0 type;
  1250. };
  1251. };
  1252. template<>
  1253. struct back_impl< aux::vector_tag<18> >
  1254. {
  1255. template< typename Vector > struct apply
  1256. {
  1257. typedef typename Vector::back type;
  1258. };
  1259. };
  1260. template<>
  1261. struct empty_impl< aux::vector_tag<18> >
  1262. {
  1263. template< typename Vector > struct apply
  1264. : false_
  1265. {
  1266. };
  1267. };
  1268. template<>
  1269. struct size_impl< aux::vector_tag<18> >
  1270. {
  1271. template< typename Vector > struct apply
  1272. : long_<18>
  1273. {
  1274. };
  1275. };
  1276. template<>
  1277. struct O1_size_impl< aux::vector_tag<18> >
  1278. : size_impl< aux::vector_tag<18> >
  1279. {
  1280. };
  1281. template<>
  1282. struct clear_impl< aux::vector_tag<18> >
  1283. {
  1284. template< typename Vector > struct apply
  1285. {
  1286. typedef vector0<> type;
  1287. };
  1288. };
  1289. template<
  1290. typename T0, typename T1, typename T2, typename T3, typename T4
  1291. , typename T5, typename T6, typename T7, typename T8, typename T9
  1292. , typename T10, typename T11, typename T12, typename T13, typename T14
  1293. , typename T15, typename T16, typename T17, typename T18
  1294. >
  1295. struct vector19
  1296. {
  1297. typedef aux::vector_tag<19> tag;
  1298. typedef vector19 type;
  1299. typedef T0 item0;
  1300. typedef T1 item1;
  1301. typedef T2 item2;
  1302. typedef T3 item3;
  1303. typedef T4 item4;
  1304. typedef T5 item5;
  1305. typedef T6 item6;
  1306. typedef T7 item7;
  1307. typedef T8 item8;
  1308. typedef T9 item9;
  1309. typedef T10 item10;
  1310. typedef T11 item11;
  1311. typedef T12 item12;
  1312. typedef T13 item13;
  1313. typedef T14 item14;
  1314. typedef T15 item15;
  1315. typedef T16 item16;
  1316. typedef T17 item17;
  1317. typedef T18 item18;
  1318. typedef void_ item19;
  1319. typedef T18 back;
  1320. typedef v_iter< type,0 > begin;
  1321. typedef v_iter< type,19 > end;
  1322. };
  1323. template<>
  1324. struct push_front_impl< aux::vector_tag<18> >
  1325. {
  1326. template< typename Vector, typename T > struct apply
  1327. {
  1328. typedef vector19<
  1329. T
  1330. ,
  1331. typename Vector::item0, typename Vector::item1
  1332. , typename Vector::item2, typename Vector::item3
  1333. , typename Vector::item4, typename Vector::item5
  1334. , typename Vector::item6, typename Vector::item7
  1335. , typename Vector::item8, typename Vector::item9
  1336. , typename Vector::item10, typename Vector::item11
  1337. , typename Vector::item12, typename Vector::item13
  1338. , typename Vector::item14, typename Vector::item15
  1339. , typename Vector::item16, typename Vector::item17
  1340. > type;
  1341. };
  1342. };
  1343. template<>
  1344. struct pop_front_impl< aux::vector_tag<19> >
  1345. {
  1346. template< typename Vector > struct apply
  1347. {
  1348. typedef vector18<
  1349. typename Vector::item1, typename Vector::item2
  1350. , typename Vector::item3, typename Vector::item4
  1351. , typename Vector::item5, typename Vector::item6
  1352. , typename Vector::item7, typename Vector::item8
  1353. , typename Vector::item9, typename Vector::item10
  1354. , typename Vector::item11, typename Vector::item12
  1355. , typename Vector::item13, typename Vector::item14
  1356. , typename Vector::item15, typename Vector::item16
  1357. , typename Vector::item17, typename Vector::item18
  1358. > type;
  1359. };
  1360. };
  1361. template<>
  1362. struct push_back_impl< aux::vector_tag<18> >
  1363. {
  1364. template< typename Vector, typename T > struct apply
  1365. {
  1366. typedef vector19<
  1367. typename Vector::item0, typename Vector::item1
  1368. , typename Vector::item2, typename Vector::item3
  1369. , typename Vector::item4, typename Vector::item5
  1370. , typename Vector::item6, typename Vector::item7
  1371. , typename Vector::item8, typename Vector::item9
  1372. , typename Vector::item10, typename Vector::item11
  1373. , typename Vector::item12, typename Vector::item13
  1374. , typename Vector::item14, typename Vector::item15
  1375. , typename Vector::item16, typename Vector::item17
  1376. ,
  1377. T
  1378. > type;
  1379. };
  1380. };
  1381. template<>
  1382. struct pop_back_impl< aux::vector_tag<19> >
  1383. {
  1384. template< typename Vector > struct apply
  1385. {
  1386. typedef vector18<
  1387. typename Vector::item0, typename Vector::item1
  1388. , typename Vector::item2, typename Vector::item3
  1389. , typename Vector::item4, typename Vector::item5
  1390. , typename Vector::item6, typename Vector::item7
  1391. , typename Vector::item8, typename Vector::item9
  1392. , typename Vector::item10, typename Vector::item11
  1393. , typename Vector::item12, typename Vector::item13
  1394. , typename Vector::item14, typename Vector::item15
  1395. , typename Vector::item16, typename Vector::item17
  1396. > type;
  1397. };
  1398. };
  1399. namespace aux {
  1400. template<> struct v_at_impl<19>
  1401. {
  1402. template< typename V_ > struct result_
  1403. {
  1404. typedef typename V_::item19 type;
  1405. };
  1406. };
  1407. }
  1408. template<>
  1409. struct at_impl< aux::vector_tag<19> >
  1410. {
  1411. template< typename V_, typename N > struct apply
  1412. {
  1413. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  1414. ::template result_<V_>::type type;
  1415. };
  1416. };
  1417. template<>
  1418. struct front_impl< aux::vector_tag<19> >
  1419. {
  1420. template< typename Vector > struct apply
  1421. {
  1422. typedef typename Vector::item0 type;
  1423. };
  1424. };
  1425. template<>
  1426. struct back_impl< aux::vector_tag<19> >
  1427. {
  1428. template< typename Vector > struct apply
  1429. {
  1430. typedef typename Vector::back type;
  1431. };
  1432. };
  1433. template<>
  1434. struct empty_impl< aux::vector_tag<19> >
  1435. {
  1436. template< typename Vector > struct apply
  1437. : false_
  1438. {
  1439. };
  1440. };
  1441. template<>
  1442. struct size_impl< aux::vector_tag<19> >
  1443. {
  1444. template< typename Vector > struct apply
  1445. : long_<19>
  1446. {
  1447. };
  1448. };
  1449. template<>
  1450. struct O1_size_impl< aux::vector_tag<19> >
  1451. : size_impl< aux::vector_tag<19> >
  1452. {
  1453. };
  1454. template<>
  1455. struct clear_impl< aux::vector_tag<19> >
  1456. {
  1457. template< typename Vector > struct apply
  1458. {
  1459. typedef vector0<> type;
  1460. };
  1461. };
  1462. template<
  1463. typename T0, typename T1, typename T2, typename T3, typename T4
  1464. , typename T5, typename T6, typename T7, typename T8, typename T9
  1465. , typename T10, typename T11, typename T12, typename T13, typename T14
  1466. , typename T15, typename T16, typename T17, typename T18, typename T19
  1467. >
  1468. struct vector20
  1469. {
  1470. typedef aux::vector_tag<20> tag;
  1471. typedef vector20 type;
  1472. typedef T0 item0;
  1473. typedef T1 item1;
  1474. typedef T2 item2;
  1475. typedef T3 item3;
  1476. typedef T4 item4;
  1477. typedef T5 item5;
  1478. typedef T6 item6;
  1479. typedef T7 item7;
  1480. typedef T8 item8;
  1481. typedef T9 item9;
  1482. typedef T10 item10;
  1483. typedef T11 item11;
  1484. typedef T12 item12;
  1485. typedef T13 item13;
  1486. typedef T14 item14;
  1487. typedef T15 item15;
  1488. typedef T16 item16;
  1489. typedef T17 item17;
  1490. typedef T18 item18;
  1491. typedef T19 item19;
  1492. typedef void_ item20;
  1493. typedef T19 back;
  1494. typedef v_iter< type,0 > begin;
  1495. typedef v_iter< type,20 > end;
  1496. };
  1497. template<>
  1498. struct push_front_impl< aux::vector_tag<19> >
  1499. {
  1500. template< typename Vector, typename T > struct apply
  1501. {
  1502. typedef vector20<
  1503. T
  1504. ,
  1505. typename Vector::item0, typename Vector::item1
  1506. , typename Vector::item2, typename Vector::item3
  1507. , typename Vector::item4, typename Vector::item5
  1508. , typename Vector::item6, typename Vector::item7
  1509. , typename Vector::item8, typename Vector::item9
  1510. , typename Vector::item10, typename Vector::item11
  1511. , typename Vector::item12, typename Vector::item13
  1512. , typename Vector::item14, typename Vector::item15
  1513. , typename Vector::item16, typename Vector::item17
  1514. , typename Vector::item18
  1515. > type;
  1516. };
  1517. };
  1518. template<>
  1519. struct pop_front_impl< aux::vector_tag<20> >
  1520. {
  1521. template< typename Vector > struct apply
  1522. {
  1523. typedef vector19<
  1524. typename Vector::item1, typename Vector::item2
  1525. , typename Vector::item3, typename Vector::item4
  1526. , typename Vector::item5, typename Vector::item6
  1527. , typename Vector::item7, typename Vector::item8
  1528. , typename Vector::item9, typename Vector::item10
  1529. , typename Vector::item11, typename Vector::item12
  1530. , typename Vector::item13, typename Vector::item14
  1531. , typename Vector::item15, typename Vector::item16
  1532. , typename Vector::item17, typename Vector::item18
  1533. , typename Vector::item19
  1534. > type;
  1535. };
  1536. };
  1537. template<>
  1538. struct push_back_impl< aux::vector_tag<19> >
  1539. {
  1540. template< typename Vector, typename T > struct apply
  1541. {
  1542. typedef vector20<
  1543. typename Vector::item0, typename Vector::item1
  1544. , typename Vector::item2, typename Vector::item3
  1545. , typename Vector::item4, typename Vector::item5
  1546. , typename Vector::item6, typename Vector::item7
  1547. , typename Vector::item8, typename Vector::item9
  1548. , typename Vector::item10, typename Vector::item11
  1549. , typename Vector::item12, typename Vector::item13
  1550. , typename Vector::item14, typename Vector::item15
  1551. , typename Vector::item16, typename Vector::item17
  1552. , typename Vector::item18
  1553. ,
  1554. T
  1555. > type;
  1556. };
  1557. };
  1558. template<>
  1559. struct pop_back_impl< aux::vector_tag<20> >
  1560. {
  1561. template< typename Vector > struct apply
  1562. {
  1563. typedef vector19<
  1564. typename Vector::item0, typename Vector::item1
  1565. , typename Vector::item2, typename Vector::item3
  1566. , typename Vector::item4, typename Vector::item5
  1567. , typename Vector::item6, typename Vector::item7
  1568. , typename Vector::item8, typename Vector::item9
  1569. , typename Vector::item10, typename Vector::item11
  1570. , typename Vector::item12, typename Vector::item13
  1571. , typename Vector::item14, typename Vector::item15
  1572. , typename Vector::item16, typename Vector::item17
  1573. , typename Vector::item18
  1574. > type;
  1575. };
  1576. };
  1577. namespace aux {
  1578. template<> struct v_at_impl<20>
  1579. {
  1580. template< typename V_ > struct result_
  1581. {
  1582. typedef typename V_::item20 type;
  1583. };
  1584. };
  1585. }
  1586. template<>
  1587. struct at_impl< aux::vector_tag<20> >
  1588. {
  1589. template< typename V_, typename N > struct apply
  1590. {
  1591. typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
  1592. ::template result_<V_>::type type;
  1593. };
  1594. };
  1595. template<>
  1596. struct front_impl< aux::vector_tag<20> >
  1597. {
  1598. template< typename Vector > struct apply
  1599. {
  1600. typedef typename Vector::item0 type;
  1601. };
  1602. };
  1603. template<>
  1604. struct back_impl< aux::vector_tag<20> >
  1605. {
  1606. template< typename Vector > struct apply
  1607. {
  1608. typedef typename Vector::back type;
  1609. };
  1610. };
  1611. template<>
  1612. struct empty_impl< aux::vector_tag<20> >
  1613. {
  1614. template< typename Vector > struct apply
  1615. : false_
  1616. {
  1617. };
  1618. };
  1619. template<>
  1620. struct size_impl< aux::vector_tag<20> >
  1621. {
  1622. template< typename Vector > struct apply
  1623. : long_<20>
  1624. {
  1625. };
  1626. };
  1627. template<>
  1628. struct O1_size_impl< aux::vector_tag<20> >
  1629. : size_impl< aux::vector_tag<20> >
  1630. {
  1631. };
  1632. template<>
  1633. struct clear_impl< aux::vector_tag<20> >
  1634. {
  1635. template< typename Vector > struct apply
  1636. {
  1637. typedef vector0<> type;
  1638. };
  1639. };
  1640. }}