vector20.hpp 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144
  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. template< typename V >
  96. struct v_at< V,11 >
  97. {
  98. typedef typename V::item11 type;
  99. };
  100. template<
  101. typename T0, typename T1, typename T2, typename T3, typename T4
  102. , typename T5, typename T6, typename T7, typename T8, typename T9
  103. , typename T10, typename T11
  104. >
  105. struct vector12
  106. {
  107. typedef aux::vector_tag<12> tag;
  108. typedef vector12 type;
  109. typedef T0 item0;
  110. typedef T1 item1;
  111. typedef T2 item2;
  112. typedef T3 item3;
  113. typedef T4 item4;
  114. typedef T5 item5;
  115. typedef T6 item6;
  116. typedef T7 item7;
  117. typedef T8 item8;
  118. typedef T9 item9;
  119. typedef T10 item10;
  120. typedef T11 item11;
  121. typedef void_ item12;
  122. typedef T11 back;
  123. typedef v_iter< type,0 > begin;
  124. typedef v_iter< type,12 > end;
  125. };
  126. template<>
  127. struct push_front_impl< aux::vector_tag<11> >
  128. {
  129. template< typename Vector, typename T > struct apply
  130. {
  131. typedef vector12<
  132. T
  133. ,
  134. typename Vector::item0, typename Vector::item1
  135. , typename Vector::item2, typename Vector::item3
  136. , typename Vector::item4, typename Vector::item5
  137. , typename Vector::item6, typename Vector::item7
  138. , typename Vector::item8, typename Vector::item9
  139. , typename Vector::item10
  140. > type;
  141. };
  142. };
  143. template<>
  144. struct pop_front_impl< aux::vector_tag<12> >
  145. {
  146. template< typename Vector > struct apply
  147. {
  148. typedef vector11<
  149. typename Vector::item1, typename Vector::item2
  150. , typename Vector::item3, typename Vector::item4
  151. , typename Vector::item5, typename Vector::item6
  152. , typename Vector::item7, typename Vector::item8
  153. , typename Vector::item9, typename Vector::item10
  154. , typename Vector::item11
  155. > type;
  156. };
  157. };
  158. template<>
  159. struct push_back_impl< aux::vector_tag<11> >
  160. {
  161. template< typename Vector, typename T > struct apply
  162. {
  163. typedef vector12<
  164. typename Vector::item0, typename Vector::item1
  165. , typename Vector::item2, typename Vector::item3
  166. , typename Vector::item4, typename Vector::item5
  167. , typename Vector::item6, typename Vector::item7
  168. , typename Vector::item8, typename Vector::item9
  169. , typename Vector::item10
  170. ,
  171. T
  172. > type;
  173. };
  174. };
  175. template<>
  176. struct pop_back_impl< aux::vector_tag<12> >
  177. {
  178. template< typename Vector > struct apply
  179. {
  180. typedef vector11<
  181. typename Vector::item0, typename Vector::item1
  182. , typename Vector::item2, typename Vector::item3
  183. , typename Vector::item4, typename Vector::item5
  184. , typename Vector::item6, typename Vector::item7
  185. , typename Vector::item8, typename Vector::item9
  186. , typename Vector::item10
  187. > type;
  188. };
  189. };
  190. template< typename V >
  191. struct v_at< V,12 >
  192. {
  193. typedef typename V::item12 type;
  194. };
  195. template<
  196. typename T0, typename T1, typename T2, typename T3, typename T4
  197. , typename T5, typename T6, typename T7, typename T8, typename T9
  198. , typename T10, typename T11, typename T12
  199. >
  200. struct vector13
  201. {
  202. typedef aux::vector_tag<13> tag;
  203. typedef vector13 type;
  204. typedef T0 item0;
  205. typedef T1 item1;
  206. typedef T2 item2;
  207. typedef T3 item3;
  208. typedef T4 item4;
  209. typedef T5 item5;
  210. typedef T6 item6;
  211. typedef T7 item7;
  212. typedef T8 item8;
  213. typedef T9 item9;
  214. typedef T10 item10;
  215. typedef T11 item11;
  216. typedef T12 item12;
  217. typedef void_ item13;
  218. typedef T12 back;
  219. typedef v_iter< type,0 > begin;
  220. typedef v_iter< type,13 > end;
  221. };
  222. template<>
  223. struct push_front_impl< aux::vector_tag<12> >
  224. {
  225. template< typename Vector, typename T > struct apply
  226. {
  227. typedef vector13<
  228. T
  229. ,
  230. typename Vector::item0, typename Vector::item1
  231. , typename Vector::item2, typename Vector::item3
  232. , typename Vector::item4, typename Vector::item5
  233. , typename Vector::item6, typename Vector::item7
  234. , typename Vector::item8, typename Vector::item9
  235. , typename Vector::item10, typename Vector::item11
  236. > type;
  237. };
  238. };
  239. template<>
  240. struct pop_front_impl< aux::vector_tag<13> >
  241. {
  242. template< typename Vector > struct apply
  243. {
  244. typedef vector12<
  245. typename Vector::item1, typename Vector::item2
  246. , typename Vector::item3, typename Vector::item4
  247. , typename Vector::item5, typename Vector::item6
  248. , typename Vector::item7, typename Vector::item8
  249. , typename Vector::item9, typename Vector::item10
  250. , typename Vector::item11, typename Vector::item12
  251. > type;
  252. };
  253. };
  254. template<>
  255. struct push_back_impl< aux::vector_tag<12> >
  256. {
  257. template< typename Vector, typename T > struct apply
  258. {
  259. typedef vector13<
  260. typename Vector::item0, typename Vector::item1
  261. , typename Vector::item2, typename Vector::item3
  262. , typename Vector::item4, typename Vector::item5
  263. , typename Vector::item6, typename Vector::item7
  264. , typename Vector::item8, typename Vector::item9
  265. , typename Vector::item10, typename Vector::item11
  266. ,
  267. T
  268. > type;
  269. };
  270. };
  271. template<>
  272. struct pop_back_impl< aux::vector_tag<13> >
  273. {
  274. template< typename Vector > struct apply
  275. {
  276. typedef vector12<
  277. typename Vector::item0, typename Vector::item1
  278. , typename Vector::item2, typename Vector::item3
  279. , typename Vector::item4, typename Vector::item5
  280. , typename Vector::item6, typename Vector::item7
  281. , typename Vector::item8, typename Vector::item9
  282. , typename Vector::item10, typename Vector::item11
  283. > type;
  284. };
  285. };
  286. template< typename V >
  287. struct v_at< V,13 >
  288. {
  289. typedef typename V::item13 type;
  290. };
  291. template<
  292. typename T0, typename T1, typename T2, typename T3, typename T4
  293. , typename T5, typename T6, typename T7, typename T8, typename T9
  294. , typename T10, typename T11, typename T12, typename T13
  295. >
  296. struct vector14
  297. {
  298. typedef aux::vector_tag<14> tag;
  299. typedef vector14 type;
  300. typedef T0 item0;
  301. typedef T1 item1;
  302. typedef T2 item2;
  303. typedef T3 item3;
  304. typedef T4 item4;
  305. typedef T5 item5;
  306. typedef T6 item6;
  307. typedef T7 item7;
  308. typedef T8 item8;
  309. typedef T9 item9;
  310. typedef T10 item10;
  311. typedef T11 item11;
  312. typedef T12 item12;
  313. typedef T13 item13;
  314. typedef void_ item14;
  315. typedef T13 back;
  316. typedef v_iter< type,0 > begin;
  317. typedef v_iter< type,14 > end;
  318. };
  319. template<>
  320. struct push_front_impl< aux::vector_tag<13> >
  321. {
  322. template< typename Vector, typename T > struct apply
  323. {
  324. typedef vector14<
  325. T
  326. ,
  327. typename Vector::item0, typename Vector::item1
  328. , typename Vector::item2, typename Vector::item3
  329. , typename Vector::item4, typename Vector::item5
  330. , typename Vector::item6, typename Vector::item7
  331. , typename Vector::item8, typename Vector::item9
  332. , typename Vector::item10, typename Vector::item11
  333. , typename Vector::item12
  334. > type;
  335. };
  336. };
  337. template<>
  338. struct pop_front_impl< aux::vector_tag<14> >
  339. {
  340. template< typename Vector > struct apply
  341. {
  342. typedef vector13<
  343. typename Vector::item1, typename Vector::item2
  344. , typename Vector::item3, typename Vector::item4
  345. , typename Vector::item5, typename Vector::item6
  346. , typename Vector::item7, typename Vector::item8
  347. , typename Vector::item9, typename Vector::item10
  348. , typename Vector::item11, typename Vector::item12
  349. , typename Vector::item13
  350. > type;
  351. };
  352. };
  353. template<>
  354. struct push_back_impl< aux::vector_tag<13> >
  355. {
  356. template< typename Vector, typename T > struct apply
  357. {
  358. typedef vector14<
  359. typename Vector::item0, typename Vector::item1
  360. , typename Vector::item2, typename Vector::item3
  361. , typename Vector::item4, typename Vector::item5
  362. , typename Vector::item6, typename Vector::item7
  363. , typename Vector::item8, typename Vector::item9
  364. , typename Vector::item10, typename Vector::item11
  365. , typename Vector::item12
  366. ,
  367. T
  368. > type;
  369. };
  370. };
  371. template<>
  372. struct pop_back_impl< aux::vector_tag<14> >
  373. {
  374. template< typename Vector > struct apply
  375. {
  376. typedef vector13<
  377. typename Vector::item0, typename Vector::item1
  378. , typename Vector::item2, typename Vector::item3
  379. , typename Vector::item4, typename Vector::item5
  380. , typename Vector::item6, typename Vector::item7
  381. , typename Vector::item8, typename Vector::item9
  382. , typename Vector::item10, typename Vector::item11
  383. , typename Vector::item12
  384. > type;
  385. };
  386. };
  387. template< typename V >
  388. struct v_at< V,14 >
  389. {
  390. typedef typename V::item14 type;
  391. };
  392. template<
  393. typename T0, typename T1, typename T2, typename T3, typename T4
  394. , typename T5, typename T6, typename T7, typename T8, typename T9
  395. , typename T10, typename T11, typename T12, typename T13, typename T14
  396. >
  397. struct vector15
  398. {
  399. typedef aux::vector_tag<15> tag;
  400. typedef vector15 type;
  401. typedef T0 item0;
  402. typedef T1 item1;
  403. typedef T2 item2;
  404. typedef T3 item3;
  405. typedef T4 item4;
  406. typedef T5 item5;
  407. typedef T6 item6;
  408. typedef T7 item7;
  409. typedef T8 item8;
  410. typedef T9 item9;
  411. typedef T10 item10;
  412. typedef T11 item11;
  413. typedef T12 item12;
  414. typedef T13 item13;
  415. typedef T14 item14;
  416. typedef void_ item15;
  417. typedef T14 back;
  418. typedef v_iter< type,0 > begin;
  419. typedef v_iter< type,15 > end;
  420. };
  421. template<>
  422. struct push_front_impl< aux::vector_tag<14> >
  423. {
  424. template< typename Vector, typename T > struct apply
  425. {
  426. typedef vector15<
  427. T
  428. ,
  429. typename Vector::item0, typename Vector::item1
  430. , typename Vector::item2, typename Vector::item3
  431. , typename Vector::item4, typename Vector::item5
  432. , typename Vector::item6, typename Vector::item7
  433. , typename Vector::item8, typename Vector::item9
  434. , typename Vector::item10, typename Vector::item11
  435. , typename Vector::item12, typename Vector::item13
  436. > type;
  437. };
  438. };
  439. template<>
  440. struct pop_front_impl< aux::vector_tag<15> >
  441. {
  442. template< typename Vector > struct apply
  443. {
  444. typedef vector14<
  445. typename Vector::item1, typename Vector::item2
  446. , typename Vector::item3, typename Vector::item4
  447. , typename Vector::item5, typename Vector::item6
  448. , typename Vector::item7, typename Vector::item8
  449. , typename Vector::item9, typename Vector::item10
  450. , typename Vector::item11, typename Vector::item12
  451. , typename Vector::item13, typename Vector::item14
  452. > type;
  453. };
  454. };
  455. template<>
  456. struct push_back_impl< aux::vector_tag<14> >
  457. {
  458. template< typename Vector, typename T > struct apply
  459. {
  460. typedef vector15<
  461. typename Vector::item0, typename Vector::item1
  462. , typename Vector::item2, typename Vector::item3
  463. , typename Vector::item4, typename Vector::item5
  464. , typename Vector::item6, typename Vector::item7
  465. , typename Vector::item8, typename Vector::item9
  466. , typename Vector::item10, typename Vector::item11
  467. , typename Vector::item12, typename Vector::item13
  468. ,
  469. T
  470. > type;
  471. };
  472. };
  473. template<>
  474. struct pop_back_impl< aux::vector_tag<15> >
  475. {
  476. template< typename Vector > struct apply
  477. {
  478. typedef vector14<
  479. typename Vector::item0, typename Vector::item1
  480. , typename Vector::item2, typename Vector::item3
  481. , typename Vector::item4, typename Vector::item5
  482. , typename Vector::item6, typename Vector::item7
  483. , typename Vector::item8, typename Vector::item9
  484. , typename Vector::item10, typename Vector::item11
  485. , typename Vector::item12, typename Vector::item13
  486. > type;
  487. };
  488. };
  489. template< typename V >
  490. struct v_at< V,15 >
  491. {
  492. typedef typename V::item15 type;
  493. };
  494. template<
  495. typename T0, typename T1, typename T2, typename T3, typename T4
  496. , typename T5, typename T6, typename T7, typename T8, typename T9
  497. , typename T10, typename T11, typename T12, typename T13, typename T14
  498. , typename T15
  499. >
  500. struct vector16
  501. {
  502. typedef aux::vector_tag<16> tag;
  503. typedef vector16 type;
  504. typedef T0 item0;
  505. typedef T1 item1;
  506. typedef T2 item2;
  507. typedef T3 item3;
  508. typedef T4 item4;
  509. typedef T5 item5;
  510. typedef T6 item6;
  511. typedef T7 item7;
  512. typedef T8 item8;
  513. typedef T9 item9;
  514. typedef T10 item10;
  515. typedef T11 item11;
  516. typedef T12 item12;
  517. typedef T13 item13;
  518. typedef T14 item14;
  519. typedef T15 item15;
  520. typedef void_ item16;
  521. typedef T15 back;
  522. typedef v_iter< type,0 > begin;
  523. typedef v_iter< type,16 > end;
  524. };
  525. template<>
  526. struct push_front_impl< aux::vector_tag<15> >
  527. {
  528. template< typename Vector, typename T > struct apply
  529. {
  530. typedef vector16<
  531. T
  532. ,
  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, typename Vector::item13
  540. , typename Vector::item14
  541. > type;
  542. };
  543. };
  544. template<>
  545. struct pop_front_impl< aux::vector_tag<16> >
  546. {
  547. template< typename Vector > struct apply
  548. {
  549. typedef vector15<
  550. typename Vector::item1, typename Vector::item2
  551. , typename Vector::item3, typename Vector::item4
  552. , typename Vector::item5, typename Vector::item6
  553. , typename Vector::item7, typename Vector::item8
  554. , typename Vector::item9, typename Vector::item10
  555. , typename Vector::item11, typename Vector::item12
  556. , typename Vector::item13, typename Vector::item14
  557. , typename Vector::item15
  558. > type;
  559. };
  560. };
  561. template<>
  562. struct push_back_impl< aux::vector_tag<15> >
  563. {
  564. template< typename Vector, typename T > struct apply
  565. {
  566. typedef vector16<
  567. typename Vector::item0, typename Vector::item1
  568. , typename Vector::item2, typename Vector::item3
  569. , typename Vector::item4, typename Vector::item5
  570. , typename Vector::item6, typename Vector::item7
  571. , typename Vector::item8, typename Vector::item9
  572. , typename Vector::item10, typename Vector::item11
  573. , typename Vector::item12, typename Vector::item13
  574. , typename Vector::item14
  575. ,
  576. T
  577. > type;
  578. };
  579. };
  580. template<>
  581. struct pop_back_impl< aux::vector_tag<16> >
  582. {
  583. template< typename Vector > struct apply
  584. {
  585. typedef vector15<
  586. typename Vector::item0, typename Vector::item1
  587. , typename Vector::item2, typename Vector::item3
  588. , typename Vector::item4, typename Vector::item5
  589. , typename Vector::item6, typename Vector::item7
  590. , typename Vector::item8, typename Vector::item9
  591. , typename Vector::item10, typename Vector::item11
  592. , typename Vector::item12, typename Vector::item13
  593. , typename Vector::item14
  594. > type;
  595. };
  596. };
  597. template< typename V >
  598. struct v_at< V,16 >
  599. {
  600. typedef typename V::item16 type;
  601. };
  602. template<
  603. typename T0, typename T1, typename T2, typename T3, typename T4
  604. , typename T5, typename T6, typename T7, typename T8, typename T9
  605. , typename T10, typename T11, typename T12, typename T13, typename T14
  606. , typename T15, typename T16
  607. >
  608. struct vector17
  609. {
  610. typedef aux::vector_tag<17> tag;
  611. typedef vector17 type;
  612. typedef T0 item0;
  613. typedef T1 item1;
  614. typedef T2 item2;
  615. typedef T3 item3;
  616. typedef T4 item4;
  617. typedef T5 item5;
  618. typedef T6 item6;
  619. typedef T7 item7;
  620. typedef T8 item8;
  621. typedef T9 item9;
  622. typedef T10 item10;
  623. typedef T11 item11;
  624. typedef T12 item12;
  625. typedef T13 item13;
  626. typedef T14 item14;
  627. typedef T15 item15;
  628. typedef T16 item16;
  629. typedef void_ item17;
  630. typedef T16 back;
  631. typedef v_iter< type,0 > begin;
  632. typedef v_iter< type,17 > end;
  633. };
  634. template<>
  635. struct push_front_impl< aux::vector_tag<16> >
  636. {
  637. template< typename Vector, typename T > struct apply
  638. {
  639. typedef vector17<
  640. T
  641. ,
  642. typename Vector::item0, typename Vector::item1
  643. , typename Vector::item2, typename Vector::item3
  644. , typename Vector::item4, typename Vector::item5
  645. , typename Vector::item6, typename Vector::item7
  646. , typename Vector::item8, typename Vector::item9
  647. , typename Vector::item10, typename Vector::item11
  648. , typename Vector::item12, typename Vector::item13
  649. , typename Vector::item14, typename Vector::item15
  650. > type;
  651. };
  652. };
  653. template<>
  654. struct pop_front_impl< aux::vector_tag<17> >
  655. {
  656. template< typename Vector > struct apply
  657. {
  658. typedef vector16<
  659. typename Vector::item1, typename Vector::item2
  660. , typename Vector::item3, typename Vector::item4
  661. , typename Vector::item5, typename Vector::item6
  662. , typename Vector::item7, typename Vector::item8
  663. , typename Vector::item9, typename Vector::item10
  664. , typename Vector::item11, typename Vector::item12
  665. , typename Vector::item13, typename Vector::item14
  666. , typename Vector::item15, typename Vector::item16
  667. > type;
  668. };
  669. };
  670. template<>
  671. struct push_back_impl< aux::vector_tag<16> >
  672. {
  673. template< typename Vector, typename T > struct apply
  674. {
  675. typedef vector17<
  676. typename Vector::item0, typename Vector::item1
  677. , typename Vector::item2, typename Vector::item3
  678. , typename Vector::item4, typename Vector::item5
  679. , typename Vector::item6, typename Vector::item7
  680. , typename Vector::item8, typename Vector::item9
  681. , typename Vector::item10, typename Vector::item11
  682. , typename Vector::item12, typename Vector::item13
  683. , typename Vector::item14, typename Vector::item15
  684. ,
  685. T
  686. > type;
  687. };
  688. };
  689. template<>
  690. struct pop_back_impl< aux::vector_tag<17> >
  691. {
  692. template< typename Vector > struct apply
  693. {
  694. typedef vector16<
  695. typename Vector::item0, typename Vector::item1
  696. , typename Vector::item2, typename Vector::item3
  697. , typename Vector::item4, typename Vector::item5
  698. , typename Vector::item6, typename Vector::item7
  699. , typename Vector::item8, typename Vector::item9
  700. , typename Vector::item10, typename Vector::item11
  701. , typename Vector::item12, typename Vector::item13
  702. , typename Vector::item14, typename Vector::item15
  703. > type;
  704. };
  705. };
  706. template< typename V >
  707. struct v_at< V,17 >
  708. {
  709. typedef typename V::item17 type;
  710. };
  711. template<
  712. typename T0, typename T1, typename T2, typename T3, typename T4
  713. , typename T5, typename T6, typename T7, typename T8, typename T9
  714. , typename T10, typename T11, typename T12, typename T13, typename T14
  715. , typename T15, typename T16, typename T17
  716. >
  717. struct vector18
  718. {
  719. typedef aux::vector_tag<18> tag;
  720. typedef vector18 type;
  721. typedef T0 item0;
  722. typedef T1 item1;
  723. typedef T2 item2;
  724. typedef T3 item3;
  725. typedef T4 item4;
  726. typedef T5 item5;
  727. typedef T6 item6;
  728. typedef T7 item7;
  729. typedef T8 item8;
  730. typedef T9 item9;
  731. typedef T10 item10;
  732. typedef T11 item11;
  733. typedef T12 item12;
  734. typedef T13 item13;
  735. typedef T14 item14;
  736. typedef T15 item15;
  737. typedef T16 item16;
  738. typedef T17 item17;
  739. typedef void_ item18;
  740. typedef T17 back;
  741. typedef v_iter< type,0 > begin;
  742. typedef v_iter< type,18 > end;
  743. };
  744. template<>
  745. struct push_front_impl< aux::vector_tag<17> >
  746. {
  747. template< typename Vector, typename T > struct apply
  748. {
  749. typedef vector18<
  750. T
  751. ,
  752. typename Vector::item0, typename Vector::item1
  753. , typename Vector::item2, typename Vector::item3
  754. , typename Vector::item4, typename Vector::item5
  755. , typename Vector::item6, typename Vector::item7
  756. , typename Vector::item8, typename Vector::item9
  757. , typename Vector::item10, typename Vector::item11
  758. , typename Vector::item12, typename Vector::item13
  759. , typename Vector::item14, typename Vector::item15
  760. , typename Vector::item16
  761. > type;
  762. };
  763. };
  764. template<>
  765. struct pop_front_impl< aux::vector_tag<18> >
  766. {
  767. template< typename Vector > struct apply
  768. {
  769. typedef vector17<
  770. typename Vector::item1, typename Vector::item2
  771. , typename Vector::item3, typename Vector::item4
  772. , typename Vector::item5, typename Vector::item6
  773. , typename Vector::item7, typename Vector::item8
  774. , typename Vector::item9, typename Vector::item10
  775. , typename Vector::item11, typename Vector::item12
  776. , typename Vector::item13, typename Vector::item14
  777. , typename Vector::item15, typename Vector::item16
  778. , typename Vector::item17
  779. > type;
  780. };
  781. };
  782. template<>
  783. struct push_back_impl< aux::vector_tag<17> >
  784. {
  785. template< typename Vector, typename T > struct apply
  786. {
  787. typedef vector18<
  788. typename Vector::item0, typename Vector::item1
  789. , typename Vector::item2, typename Vector::item3
  790. , typename Vector::item4, typename Vector::item5
  791. , typename Vector::item6, typename Vector::item7
  792. , typename Vector::item8, typename Vector::item9
  793. , typename Vector::item10, typename Vector::item11
  794. , typename Vector::item12, typename Vector::item13
  795. , typename Vector::item14, typename Vector::item15
  796. , typename Vector::item16
  797. ,
  798. T
  799. > type;
  800. };
  801. };
  802. template<>
  803. struct pop_back_impl< aux::vector_tag<18> >
  804. {
  805. template< typename Vector > struct apply
  806. {
  807. typedef vector17<
  808. typename Vector::item0, typename Vector::item1
  809. , typename Vector::item2, typename Vector::item3
  810. , typename Vector::item4, typename Vector::item5
  811. , typename Vector::item6, typename Vector::item7
  812. , typename Vector::item8, typename Vector::item9
  813. , typename Vector::item10, typename Vector::item11
  814. , typename Vector::item12, typename Vector::item13
  815. , typename Vector::item14, typename Vector::item15
  816. , typename Vector::item16
  817. > type;
  818. };
  819. };
  820. template< typename V >
  821. struct v_at< V,18 >
  822. {
  823. typedef typename V::item18 type;
  824. };
  825. template<
  826. typename T0, typename T1, typename T2, typename T3, typename T4
  827. , typename T5, typename T6, typename T7, typename T8, typename T9
  828. , typename T10, typename T11, typename T12, typename T13, typename T14
  829. , typename T15, typename T16, typename T17, typename T18
  830. >
  831. struct vector19
  832. {
  833. typedef aux::vector_tag<19> tag;
  834. typedef vector19 type;
  835. typedef T0 item0;
  836. typedef T1 item1;
  837. typedef T2 item2;
  838. typedef T3 item3;
  839. typedef T4 item4;
  840. typedef T5 item5;
  841. typedef T6 item6;
  842. typedef T7 item7;
  843. typedef T8 item8;
  844. typedef T9 item9;
  845. typedef T10 item10;
  846. typedef T11 item11;
  847. typedef T12 item12;
  848. typedef T13 item13;
  849. typedef T14 item14;
  850. typedef T15 item15;
  851. typedef T16 item16;
  852. typedef T17 item17;
  853. typedef T18 item18;
  854. typedef void_ item19;
  855. typedef T18 back;
  856. typedef v_iter< type,0 > begin;
  857. typedef v_iter< type,19 > end;
  858. };
  859. template<>
  860. struct push_front_impl< aux::vector_tag<18> >
  861. {
  862. template< typename Vector, typename T > struct apply
  863. {
  864. typedef vector19<
  865. T
  866. ,
  867. typename Vector::item0, typename Vector::item1
  868. , typename Vector::item2, typename Vector::item3
  869. , typename Vector::item4, typename Vector::item5
  870. , typename Vector::item6, typename Vector::item7
  871. , typename Vector::item8, typename Vector::item9
  872. , typename Vector::item10, typename Vector::item11
  873. , typename Vector::item12, typename Vector::item13
  874. , typename Vector::item14, typename Vector::item15
  875. , typename Vector::item16, typename Vector::item17
  876. > type;
  877. };
  878. };
  879. template<>
  880. struct pop_front_impl< aux::vector_tag<19> >
  881. {
  882. template< typename Vector > struct apply
  883. {
  884. typedef vector18<
  885. typename Vector::item1, typename Vector::item2
  886. , typename Vector::item3, typename Vector::item4
  887. , typename Vector::item5, typename Vector::item6
  888. , typename Vector::item7, typename Vector::item8
  889. , typename Vector::item9, typename Vector::item10
  890. , typename Vector::item11, typename Vector::item12
  891. , typename Vector::item13, typename Vector::item14
  892. , typename Vector::item15, typename Vector::item16
  893. , typename Vector::item17, typename Vector::item18
  894. > type;
  895. };
  896. };
  897. template<>
  898. struct push_back_impl< aux::vector_tag<18> >
  899. {
  900. template< typename Vector, typename T > struct apply
  901. {
  902. typedef vector19<
  903. typename Vector::item0, typename Vector::item1
  904. , typename Vector::item2, typename Vector::item3
  905. , typename Vector::item4, typename Vector::item5
  906. , typename Vector::item6, typename Vector::item7
  907. , typename Vector::item8, typename Vector::item9
  908. , typename Vector::item10, typename Vector::item11
  909. , typename Vector::item12, typename Vector::item13
  910. , typename Vector::item14, typename Vector::item15
  911. , typename Vector::item16, typename Vector::item17
  912. ,
  913. T
  914. > type;
  915. };
  916. };
  917. template<>
  918. struct pop_back_impl< aux::vector_tag<19> >
  919. {
  920. template< typename Vector > struct apply
  921. {
  922. typedef vector18<
  923. typename Vector::item0, typename Vector::item1
  924. , typename Vector::item2, typename Vector::item3
  925. , typename Vector::item4, typename Vector::item5
  926. , typename Vector::item6, typename Vector::item7
  927. , typename Vector::item8, typename Vector::item9
  928. , typename Vector::item10, typename Vector::item11
  929. , typename Vector::item12, typename Vector::item13
  930. , typename Vector::item14, typename Vector::item15
  931. , typename Vector::item16, typename Vector::item17
  932. > type;
  933. };
  934. };
  935. template< typename V >
  936. struct v_at< V,19 >
  937. {
  938. typedef typename V::item19 type;
  939. };
  940. template<
  941. typename T0, typename T1, typename T2, typename T3, typename T4
  942. , typename T5, typename T6, typename T7, typename T8, typename T9
  943. , typename T10, typename T11, typename T12, typename T13, typename T14
  944. , typename T15, typename T16, typename T17, typename T18, typename T19
  945. >
  946. struct vector20
  947. {
  948. typedef aux::vector_tag<20> tag;
  949. typedef vector20 type;
  950. typedef T0 item0;
  951. typedef T1 item1;
  952. typedef T2 item2;
  953. typedef T3 item3;
  954. typedef T4 item4;
  955. typedef T5 item5;
  956. typedef T6 item6;
  957. typedef T7 item7;
  958. typedef T8 item8;
  959. typedef T9 item9;
  960. typedef T10 item10;
  961. typedef T11 item11;
  962. typedef T12 item12;
  963. typedef T13 item13;
  964. typedef T14 item14;
  965. typedef T15 item15;
  966. typedef T16 item16;
  967. typedef T17 item17;
  968. typedef T18 item18;
  969. typedef T19 item19;
  970. typedef void_ item20;
  971. typedef T19 back;
  972. typedef v_iter< type,0 > begin;
  973. typedef v_iter< type,20 > end;
  974. };
  975. template<>
  976. struct push_front_impl< aux::vector_tag<19> >
  977. {
  978. template< typename Vector, typename T > struct apply
  979. {
  980. typedef vector20<
  981. T
  982. ,
  983. typename Vector::item0, typename Vector::item1
  984. , typename Vector::item2, typename Vector::item3
  985. , typename Vector::item4, typename Vector::item5
  986. , typename Vector::item6, typename Vector::item7
  987. , typename Vector::item8, typename Vector::item9
  988. , typename Vector::item10, typename Vector::item11
  989. , typename Vector::item12, typename Vector::item13
  990. , typename Vector::item14, typename Vector::item15
  991. , typename Vector::item16, typename Vector::item17
  992. , typename Vector::item18
  993. > type;
  994. };
  995. };
  996. template<>
  997. struct pop_front_impl< aux::vector_tag<20> >
  998. {
  999. template< typename Vector > struct apply
  1000. {
  1001. typedef vector19<
  1002. typename Vector::item1, typename Vector::item2
  1003. , typename Vector::item3, typename Vector::item4
  1004. , typename Vector::item5, typename Vector::item6
  1005. , typename Vector::item7, typename Vector::item8
  1006. , typename Vector::item9, typename Vector::item10
  1007. , typename Vector::item11, typename Vector::item12
  1008. , typename Vector::item13, typename Vector::item14
  1009. , typename Vector::item15, typename Vector::item16
  1010. , typename Vector::item17, typename Vector::item18
  1011. , typename Vector::item19
  1012. > type;
  1013. };
  1014. };
  1015. template<>
  1016. struct push_back_impl< aux::vector_tag<19> >
  1017. {
  1018. template< typename Vector, typename T > struct apply
  1019. {
  1020. typedef vector20<
  1021. typename Vector::item0, typename Vector::item1
  1022. , typename Vector::item2, typename Vector::item3
  1023. , typename Vector::item4, typename Vector::item5
  1024. , typename Vector::item6, typename Vector::item7
  1025. , typename Vector::item8, typename Vector::item9
  1026. , typename Vector::item10, typename Vector::item11
  1027. , typename Vector::item12, typename Vector::item13
  1028. , typename Vector::item14, typename Vector::item15
  1029. , typename Vector::item16, typename Vector::item17
  1030. , typename Vector::item18
  1031. ,
  1032. T
  1033. > type;
  1034. };
  1035. };
  1036. template<>
  1037. struct pop_back_impl< aux::vector_tag<20> >
  1038. {
  1039. template< typename Vector > struct apply
  1040. {
  1041. typedef vector19<
  1042. typename Vector::item0, typename Vector::item1
  1043. , typename Vector::item2, typename Vector::item3
  1044. , typename Vector::item4, typename Vector::item5
  1045. , typename Vector::item6, typename Vector::item7
  1046. , typename Vector::item8, typename Vector::item9
  1047. , typename Vector::item10, typename Vector::item11
  1048. , typename Vector::item12, typename Vector::item13
  1049. , typename Vector::item14, typename Vector::item15
  1050. , typename Vector::item16, typename Vector::item17
  1051. , typename Vector::item18
  1052. > type;
  1053. };
  1054. };
  1055. template< typename V >
  1056. struct v_at< V,20 >
  1057. {
  1058. typedef typename V::item20 type;
  1059. };
  1060. }}