vector10.hpp 102 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830
  1. /*=============================================================================
  2. Copyright (c) 2001-2011 Joel de Guzman
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. This is an auto-generated file. Do not edit!
  6. ==============================================================================*/
  7. namespace boost { namespace fusion
  8. {
  9. struct vector_tag;
  10. struct fusion_sequence_tag;
  11. struct random_access_traversal_tag;
  12. template <typename T0>
  13. struct vector_data1
  14. {
  15. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  16. vector_data1()
  17. : m0() {}
  18. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  19. template <typename U0>
  20. # if !defined(BOOST_CLANG)
  21. BOOST_CXX14_CONSTEXPR
  22. # endif
  23. BOOST_FUSION_GPU_ENABLED
  24. vector_data1(U0 && arg0
  25. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  26. )
  27. : m0(std::forward<U0>( arg0)) {}
  28. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  29. vector_data1(
  30. vector_data1&& other)
  31. : m0(std::forward<T0>( other.m0)) {}
  32. # endif
  33. # if !defined(BOOST_CLANG)
  34. BOOST_CONSTEXPR
  35. # endif
  36. BOOST_FUSION_GPU_ENABLED
  37. vector_data1(
  38. typename detail::call_param<T0 >::type arg0)
  39. : m0(arg0) {}
  40. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  41. vector_data1(
  42. vector_data1 const& other)
  43. : m0(other.m0) {}
  44. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  45. vector_data1&
  46. operator=(vector_data1 const& vec)
  47. {
  48. this->m0 = vec.m0;
  49. return *this;
  50. }
  51. template <typename Sequence>
  52. # if !defined(BOOST_CLANG)
  53. BOOST_CXX14_CONSTEXPR
  54. # endif
  55. BOOST_FUSION_GPU_ENABLED
  56. static vector_data1
  57. init_from_sequence(Sequence const& seq)
  58. {
  59. typedef typename result_of::begin<Sequence const>::type I0;
  60. I0 i0 = fusion::begin(seq);
  61. return vector_data1(*i0);
  62. }
  63. template <typename Sequence>
  64. # if !defined(BOOST_CLANG)
  65. BOOST_CXX14_CONSTEXPR
  66. # endif
  67. BOOST_FUSION_GPU_ENABLED
  68. static vector_data1
  69. init_from_sequence(Sequence& seq)
  70. {
  71. typedef typename result_of::begin<Sequence>::type I0;
  72. I0 i0 = fusion::begin(seq);
  73. return vector_data1(*i0);
  74. }
  75. T0 m0;
  76. };
  77. template <typename T0>
  78. struct vector1
  79. : vector_data1<T0>
  80. , sequence_base<vector1<T0> >
  81. {
  82. typedef vector1<T0> this_type;
  83. typedef vector_data1<T0> base_type;
  84. typedef mpl::vector1<T0> types;
  85. typedef vector_tag fusion_tag;
  86. typedef fusion_sequence_tag tag;
  87. typedef mpl::false_ is_view;
  88. typedef random_access_traversal_tag category;
  89. typedef mpl::int_<1> size;
  90. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  91. vector1() {}
  92. # if !defined(BOOST_CLANG)
  93. BOOST_CONSTEXPR
  94. # endif
  95. BOOST_FUSION_GPU_ENABLED
  96. explicit
  97. vector1(
  98. typename detail::call_param<T0 >::type arg0)
  99. : base_type(arg0) {}
  100. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  101. template <typename U0>
  102. # if !defined(BOOST_CLANG)
  103. BOOST_CXX14_CONSTEXPR
  104. # endif
  105. BOOST_FUSION_GPU_ENABLED
  106. explicit
  107. vector1(U0&& _0
  108. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  109. )
  110. : base_type(std::forward<U0>( _0)) {}
  111. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  112. vector1(vector1&& rhs)
  113. : base_type(std::forward<base_type>(rhs)) {}
  114. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  115. vector1(vector1 const& rhs)
  116. : base_type(static_cast<base_type const&>(rhs)) {}
  117. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  118. vector1&
  119. operator=(vector1 const& vec)
  120. {
  121. base_type::operator=(vec);
  122. return *this;
  123. }
  124. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  125. vector1&
  126. operator=(vector1&& vec)
  127. {
  128. this->m0 = std::forward< T0>(vec.m0);
  129. return *this;
  130. }
  131. # endif
  132. template <typename U0>
  133. # if !defined(BOOST_CLANG)
  134. BOOST_CXX14_CONSTEXPR
  135. # endif
  136. BOOST_FUSION_GPU_ENABLED
  137. vector1(
  138. vector1<U0> const& vec)
  139. : base_type(vec.m0) {}
  140. template <typename Sequence>
  141. # if !defined(BOOST_CLANG)
  142. BOOST_CXX14_CONSTEXPR
  143. # endif
  144. BOOST_FUSION_GPU_ENABLED
  145. vector1(
  146. Sequence const& seq
  147. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  148. , typename boost::disable_if<is_convertible<Sequence, T0> >::type* = 0
  149. )
  150. : base_type(base_type::init_from_sequence(seq)) {}
  151. template <typename Sequence>
  152. # if !defined(BOOST_CLANG)
  153. BOOST_CXX14_CONSTEXPR
  154. # endif
  155. BOOST_FUSION_GPU_ENABLED
  156. vector1(
  157. Sequence& seq
  158. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  159. , typename boost::disable_if<is_convertible<Sequence, T0> >::type* = 0
  160. )
  161. : base_type(base_type::init_from_sequence(seq)) {}
  162. template <typename U0>
  163. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  164. vector1&
  165. operator=(vector1<U0> const& vec)
  166. {
  167. this->m0 = vec.m0;
  168. return *this;
  169. }
  170. template <typename Sequence>
  171. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  172. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  173. operator=(Sequence const& seq)
  174. {
  175. typedef typename result_of::begin<Sequence const>::type I0;
  176. I0 i0 = fusion::begin(seq);
  177. this->m0 = *i0;
  178. return *this;
  179. }
  180. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; }
  181. template<typename I>
  182. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  183. typename add_reference<typename mpl::at<types, I>::type>::type
  184. at_impl(I)
  185. {
  186. return this->at_impl(mpl::int_<I::value>());
  187. }
  188. template<typename I>
  189. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  190. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  191. at_impl(I) const
  192. {
  193. return this->at_impl(mpl::int_<I::value>());
  194. }
  195. };
  196. template <typename T0 , typename T1>
  197. struct vector_data2
  198. {
  199. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  200. vector_data2()
  201. : m0() , m1() {}
  202. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  203. template <typename U0 , typename U1>
  204. # if !defined(BOOST_CLANG)
  205. BOOST_CXX14_CONSTEXPR
  206. # endif
  207. BOOST_FUSION_GPU_ENABLED
  208. vector_data2(U0 && arg0 , U1 && arg1
  209. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  210. )
  211. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) {}
  212. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  213. vector_data2(
  214. vector_data2&& other)
  215. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) {}
  216. # endif
  217. # if !defined(BOOST_CLANG)
  218. BOOST_CONSTEXPR
  219. # endif
  220. BOOST_FUSION_GPU_ENABLED
  221. vector_data2(
  222. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1)
  223. : m0(arg0) , m1(arg1) {}
  224. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  225. vector_data2(
  226. vector_data2 const& other)
  227. : m0(other.m0) , m1(other.m1) {}
  228. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  229. vector_data2&
  230. operator=(vector_data2 const& vec)
  231. {
  232. this->m0 = vec.m0; this->m1 = vec.m1;
  233. return *this;
  234. }
  235. template <typename Sequence>
  236. # if !defined(BOOST_CLANG)
  237. BOOST_CXX14_CONSTEXPR
  238. # endif
  239. BOOST_FUSION_GPU_ENABLED
  240. static vector_data2
  241. init_from_sequence(Sequence const& seq)
  242. {
  243. typedef typename result_of::begin<Sequence const>::type I0;
  244. I0 i0 = fusion::begin(seq);
  245. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0);
  246. return vector_data2(*i0 , *i1);
  247. }
  248. template <typename Sequence>
  249. # if !defined(BOOST_CLANG)
  250. BOOST_CXX14_CONSTEXPR
  251. # endif
  252. BOOST_FUSION_GPU_ENABLED
  253. static vector_data2
  254. init_from_sequence(Sequence& seq)
  255. {
  256. typedef typename result_of::begin<Sequence>::type I0;
  257. I0 i0 = fusion::begin(seq);
  258. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0);
  259. return vector_data2(*i0 , *i1);
  260. }
  261. T0 m0; T1 m1;
  262. };
  263. template <typename T0 , typename T1>
  264. struct vector2
  265. : vector_data2<T0 , T1>
  266. , sequence_base<vector2<T0 , T1> >
  267. {
  268. typedef vector2<T0 , T1> this_type;
  269. typedef vector_data2<T0 , T1> base_type;
  270. typedef mpl::vector2<T0 , T1> types;
  271. typedef vector_tag fusion_tag;
  272. typedef fusion_sequence_tag tag;
  273. typedef mpl::false_ is_view;
  274. typedef random_access_traversal_tag category;
  275. typedef mpl::int_<2> size;
  276. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  277. vector2() {}
  278. # if !defined(BOOST_CLANG)
  279. BOOST_CONSTEXPR
  280. # endif
  281. BOOST_FUSION_GPU_ENABLED
  282. vector2(
  283. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1)
  284. : base_type(arg0 , arg1) {}
  285. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  286. template <typename U0 , typename U1>
  287. # if !defined(BOOST_CLANG)
  288. BOOST_CXX14_CONSTEXPR
  289. # endif
  290. BOOST_FUSION_GPU_ENABLED
  291. vector2(U0 && arg0 , U1 && arg1)
  292. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1)) {}
  293. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  294. vector2(vector2&& rhs)
  295. : base_type(std::forward<base_type>(rhs)) {}
  296. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  297. vector2(vector2 const& rhs)
  298. : base_type(static_cast<base_type const&>(rhs)) {}
  299. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  300. vector2&
  301. operator=(vector2 const& vec)
  302. {
  303. base_type::operator=(vec);
  304. return *this;
  305. }
  306. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  307. vector2&
  308. operator=(vector2&& vec)
  309. {
  310. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1);
  311. return *this;
  312. }
  313. # endif
  314. template <typename U0 , typename U1>
  315. # if !defined(BOOST_CLANG)
  316. BOOST_CXX14_CONSTEXPR
  317. # endif
  318. BOOST_FUSION_GPU_ENABLED
  319. vector2(
  320. vector2<U0 , U1> const& vec)
  321. : base_type(vec.m0 , vec.m1) {}
  322. template <typename Sequence>
  323. # if !defined(BOOST_CLANG)
  324. BOOST_CXX14_CONSTEXPR
  325. # endif
  326. BOOST_FUSION_GPU_ENABLED
  327. vector2(
  328. Sequence const& seq
  329. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  330. )
  331. : base_type(base_type::init_from_sequence(seq)) {}
  332. template <typename Sequence>
  333. # if !defined(BOOST_CLANG)
  334. BOOST_CXX14_CONSTEXPR
  335. # endif
  336. BOOST_FUSION_GPU_ENABLED
  337. vector2(
  338. Sequence& seq
  339. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  340. )
  341. : base_type(base_type::init_from_sequence(seq)) {}
  342. template <typename U0 , typename U1>
  343. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  344. vector2&
  345. operator=(vector2<U0 , U1> const& vec)
  346. {
  347. this->m0 = vec.m0; this->m1 = vec.m1;
  348. return *this;
  349. }
  350. template <typename Sequence>
  351. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  352. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  353. operator=(Sequence const& seq)
  354. {
  355. typedef typename result_of::begin<Sequence const>::type I0;
  356. I0 i0 = fusion::begin(seq);
  357. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0);
  358. this->m0 = *i0; this->m1 = *i1;
  359. return *this;
  360. }
  361. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; }
  362. template<typename I>
  363. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  364. typename add_reference<typename mpl::at<types, I>::type>::type
  365. at_impl(I)
  366. {
  367. return this->at_impl(mpl::int_<I::value>());
  368. }
  369. template<typename I>
  370. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  371. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  372. at_impl(I) const
  373. {
  374. return this->at_impl(mpl::int_<I::value>());
  375. }
  376. };
  377. template <typename T0 , typename T1 , typename T2>
  378. struct vector_data3
  379. {
  380. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  381. vector_data3()
  382. : m0() , m1() , m2() {}
  383. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  384. template <typename U0 , typename U1 , typename U2>
  385. # if !defined(BOOST_CLANG)
  386. BOOST_CXX14_CONSTEXPR
  387. # endif
  388. BOOST_FUSION_GPU_ENABLED
  389. vector_data3(U0 && arg0 , U1 && arg1 , U2 && arg2
  390. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  391. )
  392. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) {}
  393. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  394. vector_data3(
  395. vector_data3&& other)
  396. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) {}
  397. # endif
  398. # if !defined(BOOST_CLANG)
  399. BOOST_CONSTEXPR
  400. # endif
  401. BOOST_FUSION_GPU_ENABLED
  402. vector_data3(
  403. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2)
  404. : m0(arg0) , m1(arg1) , m2(arg2) {}
  405. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  406. vector_data3(
  407. vector_data3 const& other)
  408. : m0(other.m0) , m1(other.m1) , m2(other.m2) {}
  409. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  410. vector_data3&
  411. operator=(vector_data3 const& vec)
  412. {
  413. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2;
  414. return *this;
  415. }
  416. template <typename Sequence>
  417. # if !defined(BOOST_CLANG)
  418. BOOST_CXX14_CONSTEXPR
  419. # endif
  420. BOOST_FUSION_GPU_ENABLED
  421. static vector_data3
  422. init_from_sequence(Sequence const& seq)
  423. {
  424. typedef typename result_of::begin<Sequence const>::type I0;
  425. I0 i0 = fusion::begin(seq);
  426. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1);
  427. return vector_data3(*i0 , *i1 , *i2);
  428. }
  429. template <typename Sequence>
  430. # if !defined(BOOST_CLANG)
  431. BOOST_CXX14_CONSTEXPR
  432. # endif
  433. BOOST_FUSION_GPU_ENABLED
  434. static vector_data3
  435. init_from_sequence(Sequence& seq)
  436. {
  437. typedef typename result_of::begin<Sequence>::type I0;
  438. I0 i0 = fusion::begin(seq);
  439. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1);
  440. return vector_data3(*i0 , *i1 , *i2);
  441. }
  442. T0 m0; T1 m1; T2 m2;
  443. };
  444. template <typename T0 , typename T1 , typename T2>
  445. struct vector3
  446. : vector_data3<T0 , T1 , T2>
  447. , sequence_base<vector3<T0 , T1 , T2> >
  448. {
  449. typedef vector3<T0 , T1 , T2> this_type;
  450. typedef vector_data3<T0 , T1 , T2> base_type;
  451. typedef mpl::vector3<T0 , T1 , T2> types;
  452. typedef vector_tag fusion_tag;
  453. typedef fusion_sequence_tag tag;
  454. typedef mpl::false_ is_view;
  455. typedef random_access_traversal_tag category;
  456. typedef mpl::int_<3> size;
  457. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  458. vector3() {}
  459. # if !defined(BOOST_CLANG)
  460. BOOST_CONSTEXPR
  461. # endif
  462. BOOST_FUSION_GPU_ENABLED
  463. vector3(
  464. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2)
  465. : base_type(arg0 , arg1 , arg2) {}
  466. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  467. template <typename U0 , typename U1 , typename U2>
  468. # if !defined(BOOST_CLANG)
  469. BOOST_CXX14_CONSTEXPR
  470. # endif
  471. BOOST_FUSION_GPU_ENABLED
  472. vector3(U0 && arg0 , U1 && arg1 , U2 && arg2)
  473. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2)) {}
  474. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  475. vector3(vector3&& rhs)
  476. : base_type(std::forward<base_type>(rhs)) {}
  477. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  478. vector3(vector3 const& rhs)
  479. : base_type(static_cast<base_type const&>(rhs)) {}
  480. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  481. vector3&
  482. operator=(vector3 const& vec)
  483. {
  484. base_type::operator=(vec);
  485. return *this;
  486. }
  487. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  488. vector3&
  489. operator=(vector3&& vec)
  490. {
  491. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2);
  492. return *this;
  493. }
  494. # endif
  495. template <typename U0 , typename U1 , typename U2>
  496. # if !defined(BOOST_CLANG)
  497. BOOST_CXX14_CONSTEXPR
  498. # endif
  499. BOOST_FUSION_GPU_ENABLED
  500. vector3(
  501. vector3<U0 , U1 , U2> const& vec)
  502. : base_type(vec.m0 , vec.m1 , vec.m2) {}
  503. template <typename Sequence>
  504. # if !defined(BOOST_CLANG)
  505. BOOST_CXX14_CONSTEXPR
  506. # endif
  507. BOOST_FUSION_GPU_ENABLED
  508. vector3(
  509. Sequence const& seq
  510. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  511. )
  512. : base_type(base_type::init_from_sequence(seq)) {}
  513. template <typename Sequence>
  514. # if !defined(BOOST_CLANG)
  515. BOOST_CXX14_CONSTEXPR
  516. # endif
  517. BOOST_FUSION_GPU_ENABLED
  518. vector3(
  519. Sequence& seq
  520. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  521. )
  522. : base_type(base_type::init_from_sequence(seq)) {}
  523. template <typename U0 , typename U1 , typename U2>
  524. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  525. vector3&
  526. operator=(vector3<U0 , U1 , U2> const& vec)
  527. {
  528. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2;
  529. return *this;
  530. }
  531. template <typename Sequence>
  532. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  533. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  534. operator=(Sequence const& seq)
  535. {
  536. typedef typename result_of::begin<Sequence const>::type I0;
  537. I0 i0 = fusion::begin(seq);
  538. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1);
  539. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2;
  540. return *this;
  541. }
  542. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; }
  543. template<typename I>
  544. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  545. typename add_reference<typename mpl::at<types, I>::type>::type
  546. at_impl(I)
  547. {
  548. return this->at_impl(mpl::int_<I::value>());
  549. }
  550. template<typename I>
  551. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  552. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  553. at_impl(I) const
  554. {
  555. return this->at_impl(mpl::int_<I::value>());
  556. }
  557. };
  558. template <typename T0 , typename T1 , typename T2 , typename T3>
  559. struct vector_data4
  560. {
  561. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  562. vector_data4()
  563. : m0() , m1() , m2() , m3() {}
  564. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  565. template <typename U0 , typename U1 , typename U2 , typename U3>
  566. # if !defined(BOOST_CLANG)
  567. BOOST_CXX14_CONSTEXPR
  568. # endif
  569. BOOST_FUSION_GPU_ENABLED
  570. vector_data4(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3
  571. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  572. )
  573. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) , m3(std::forward<U3>( arg3)) {}
  574. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  575. vector_data4(
  576. vector_data4&& other)
  577. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) , m3(std::forward<T3>( other.m3)) {}
  578. # endif
  579. # if !defined(BOOST_CLANG)
  580. BOOST_CONSTEXPR
  581. # endif
  582. BOOST_FUSION_GPU_ENABLED
  583. vector_data4(
  584. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3)
  585. : m0(arg0) , m1(arg1) , m2(arg2) , m3(arg3) {}
  586. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  587. vector_data4(
  588. vector_data4 const& other)
  589. : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) {}
  590. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  591. vector_data4&
  592. operator=(vector_data4 const& vec)
  593. {
  594. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3;
  595. return *this;
  596. }
  597. template <typename Sequence>
  598. # if !defined(BOOST_CLANG)
  599. BOOST_CXX14_CONSTEXPR
  600. # endif
  601. BOOST_FUSION_GPU_ENABLED
  602. static vector_data4
  603. init_from_sequence(Sequence const& seq)
  604. {
  605. typedef typename result_of::begin<Sequence const>::type I0;
  606. I0 i0 = fusion::begin(seq);
  607. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2);
  608. return vector_data4(*i0 , *i1 , *i2 , *i3);
  609. }
  610. template <typename Sequence>
  611. # if !defined(BOOST_CLANG)
  612. BOOST_CXX14_CONSTEXPR
  613. # endif
  614. BOOST_FUSION_GPU_ENABLED
  615. static vector_data4
  616. init_from_sequence(Sequence& seq)
  617. {
  618. typedef typename result_of::begin<Sequence>::type I0;
  619. I0 i0 = fusion::begin(seq);
  620. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2);
  621. return vector_data4(*i0 , *i1 , *i2 , *i3);
  622. }
  623. T0 m0; T1 m1; T2 m2; T3 m3;
  624. };
  625. template <typename T0 , typename T1 , typename T2 , typename T3>
  626. struct vector4
  627. : vector_data4<T0 , T1 , T2 , T3>
  628. , sequence_base<vector4<T0 , T1 , T2 , T3> >
  629. {
  630. typedef vector4<T0 , T1 , T2 , T3> this_type;
  631. typedef vector_data4<T0 , T1 , T2 , T3> base_type;
  632. typedef mpl::vector4<T0 , T1 , T2 , T3> types;
  633. typedef vector_tag fusion_tag;
  634. typedef fusion_sequence_tag tag;
  635. typedef mpl::false_ is_view;
  636. typedef random_access_traversal_tag category;
  637. typedef mpl::int_<4> size;
  638. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  639. vector4() {}
  640. # if !defined(BOOST_CLANG)
  641. BOOST_CONSTEXPR
  642. # endif
  643. BOOST_FUSION_GPU_ENABLED
  644. vector4(
  645. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3)
  646. : base_type(arg0 , arg1 , arg2 , arg3) {}
  647. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  648. template <typename U0 , typename U1 , typename U2 , typename U3>
  649. # if !defined(BOOST_CLANG)
  650. BOOST_CXX14_CONSTEXPR
  651. # endif
  652. BOOST_FUSION_GPU_ENABLED
  653. vector4(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3)
  654. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3)) {}
  655. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  656. vector4(vector4&& rhs)
  657. : base_type(std::forward<base_type>(rhs)) {}
  658. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  659. vector4(vector4 const& rhs)
  660. : base_type(static_cast<base_type const&>(rhs)) {}
  661. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  662. vector4&
  663. operator=(vector4 const& vec)
  664. {
  665. base_type::operator=(vec);
  666. return *this;
  667. }
  668. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  669. vector4&
  670. operator=(vector4&& vec)
  671. {
  672. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3);
  673. return *this;
  674. }
  675. # endif
  676. template <typename U0 , typename U1 , typename U2 , typename U3>
  677. # if !defined(BOOST_CLANG)
  678. BOOST_CXX14_CONSTEXPR
  679. # endif
  680. BOOST_FUSION_GPU_ENABLED
  681. vector4(
  682. vector4<U0 , U1 , U2 , U3> const& vec)
  683. : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3) {}
  684. template <typename Sequence>
  685. # if !defined(BOOST_CLANG)
  686. BOOST_CXX14_CONSTEXPR
  687. # endif
  688. BOOST_FUSION_GPU_ENABLED
  689. vector4(
  690. Sequence const& seq
  691. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  692. )
  693. : base_type(base_type::init_from_sequence(seq)) {}
  694. template <typename Sequence>
  695. # if !defined(BOOST_CLANG)
  696. BOOST_CXX14_CONSTEXPR
  697. # endif
  698. BOOST_FUSION_GPU_ENABLED
  699. vector4(
  700. Sequence& seq
  701. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  702. )
  703. : base_type(base_type::init_from_sequence(seq)) {}
  704. template <typename U0 , typename U1 , typename U2 , typename U3>
  705. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  706. vector4&
  707. operator=(vector4<U0 , U1 , U2 , U3> const& vec)
  708. {
  709. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3;
  710. return *this;
  711. }
  712. template <typename Sequence>
  713. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  714. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  715. operator=(Sequence const& seq)
  716. {
  717. typedef typename result_of::begin<Sequence const>::type I0;
  718. I0 i0 = fusion::begin(seq);
  719. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2);
  720. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3;
  721. return *this;
  722. }
  723. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; }
  724. template<typename I>
  725. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  726. typename add_reference<typename mpl::at<types, I>::type>::type
  727. at_impl(I)
  728. {
  729. return this->at_impl(mpl::int_<I::value>());
  730. }
  731. template<typename I>
  732. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  733. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  734. at_impl(I) const
  735. {
  736. return this->at_impl(mpl::int_<I::value>());
  737. }
  738. };
  739. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
  740. struct vector_data5
  741. {
  742. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  743. vector_data5()
  744. : m0() , m1() , m2() , m3() , m4() {}
  745. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  746. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
  747. # if !defined(BOOST_CLANG)
  748. BOOST_CXX14_CONSTEXPR
  749. # endif
  750. BOOST_FUSION_GPU_ENABLED
  751. vector_data5(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4
  752. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  753. )
  754. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) , m3(std::forward<U3>( arg3)) , m4(std::forward<U4>( arg4)) {}
  755. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  756. vector_data5(
  757. vector_data5&& other)
  758. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) , m3(std::forward<T3>( other.m3)) , m4(std::forward<T4>( other.m4)) {}
  759. # endif
  760. # if !defined(BOOST_CLANG)
  761. BOOST_CONSTEXPR
  762. # endif
  763. BOOST_FUSION_GPU_ENABLED
  764. vector_data5(
  765. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4)
  766. : m0(arg0) , m1(arg1) , m2(arg2) , m3(arg3) , m4(arg4) {}
  767. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  768. vector_data5(
  769. vector_data5 const& other)
  770. : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) {}
  771. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  772. vector_data5&
  773. operator=(vector_data5 const& vec)
  774. {
  775. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4;
  776. return *this;
  777. }
  778. template <typename Sequence>
  779. # if !defined(BOOST_CLANG)
  780. BOOST_CXX14_CONSTEXPR
  781. # endif
  782. BOOST_FUSION_GPU_ENABLED
  783. static vector_data5
  784. init_from_sequence(Sequence const& seq)
  785. {
  786. typedef typename result_of::begin<Sequence const>::type I0;
  787. I0 i0 = fusion::begin(seq);
  788. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3);
  789. return vector_data5(*i0 , *i1 , *i2 , *i3 , *i4);
  790. }
  791. template <typename Sequence>
  792. # if !defined(BOOST_CLANG)
  793. BOOST_CXX14_CONSTEXPR
  794. # endif
  795. BOOST_FUSION_GPU_ENABLED
  796. static vector_data5
  797. init_from_sequence(Sequence& seq)
  798. {
  799. typedef typename result_of::begin<Sequence>::type I0;
  800. I0 i0 = fusion::begin(seq);
  801. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3);
  802. return vector_data5(*i0 , *i1 , *i2 , *i3 , *i4);
  803. }
  804. T0 m0; T1 m1; T2 m2; T3 m3; T4 m4;
  805. };
  806. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
  807. struct vector5
  808. : vector_data5<T0 , T1 , T2 , T3 , T4>
  809. , sequence_base<vector5<T0 , T1 , T2 , T3 , T4> >
  810. {
  811. typedef vector5<T0 , T1 , T2 , T3 , T4> this_type;
  812. typedef vector_data5<T0 , T1 , T2 , T3 , T4> base_type;
  813. typedef mpl::vector5<T0 , T1 , T2 , T3 , T4> types;
  814. typedef vector_tag fusion_tag;
  815. typedef fusion_sequence_tag tag;
  816. typedef mpl::false_ is_view;
  817. typedef random_access_traversal_tag category;
  818. typedef mpl::int_<5> size;
  819. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  820. vector5() {}
  821. # if !defined(BOOST_CLANG)
  822. BOOST_CONSTEXPR
  823. # endif
  824. BOOST_FUSION_GPU_ENABLED
  825. vector5(
  826. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4)
  827. : base_type(arg0 , arg1 , arg2 , arg3 , arg4) {}
  828. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  829. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
  830. # if !defined(BOOST_CLANG)
  831. BOOST_CXX14_CONSTEXPR
  832. # endif
  833. BOOST_FUSION_GPU_ENABLED
  834. vector5(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4)
  835. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4)) {}
  836. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  837. vector5(vector5&& rhs)
  838. : base_type(std::forward<base_type>(rhs)) {}
  839. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  840. vector5(vector5 const& rhs)
  841. : base_type(static_cast<base_type const&>(rhs)) {}
  842. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  843. vector5&
  844. operator=(vector5 const& vec)
  845. {
  846. base_type::operator=(vec);
  847. return *this;
  848. }
  849. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  850. vector5&
  851. operator=(vector5&& vec)
  852. {
  853. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4);
  854. return *this;
  855. }
  856. # endif
  857. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
  858. # if !defined(BOOST_CLANG)
  859. BOOST_CXX14_CONSTEXPR
  860. # endif
  861. BOOST_FUSION_GPU_ENABLED
  862. vector5(
  863. vector5<U0 , U1 , U2 , U3 , U4> const& vec)
  864. : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4) {}
  865. template <typename Sequence>
  866. # if !defined(BOOST_CLANG)
  867. BOOST_CXX14_CONSTEXPR
  868. # endif
  869. BOOST_FUSION_GPU_ENABLED
  870. vector5(
  871. Sequence const& seq
  872. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  873. )
  874. : base_type(base_type::init_from_sequence(seq)) {}
  875. template <typename Sequence>
  876. # if !defined(BOOST_CLANG)
  877. BOOST_CXX14_CONSTEXPR
  878. # endif
  879. BOOST_FUSION_GPU_ENABLED
  880. vector5(
  881. Sequence& seq
  882. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  883. )
  884. : base_type(base_type::init_from_sequence(seq)) {}
  885. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
  886. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  887. vector5&
  888. operator=(vector5<U0 , U1 , U2 , U3 , U4> const& vec)
  889. {
  890. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4;
  891. return *this;
  892. }
  893. template <typename Sequence>
  894. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  895. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  896. operator=(Sequence const& seq)
  897. {
  898. typedef typename result_of::begin<Sequence const>::type I0;
  899. I0 i0 = fusion::begin(seq);
  900. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3);
  901. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4;
  902. return *this;
  903. }
  904. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; }
  905. template<typename I>
  906. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  907. typename add_reference<typename mpl::at<types, I>::type>::type
  908. at_impl(I)
  909. {
  910. return this->at_impl(mpl::int_<I::value>());
  911. }
  912. template<typename I>
  913. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  914. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  915. at_impl(I) const
  916. {
  917. return this->at_impl(mpl::int_<I::value>());
  918. }
  919. };
  920. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
  921. struct vector_data6
  922. {
  923. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  924. vector_data6()
  925. : m0() , m1() , m2() , m3() , m4() , m5() {}
  926. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  927. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
  928. # if !defined(BOOST_CLANG)
  929. BOOST_CXX14_CONSTEXPR
  930. # endif
  931. BOOST_FUSION_GPU_ENABLED
  932. vector_data6(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5
  933. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  934. )
  935. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) , m3(std::forward<U3>( arg3)) , m4(std::forward<U4>( arg4)) , m5(std::forward<U5>( arg5)) {}
  936. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  937. vector_data6(
  938. vector_data6&& other)
  939. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) , m3(std::forward<T3>( other.m3)) , m4(std::forward<T4>( other.m4)) , m5(std::forward<T5>( other.m5)) {}
  940. # endif
  941. # if !defined(BOOST_CLANG)
  942. BOOST_CONSTEXPR
  943. # endif
  944. BOOST_FUSION_GPU_ENABLED
  945. vector_data6(
  946. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5)
  947. : m0(arg0) , m1(arg1) , m2(arg2) , m3(arg3) , m4(arg4) , m5(arg5) {}
  948. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  949. vector_data6(
  950. vector_data6 const& other)
  951. : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) {}
  952. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  953. vector_data6&
  954. operator=(vector_data6 const& vec)
  955. {
  956. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5;
  957. return *this;
  958. }
  959. template <typename Sequence>
  960. # if !defined(BOOST_CLANG)
  961. BOOST_CXX14_CONSTEXPR
  962. # endif
  963. BOOST_FUSION_GPU_ENABLED
  964. static vector_data6
  965. init_from_sequence(Sequence const& seq)
  966. {
  967. typedef typename result_of::begin<Sequence const>::type I0;
  968. I0 i0 = fusion::begin(seq);
  969. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4);
  970. return vector_data6(*i0 , *i1 , *i2 , *i3 , *i4 , *i5);
  971. }
  972. template <typename Sequence>
  973. # if !defined(BOOST_CLANG)
  974. BOOST_CXX14_CONSTEXPR
  975. # endif
  976. BOOST_FUSION_GPU_ENABLED
  977. static vector_data6
  978. init_from_sequence(Sequence& seq)
  979. {
  980. typedef typename result_of::begin<Sequence>::type I0;
  981. I0 i0 = fusion::begin(seq);
  982. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4);
  983. return vector_data6(*i0 , *i1 , *i2 , *i3 , *i4 , *i5);
  984. }
  985. T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5;
  986. };
  987. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
  988. struct vector6
  989. : vector_data6<T0 , T1 , T2 , T3 , T4 , T5>
  990. , sequence_base<vector6<T0 , T1 , T2 , T3 , T4 , T5> >
  991. {
  992. typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> this_type;
  993. typedef vector_data6<T0 , T1 , T2 , T3 , T4 , T5> base_type;
  994. typedef mpl::vector6<T0 , T1 , T2 , T3 , T4 , T5> types;
  995. typedef vector_tag fusion_tag;
  996. typedef fusion_sequence_tag tag;
  997. typedef mpl::false_ is_view;
  998. typedef random_access_traversal_tag category;
  999. typedef mpl::int_<6> size;
  1000. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1001. vector6() {}
  1002. # if !defined(BOOST_CLANG)
  1003. BOOST_CONSTEXPR
  1004. # endif
  1005. BOOST_FUSION_GPU_ENABLED
  1006. vector6(
  1007. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5)
  1008. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5) {}
  1009. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1010. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
  1011. # if !defined(BOOST_CLANG)
  1012. BOOST_CXX14_CONSTEXPR
  1013. # endif
  1014. BOOST_FUSION_GPU_ENABLED
  1015. vector6(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5)
  1016. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4) , std::forward<U5>( arg5)) {}
  1017. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1018. vector6(vector6&& rhs)
  1019. : base_type(std::forward<base_type>(rhs)) {}
  1020. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1021. vector6(vector6 const& rhs)
  1022. : base_type(static_cast<base_type const&>(rhs)) {}
  1023. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1024. vector6&
  1025. operator=(vector6 const& vec)
  1026. {
  1027. base_type::operator=(vec);
  1028. return *this;
  1029. }
  1030. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1031. vector6&
  1032. operator=(vector6&& vec)
  1033. {
  1034. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5);
  1035. return *this;
  1036. }
  1037. # endif
  1038. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
  1039. # if !defined(BOOST_CLANG)
  1040. BOOST_CXX14_CONSTEXPR
  1041. # endif
  1042. BOOST_FUSION_GPU_ENABLED
  1043. vector6(
  1044. vector6<U0 , U1 , U2 , U3 , U4 , U5> const& vec)
  1045. : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5) {}
  1046. template <typename Sequence>
  1047. # if !defined(BOOST_CLANG)
  1048. BOOST_CXX14_CONSTEXPR
  1049. # endif
  1050. BOOST_FUSION_GPU_ENABLED
  1051. vector6(
  1052. Sequence const& seq
  1053. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1054. )
  1055. : base_type(base_type::init_from_sequence(seq)) {}
  1056. template <typename Sequence>
  1057. # if !defined(BOOST_CLANG)
  1058. BOOST_CXX14_CONSTEXPR
  1059. # endif
  1060. BOOST_FUSION_GPU_ENABLED
  1061. vector6(
  1062. Sequence& seq
  1063. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1064. )
  1065. : base_type(base_type::init_from_sequence(seq)) {}
  1066. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
  1067. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1068. vector6&
  1069. operator=(vector6<U0 , U1 , U2 , U3 , U4 , U5> const& vec)
  1070. {
  1071. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5;
  1072. return *this;
  1073. }
  1074. template <typename Sequence>
  1075. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1076. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  1077. operator=(Sequence const& seq)
  1078. {
  1079. typedef typename result_of::begin<Sequence const>::type I0;
  1080. I0 i0 = fusion::begin(seq);
  1081. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4);
  1082. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5;
  1083. return *this;
  1084. }
  1085. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; }
  1086. template<typename I>
  1087. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1088. typename add_reference<typename mpl::at<types, I>::type>::type
  1089. at_impl(I)
  1090. {
  1091. return this->at_impl(mpl::int_<I::value>());
  1092. }
  1093. template<typename I>
  1094. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1095. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  1096. at_impl(I) const
  1097. {
  1098. return this->at_impl(mpl::int_<I::value>());
  1099. }
  1100. };
  1101. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
  1102. struct vector_data7
  1103. {
  1104. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1105. vector_data7()
  1106. : m0() , m1() , m2() , m3() , m4() , m5() , m6() {}
  1107. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1108. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
  1109. # if !defined(BOOST_CLANG)
  1110. BOOST_CXX14_CONSTEXPR
  1111. # endif
  1112. BOOST_FUSION_GPU_ENABLED
  1113. vector_data7(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6
  1114. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  1115. )
  1116. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) , m3(std::forward<U3>( arg3)) , m4(std::forward<U4>( arg4)) , m5(std::forward<U5>( arg5)) , m6(std::forward<U6>( arg6)) {}
  1117. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1118. vector_data7(
  1119. vector_data7&& other)
  1120. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) , m3(std::forward<T3>( other.m3)) , m4(std::forward<T4>( other.m4)) , m5(std::forward<T5>( other.m5)) , m6(std::forward<T6>( other.m6)) {}
  1121. # endif
  1122. # if !defined(BOOST_CLANG)
  1123. BOOST_CONSTEXPR
  1124. # endif
  1125. BOOST_FUSION_GPU_ENABLED
  1126. vector_data7(
  1127. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6)
  1128. : m0(arg0) , m1(arg1) , m2(arg2) , m3(arg3) , m4(arg4) , m5(arg5) , m6(arg6) {}
  1129. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1130. vector_data7(
  1131. vector_data7 const& other)
  1132. : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) {}
  1133. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1134. vector_data7&
  1135. operator=(vector_data7 const& vec)
  1136. {
  1137. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6;
  1138. return *this;
  1139. }
  1140. template <typename Sequence>
  1141. # if !defined(BOOST_CLANG)
  1142. BOOST_CXX14_CONSTEXPR
  1143. # endif
  1144. BOOST_FUSION_GPU_ENABLED
  1145. static vector_data7
  1146. init_from_sequence(Sequence const& seq)
  1147. {
  1148. typedef typename result_of::begin<Sequence const>::type I0;
  1149. I0 i0 = fusion::begin(seq);
  1150. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5);
  1151. return vector_data7(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6);
  1152. }
  1153. template <typename Sequence>
  1154. # if !defined(BOOST_CLANG)
  1155. BOOST_CXX14_CONSTEXPR
  1156. # endif
  1157. BOOST_FUSION_GPU_ENABLED
  1158. static vector_data7
  1159. init_from_sequence(Sequence& seq)
  1160. {
  1161. typedef typename result_of::begin<Sequence>::type I0;
  1162. I0 i0 = fusion::begin(seq);
  1163. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5);
  1164. return vector_data7(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6);
  1165. }
  1166. T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6;
  1167. };
  1168. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
  1169. struct vector7
  1170. : vector_data7<T0 , T1 , T2 , T3 , T4 , T5 , T6>
  1171. , sequence_base<vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> >
  1172. {
  1173. typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> this_type;
  1174. typedef vector_data7<T0 , T1 , T2 , T3 , T4 , T5 , T6> base_type;
  1175. typedef mpl::vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> types;
  1176. typedef vector_tag fusion_tag;
  1177. typedef fusion_sequence_tag tag;
  1178. typedef mpl::false_ is_view;
  1179. typedef random_access_traversal_tag category;
  1180. typedef mpl::int_<7> size;
  1181. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1182. vector7() {}
  1183. # if !defined(BOOST_CLANG)
  1184. BOOST_CONSTEXPR
  1185. # endif
  1186. BOOST_FUSION_GPU_ENABLED
  1187. vector7(
  1188. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6)
  1189. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6) {}
  1190. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1191. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
  1192. # if !defined(BOOST_CLANG)
  1193. BOOST_CXX14_CONSTEXPR
  1194. # endif
  1195. BOOST_FUSION_GPU_ENABLED
  1196. vector7(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6)
  1197. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4) , std::forward<U5>( arg5) , std::forward<U6>( arg6)) {}
  1198. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1199. vector7(vector7&& rhs)
  1200. : base_type(std::forward<base_type>(rhs)) {}
  1201. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1202. vector7(vector7 const& rhs)
  1203. : base_type(static_cast<base_type const&>(rhs)) {}
  1204. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1205. vector7&
  1206. operator=(vector7 const& vec)
  1207. {
  1208. base_type::operator=(vec);
  1209. return *this;
  1210. }
  1211. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1212. vector7&
  1213. operator=(vector7&& vec)
  1214. {
  1215. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6);
  1216. return *this;
  1217. }
  1218. # endif
  1219. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
  1220. # if !defined(BOOST_CLANG)
  1221. BOOST_CXX14_CONSTEXPR
  1222. # endif
  1223. BOOST_FUSION_GPU_ENABLED
  1224. vector7(
  1225. vector7<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& vec)
  1226. : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6) {}
  1227. template <typename Sequence>
  1228. # if !defined(BOOST_CLANG)
  1229. BOOST_CXX14_CONSTEXPR
  1230. # endif
  1231. BOOST_FUSION_GPU_ENABLED
  1232. vector7(
  1233. Sequence const& seq
  1234. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1235. )
  1236. : base_type(base_type::init_from_sequence(seq)) {}
  1237. template <typename Sequence>
  1238. # if !defined(BOOST_CLANG)
  1239. BOOST_CXX14_CONSTEXPR
  1240. # endif
  1241. BOOST_FUSION_GPU_ENABLED
  1242. vector7(
  1243. Sequence& seq
  1244. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1245. )
  1246. : base_type(base_type::init_from_sequence(seq)) {}
  1247. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
  1248. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1249. vector7&
  1250. operator=(vector7<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& vec)
  1251. {
  1252. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6;
  1253. return *this;
  1254. }
  1255. template <typename Sequence>
  1256. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1257. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  1258. operator=(Sequence const& seq)
  1259. {
  1260. typedef typename result_of::begin<Sequence const>::type I0;
  1261. I0 i0 = fusion::begin(seq);
  1262. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5);
  1263. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6;
  1264. return *this;
  1265. }
  1266. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; }
  1267. template<typename I>
  1268. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1269. typename add_reference<typename mpl::at<types, I>::type>::type
  1270. at_impl(I)
  1271. {
  1272. return this->at_impl(mpl::int_<I::value>());
  1273. }
  1274. template<typename I>
  1275. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1276. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  1277. at_impl(I) const
  1278. {
  1279. return this->at_impl(mpl::int_<I::value>());
  1280. }
  1281. };
  1282. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
  1283. struct vector_data8
  1284. {
  1285. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1286. vector_data8()
  1287. : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() {}
  1288. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1289. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
  1290. # if !defined(BOOST_CLANG)
  1291. BOOST_CXX14_CONSTEXPR
  1292. # endif
  1293. BOOST_FUSION_GPU_ENABLED
  1294. vector_data8(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7
  1295. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  1296. )
  1297. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) , m3(std::forward<U3>( arg3)) , m4(std::forward<U4>( arg4)) , m5(std::forward<U5>( arg5)) , m6(std::forward<U6>( arg6)) , m7(std::forward<U7>( arg7)) {}
  1298. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1299. vector_data8(
  1300. vector_data8&& other)
  1301. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) , m3(std::forward<T3>( other.m3)) , m4(std::forward<T4>( other.m4)) , m5(std::forward<T5>( other.m5)) , m6(std::forward<T6>( other.m6)) , m7(std::forward<T7>( other.m7)) {}
  1302. # endif
  1303. # if !defined(BOOST_CLANG)
  1304. BOOST_CONSTEXPR
  1305. # endif
  1306. BOOST_FUSION_GPU_ENABLED
  1307. vector_data8(
  1308. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6 , typename detail::call_param<T7 >::type arg7)
  1309. : m0(arg0) , m1(arg1) , m2(arg2) , m3(arg3) , m4(arg4) , m5(arg5) , m6(arg6) , m7(arg7) {}
  1310. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1311. vector_data8(
  1312. vector_data8 const& other)
  1313. : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) {}
  1314. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1315. vector_data8&
  1316. operator=(vector_data8 const& vec)
  1317. {
  1318. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7;
  1319. return *this;
  1320. }
  1321. template <typename Sequence>
  1322. # if !defined(BOOST_CLANG)
  1323. BOOST_CXX14_CONSTEXPR
  1324. # endif
  1325. BOOST_FUSION_GPU_ENABLED
  1326. static vector_data8
  1327. init_from_sequence(Sequence const& seq)
  1328. {
  1329. typedef typename result_of::begin<Sequence const>::type I0;
  1330. I0 i0 = fusion::begin(seq);
  1331. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6);
  1332. return vector_data8(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7);
  1333. }
  1334. template <typename Sequence>
  1335. # if !defined(BOOST_CLANG)
  1336. BOOST_CXX14_CONSTEXPR
  1337. # endif
  1338. BOOST_FUSION_GPU_ENABLED
  1339. static vector_data8
  1340. init_from_sequence(Sequence& seq)
  1341. {
  1342. typedef typename result_of::begin<Sequence>::type I0;
  1343. I0 i0 = fusion::begin(seq);
  1344. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6);
  1345. return vector_data8(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7);
  1346. }
  1347. T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7;
  1348. };
  1349. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
  1350. struct vector8
  1351. : vector_data8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>
  1352. , sequence_base<vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> >
  1353. {
  1354. typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> this_type;
  1355. typedef vector_data8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> base_type;
  1356. typedef mpl::vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> types;
  1357. typedef vector_tag fusion_tag;
  1358. typedef fusion_sequence_tag tag;
  1359. typedef mpl::false_ is_view;
  1360. typedef random_access_traversal_tag category;
  1361. typedef mpl::int_<8> size;
  1362. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1363. vector8() {}
  1364. # if !defined(BOOST_CLANG)
  1365. BOOST_CONSTEXPR
  1366. # endif
  1367. BOOST_FUSION_GPU_ENABLED
  1368. vector8(
  1369. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6 , typename detail::call_param<T7 >::type arg7)
  1370. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7) {}
  1371. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1372. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
  1373. # if !defined(BOOST_CLANG)
  1374. BOOST_CXX14_CONSTEXPR
  1375. # endif
  1376. BOOST_FUSION_GPU_ENABLED
  1377. vector8(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7)
  1378. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4) , std::forward<U5>( arg5) , std::forward<U6>( arg6) , std::forward<U7>( arg7)) {}
  1379. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1380. vector8(vector8&& rhs)
  1381. : base_type(std::forward<base_type>(rhs)) {}
  1382. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1383. vector8(vector8 const& rhs)
  1384. : base_type(static_cast<base_type const&>(rhs)) {}
  1385. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1386. vector8&
  1387. operator=(vector8 const& vec)
  1388. {
  1389. base_type::operator=(vec);
  1390. return *this;
  1391. }
  1392. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1393. vector8&
  1394. operator=(vector8&& vec)
  1395. {
  1396. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7);
  1397. return *this;
  1398. }
  1399. # endif
  1400. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
  1401. # if !defined(BOOST_CLANG)
  1402. BOOST_CXX14_CONSTEXPR
  1403. # endif
  1404. BOOST_FUSION_GPU_ENABLED
  1405. vector8(
  1406. vector8<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& vec)
  1407. : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7) {}
  1408. template <typename Sequence>
  1409. # if !defined(BOOST_CLANG)
  1410. BOOST_CXX14_CONSTEXPR
  1411. # endif
  1412. BOOST_FUSION_GPU_ENABLED
  1413. vector8(
  1414. Sequence const& seq
  1415. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1416. )
  1417. : base_type(base_type::init_from_sequence(seq)) {}
  1418. template <typename Sequence>
  1419. # if !defined(BOOST_CLANG)
  1420. BOOST_CXX14_CONSTEXPR
  1421. # endif
  1422. BOOST_FUSION_GPU_ENABLED
  1423. vector8(
  1424. Sequence& seq
  1425. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1426. )
  1427. : base_type(base_type::init_from_sequence(seq)) {}
  1428. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
  1429. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1430. vector8&
  1431. operator=(vector8<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& vec)
  1432. {
  1433. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7;
  1434. return *this;
  1435. }
  1436. template <typename Sequence>
  1437. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1438. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  1439. operator=(Sequence const& seq)
  1440. {
  1441. typedef typename result_of::begin<Sequence const>::type I0;
  1442. I0 i0 = fusion::begin(seq);
  1443. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6);
  1444. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7;
  1445. return *this;
  1446. }
  1447. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; }
  1448. template<typename I>
  1449. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1450. typename add_reference<typename mpl::at<types, I>::type>::type
  1451. at_impl(I)
  1452. {
  1453. return this->at_impl(mpl::int_<I::value>());
  1454. }
  1455. template<typename I>
  1456. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1457. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  1458. at_impl(I) const
  1459. {
  1460. return this->at_impl(mpl::int_<I::value>());
  1461. }
  1462. };
  1463. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
  1464. struct vector_data9
  1465. {
  1466. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1467. vector_data9()
  1468. : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() {}
  1469. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1470. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
  1471. # if !defined(BOOST_CLANG)
  1472. BOOST_CXX14_CONSTEXPR
  1473. # endif
  1474. BOOST_FUSION_GPU_ENABLED
  1475. vector_data9(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8
  1476. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  1477. )
  1478. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) , m3(std::forward<U3>( arg3)) , m4(std::forward<U4>( arg4)) , m5(std::forward<U5>( arg5)) , m6(std::forward<U6>( arg6)) , m7(std::forward<U7>( arg7)) , m8(std::forward<U8>( arg8)) {}
  1479. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1480. vector_data9(
  1481. vector_data9&& other)
  1482. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) , m3(std::forward<T3>( other.m3)) , m4(std::forward<T4>( other.m4)) , m5(std::forward<T5>( other.m5)) , m6(std::forward<T6>( other.m6)) , m7(std::forward<T7>( other.m7)) , m8(std::forward<T8>( other.m8)) {}
  1483. # endif
  1484. # if !defined(BOOST_CLANG)
  1485. BOOST_CONSTEXPR
  1486. # endif
  1487. BOOST_FUSION_GPU_ENABLED
  1488. vector_data9(
  1489. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6 , typename detail::call_param<T7 >::type arg7 , typename detail::call_param<T8 >::type arg8)
  1490. : m0(arg0) , m1(arg1) , m2(arg2) , m3(arg3) , m4(arg4) , m5(arg5) , m6(arg6) , m7(arg7) , m8(arg8) {}
  1491. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1492. vector_data9(
  1493. vector_data9 const& other)
  1494. : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) {}
  1495. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1496. vector_data9&
  1497. operator=(vector_data9 const& vec)
  1498. {
  1499. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8;
  1500. return *this;
  1501. }
  1502. template <typename Sequence>
  1503. # if !defined(BOOST_CLANG)
  1504. BOOST_CXX14_CONSTEXPR
  1505. # endif
  1506. BOOST_FUSION_GPU_ENABLED
  1507. static vector_data9
  1508. init_from_sequence(Sequence const& seq)
  1509. {
  1510. typedef typename result_of::begin<Sequence const>::type I0;
  1511. I0 i0 = fusion::begin(seq);
  1512. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7);
  1513. return vector_data9(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8);
  1514. }
  1515. template <typename Sequence>
  1516. # if !defined(BOOST_CLANG)
  1517. BOOST_CXX14_CONSTEXPR
  1518. # endif
  1519. BOOST_FUSION_GPU_ENABLED
  1520. static vector_data9
  1521. init_from_sequence(Sequence& seq)
  1522. {
  1523. typedef typename result_of::begin<Sequence>::type I0;
  1524. I0 i0 = fusion::begin(seq);
  1525. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7);
  1526. return vector_data9(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8);
  1527. }
  1528. T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8;
  1529. };
  1530. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
  1531. struct vector9
  1532. : vector_data9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>
  1533. , sequence_base<vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> >
  1534. {
  1535. typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> this_type;
  1536. typedef vector_data9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> base_type;
  1537. typedef mpl::vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> types;
  1538. typedef vector_tag fusion_tag;
  1539. typedef fusion_sequence_tag tag;
  1540. typedef mpl::false_ is_view;
  1541. typedef random_access_traversal_tag category;
  1542. typedef mpl::int_<9> size;
  1543. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1544. vector9() {}
  1545. # if !defined(BOOST_CLANG)
  1546. BOOST_CONSTEXPR
  1547. # endif
  1548. BOOST_FUSION_GPU_ENABLED
  1549. vector9(
  1550. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6 , typename detail::call_param<T7 >::type arg7 , typename detail::call_param<T8 >::type arg8)
  1551. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8) {}
  1552. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1553. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
  1554. # if !defined(BOOST_CLANG)
  1555. BOOST_CXX14_CONSTEXPR
  1556. # endif
  1557. BOOST_FUSION_GPU_ENABLED
  1558. vector9(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8)
  1559. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4) , std::forward<U5>( arg5) , std::forward<U6>( arg6) , std::forward<U7>( arg7) , std::forward<U8>( arg8)) {}
  1560. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1561. vector9(vector9&& rhs)
  1562. : base_type(std::forward<base_type>(rhs)) {}
  1563. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1564. vector9(vector9 const& rhs)
  1565. : base_type(static_cast<base_type const&>(rhs)) {}
  1566. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1567. vector9&
  1568. operator=(vector9 const& vec)
  1569. {
  1570. base_type::operator=(vec);
  1571. return *this;
  1572. }
  1573. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1574. vector9&
  1575. operator=(vector9&& vec)
  1576. {
  1577. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8);
  1578. return *this;
  1579. }
  1580. # endif
  1581. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
  1582. # if !defined(BOOST_CLANG)
  1583. BOOST_CXX14_CONSTEXPR
  1584. # endif
  1585. BOOST_FUSION_GPU_ENABLED
  1586. vector9(
  1587. vector9<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& vec)
  1588. : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8) {}
  1589. template <typename Sequence>
  1590. # if !defined(BOOST_CLANG)
  1591. BOOST_CXX14_CONSTEXPR
  1592. # endif
  1593. BOOST_FUSION_GPU_ENABLED
  1594. vector9(
  1595. Sequence const& seq
  1596. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1597. )
  1598. : base_type(base_type::init_from_sequence(seq)) {}
  1599. template <typename Sequence>
  1600. # if !defined(BOOST_CLANG)
  1601. BOOST_CXX14_CONSTEXPR
  1602. # endif
  1603. BOOST_FUSION_GPU_ENABLED
  1604. vector9(
  1605. Sequence& seq
  1606. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1607. )
  1608. : base_type(base_type::init_from_sequence(seq)) {}
  1609. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
  1610. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1611. vector9&
  1612. operator=(vector9<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& vec)
  1613. {
  1614. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8;
  1615. return *this;
  1616. }
  1617. template <typename Sequence>
  1618. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1619. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  1620. operator=(Sequence const& seq)
  1621. {
  1622. typedef typename result_of::begin<Sequence const>::type I0;
  1623. I0 i0 = fusion::begin(seq);
  1624. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7);
  1625. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8;
  1626. return *this;
  1627. }
  1628. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; }
  1629. template<typename I>
  1630. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1631. typename add_reference<typename mpl::at<types, I>::type>::type
  1632. at_impl(I)
  1633. {
  1634. return this->at_impl(mpl::int_<I::value>());
  1635. }
  1636. template<typename I>
  1637. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1638. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  1639. at_impl(I) const
  1640. {
  1641. return this->at_impl(mpl::int_<I::value>());
  1642. }
  1643. };
  1644. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
  1645. struct vector_data10
  1646. {
  1647. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1648. vector_data10()
  1649. : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() {}
  1650. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1651. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
  1652. # if !defined(BOOST_CLANG)
  1653. BOOST_CXX14_CONSTEXPR
  1654. # endif
  1655. BOOST_FUSION_GPU_ENABLED
  1656. vector_data10(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9
  1657. , typename boost::enable_if<is_convertible<U0, T0> >::type* = 0
  1658. )
  1659. : m0(std::forward<U0>( arg0)) , m1(std::forward<U1>( arg1)) , m2(std::forward<U2>( arg2)) , m3(std::forward<U3>( arg3)) , m4(std::forward<U4>( arg4)) , m5(std::forward<U5>( arg5)) , m6(std::forward<U6>( arg6)) , m7(std::forward<U7>( arg7)) , m8(std::forward<U8>( arg8)) , m9(std::forward<U9>( arg9)) {}
  1660. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1661. vector_data10(
  1662. vector_data10&& other)
  1663. : m0(std::forward<T0>( other.m0)) , m1(std::forward<T1>( other.m1)) , m2(std::forward<T2>( other.m2)) , m3(std::forward<T3>( other.m3)) , m4(std::forward<T4>( other.m4)) , m5(std::forward<T5>( other.m5)) , m6(std::forward<T6>( other.m6)) , m7(std::forward<T7>( other.m7)) , m8(std::forward<T8>( other.m8)) , m9(std::forward<T9>( other.m9)) {}
  1664. # endif
  1665. # if !defined(BOOST_CLANG)
  1666. BOOST_CONSTEXPR
  1667. # endif
  1668. BOOST_FUSION_GPU_ENABLED
  1669. vector_data10(
  1670. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6 , typename detail::call_param<T7 >::type arg7 , typename detail::call_param<T8 >::type arg8 , typename detail::call_param<T9 >::type arg9)
  1671. : m0(arg0) , m1(arg1) , m2(arg2) , m3(arg3) , m4(arg4) , m5(arg5) , m6(arg6) , m7(arg7) , m8(arg8) , m9(arg9) {}
  1672. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1673. vector_data10(
  1674. vector_data10 const& other)
  1675. : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) {}
  1676. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1677. vector_data10&
  1678. operator=(vector_data10 const& vec)
  1679. {
  1680. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9;
  1681. return *this;
  1682. }
  1683. template <typename Sequence>
  1684. # if !defined(BOOST_CLANG)
  1685. BOOST_CXX14_CONSTEXPR
  1686. # endif
  1687. BOOST_FUSION_GPU_ENABLED
  1688. static vector_data10
  1689. init_from_sequence(Sequence const& seq)
  1690. {
  1691. typedef typename result_of::begin<Sequence const>::type I0;
  1692. I0 i0 = fusion::begin(seq);
  1693. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8);
  1694. return vector_data10(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
  1695. }
  1696. template <typename Sequence>
  1697. # if !defined(BOOST_CLANG)
  1698. BOOST_CXX14_CONSTEXPR
  1699. # endif
  1700. BOOST_FUSION_GPU_ENABLED
  1701. static vector_data10
  1702. init_from_sequence(Sequence& seq)
  1703. {
  1704. typedef typename result_of::begin<Sequence>::type I0;
  1705. I0 i0 = fusion::begin(seq);
  1706. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8);
  1707. return vector_data10(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
  1708. }
  1709. T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9;
  1710. };
  1711. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
  1712. struct vector10
  1713. : vector_data10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
  1714. , sequence_base<vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> >
  1715. {
  1716. typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> this_type;
  1717. typedef vector_data10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> base_type;
  1718. typedef mpl::vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> types;
  1719. typedef vector_tag fusion_tag;
  1720. typedef fusion_sequence_tag tag;
  1721. typedef mpl::false_ is_view;
  1722. typedef random_access_traversal_tag category;
  1723. typedef mpl::int_<10> size;
  1724. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1725. vector10() {}
  1726. # if !defined(BOOST_CLANG)
  1727. BOOST_CONSTEXPR
  1728. # endif
  1729. BOOST_FUSION_GPU_ENABLED
  1730. vector10(
  1731. typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2 , typename detail::call_param<T3 >::type arg3 , typename detail::call_param<T4 >::type arg4 , typename detail::call_param<T5 >::type arg5 , typename detail::call_param<T6 >::type arg6 , typename detail::call_param<T7 >::type arg7 , typename detail::call_param<T8 >::type arg8 , typename detail::call_param<T9 >::type arg9)
  1732. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9) {}
  1733. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  1734. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
  1735. # if !defined(BOOST_CLANG)
  1736. BOOST_CXX14_CONSTEXPR
  1737. # endif
  1738. BOOST_FUSION_GPU_ENABLED
  1739. vector10(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9)
  1740. : base_type(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4) , std::forward<U5>( arg5) , std::forward<U6>( arg6) , std::forward<U7>( arg7) , std::forward<U8>( arg8) , std::forward<U9>( arg9)) {}
  1741. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1742. vector10(vector10&& rhs)
  1743. : base_type(std::forward<base_type>(rhs)) {}
  1744. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1745. vector10(vector10 const& rhs)
  1746. : base_type(static_cast<base_type const&>(rhs)) {}
  1747. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1748. vector10&
  1749. operator=(vector10 const& vec)
  1750. {
  1751. base_type::operator=(vec);
  1752. return *this;
  1753. }
  1754. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1755. vector10&
  1756. operator=(vector10&& vec)
  1757. {
  1758. this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9);
  1759. return *this;
  1760. }
  1761. # endif
  1762. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
  1763. # if !defined(BOOST_CLANG)
  1764. BOOST_CXX14_CONSTEXPR
  1765. # endif
  1766. BOOST_FUSION_GPU_ENABLED
  1767. vector10(
  1768. vector10<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& vec)
  1769. : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9) {}
  1770. template <typename Sequence>
  1771. # if !defined(BOOST_CLANG)
  1772. BOOST_CXX14_CONSTEXPR
  1773. # endif
  1774. BOOST_FUSION_GPU_ENABLED
  1775. vector10(
  1776. Sequence const& seq
  1777. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1778. )
  1779. : base_type(base_type::init_from_sequence(seq)) {}
  1780. template <typename Sequence>
  1781. # if !defined(BOOST_CLANG)
  1782. BOOST_CXX14_CONSTEXPR
  1783. # endif
  1784. BOOST_FUSION_GPU_ENABLED
  1785. vector10(
  1786. Sequence& seq
  1787. , typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0
  1788. )
  1789. : base_type(base_type::init_from_sequence(seq)) {}
  1790. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
  1791. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1792. vector10&
  1793. operator=(vector10<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& vec)
  1794. {
  1795. this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9;
  1796. return *this;
  1797. }
  1798. template <typename Sequence>
  1799. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1800. typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
  1801. operator=(Sequence const& seq)
  1802. {
  1803. typedef typename result_of::begin<Sequence const>::type I0;
  1804. I0 i0 = fusion::begin(seq);
  1805. typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8);
  1806. this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9;
  1807. return *this;
  1808. }
  1809. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; }
  1810. template<typename I>
  1811. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1812. typename add_reference<typename mpl::at<types, I>::type>::type
  1813. at_impl(I)
  1814. {
  1815. return this->at_impl(mpl::int_<I::value>());
  1816. }
  1817. template<typename I>
  1818. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  1819. typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
  1820. at_impl(I) const
  1821. {
  1822. return this->at_impl(mpl::int_<I::value>());
  1823. }
  1824. };
  1825. }}