vvector20.hpp 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  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 void_;
  10. struct fusion_sequence_tag;
  11. template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
  12. struct vector
  13. : sequence_base<vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> >
  14. {
  15. private:
  16. typedef typename detail::vector_n_chooser<
  17. T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>::type
  18. vector_n;
  19. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
  20. friend struct vector;
  21. public:
  22. typedef typename vector_n::types types;
  23. typedef typename vector_n::fusion_tag fusion_tag;
  24. typedef typename vector_n::tag tag;
  25. typedef typename vector_n::size size;
  26. typedef typename vector_n::category category;
  27. typedef typename vector_n::is_view is_view;
  28. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  29. vector()
  30. : vec() {}
  31. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
  32. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  33. vector(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
  34. : vec(rhs.vec) {}
  35. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  36. vector(vector const& rhs)
  37. : vec(rhs.vec) {}
  38. template <typename Sequence>
  39. BOOST_FUSION_GPU_ENABLED
  40. vector(Sequence const& rhs,
  41. typename enable_if<traits::is_sequence<Sequence>, detail::enabler_>::type = detail::enabler)
  42. : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
  43. # if !defined(BOOST_CLANG)
  44. BOOST_CONSTEXPR
  45. # endif
  46. BOOST_FUSION_GPU_ENABLED
  47. explicit
  48. vector(typename detail::call_param<T0 >::type arg0)
  49. : vec(arg0) {}
  50. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  51. template <typename U0>
  52. # if !defined(BOOST_CLANG)
  53. BOOST_CXX14_CONSTEXPR
  54. # endif
  55. BOOST_FUSION_GPU_ENABLED
  56. explicit
  57. vector(U0 && arg0
  58. , typename boost::disable_if_c<boost::is_same<vector, typename boost::remove_cv_ref<U0>::type>::value, detail::enabler_>::type = detail::enabler
  59. )
  60. : vec(std::forward<U0>( arg0)) {}
  61. # endif
  62. # if !defined(BOOST_CLANG)
  63. BOOST_CONSTEXPR
  64. # endif
  65. BOOST_FUSION_GPU_ENABLED
  66. vector(typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1)
  67. : vec(arg0 , arg1) {}
  68. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  69. template <typename U0 , typename U1>
  70. # if !defined(BOOST_CLANG)
  71. BOOST_CXX14_CONSTEXPR
  72. # endif
  73. BOOST_FUSION_GPU_ENABLED
  74. vector(U0 && arg0 , U1 && arg1
  75. )
  76. : vec(std::forward<U0>( arg0) , std::forward<U1>( arg1)) {}
  77. # endif
  78. # if !defined(BOOST_CLANG)
  79. BOOST_CONSTEXPR
  80. # endif
  81. BOOST_FUSION_GPU_ENABLED
  82. vector(typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2)
  83. : vec(arg0 , arg1 , arg2) {}
  84. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  85. template <typename U0 , typename U1 , typename U2>
  86. # if !defined(BOOST_CLANG)
  87. BOOST_CXX14_CONSTEXPR
  88. # endif
  89. BOOST_FUSION_GPU_ENABLED
  90. vector(U0 && arg0 , U1 && arg1 , U2 && arg2
  91. )
  92. : vec(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2)) {}
  93. # endif
  94. # if !defined(BOOST_CLANG)
  95. BOOST_CONSTEXPR
  96. # endif
  97. BOOST_FUSION_GPU_ENABLED
  98. vector(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)
  99. : vec(arg0 , arg1 , arg2 , arg3) {}
  100. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  101. template <typename U0 , typename U1 , typename U2 , typename U3>
  102. # if !defined(BOOST_CLANG)
  103. BOOST_CXX14_CONSTEXPR
  104. # endif
  105. BOOST_FUSION_GPU_ENABLED
  106. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3
  107. )
  108. : vec(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3)) {}
  109. # endif
  110. # if !defined(BOOST_CLANG)
  111. BOOST_CONSTEXPR
  112. # endif
  113. BOOST_FUSION_GPU_ENABLED
  114. vector(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)
  115. : vec(arg0 , arg1 , arg2 , arg3 , arg4) {}
  116. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  117. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
  118. # if !defined(BOOST_CLANG)
  119. BOOST_CXX14_CONSTEXPR
  120. # endif
  121. BOOST_FUSION_GPU_ENABLED
  122. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4
  123. )
  124. : vec(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4)) {}
  125. # endif
  126. # if !defined(BOOST_CLANG)
  127. BOOST_CONSTEXPR
  128. # endif
  129. BOOST_FUSION_GPU_ENABLED
  130. vector(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)
  131. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5) {}
  132. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  133. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
  134. # if !defined(BOOST_CLANG)
  135. BOOST_CXX14_CONSTEXPR
  136. # endif
  137. BOOST_FUSION_GPU_ENABLED
  138. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5
  139. )
  140. : vec(std::forward<U0>( arg0) , std::forward<U1>( arg1) , std::forward<U2>( arg2) , std::forward<U3>( arg3) , std::forward<U4>( arg4) , std::forward<U5>( arg5)) {}
  141. # endif
  142. # if !defined(BOOST_CLANG)
  143. BOOST_CONSTEXPR
  144. # endif
  145. BOOST_FUSION_GPU_ENABLED
  146. vector(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)
  147. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6) {}
  148. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  149. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
  150. # if !defined(BOOST_CLANG)
  151. BOOST_CXX14_CONSTEXPR
  152. # endif
  153. BOOST_FUSION_GPU_ENABLED
  154. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6
  155. )
  156. : vec(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)) {}
  157. # endif
  158. # if !defined(BOOST_CLANG)
  159. BOOST_CONSTEXPR
  160. # endif
  161. BOOST_FUSION_GPU_ENABLED
  162. vector(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)
  163. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7) {}
  164. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  165. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
  166. # if !defined(BOOST_CLANG)
  167. BOOST_CXX14_CONSTEXPR
  168. # endif
  169. BOOST_FUSION_GPU_ENABLED
  170. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7
  171. )
  172. : vec(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)) {}
  173. # endif
  174. # if !defined(BOOST_CLANG)
  175. BOOST_CONSTEXPR
  176. # endif
  177. BOOST_FUSION_GPU_ENABLED
  178. vector(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)
  179. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8) {}
  180. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  181. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
  182. # if !defined(BOOST_CLANG)
  183. BOOST_CXX14_CONSTEXPR
  184. # endif
  185. BOOST_FUSION_GPU_ENABLED
  186. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8
  187. )
  188. : vec(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)) {}
  189. # endif
  190. # if !defined(BOOST_CLANG)
  191. BOOST_CONSTEXPR
  192. # endif
  193. BOOST_FUSION_GPU_ENABLED
  194. vector(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)
  195. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9) {}
  196. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  197. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
  198. # if !defined(BOOST_CLANG)
  199. BOOST_CXX14_CONSTEXPR
  200. # endif
  201. BOOST_FUSION_GPU_ENABLED
  202. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9
  203. )
  204. : vec(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)) {}
  205. # endif
  206. # if !defined(BOOST_CLANG)
  207. BOOST_CONSTEXPR
  208. # endif
  209. BOOST_FUSION_GPU_ENABLED
  210. vector(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 , typename detail::call_param<T10 >::type arg10)
  211. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10) {}
  212. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  213. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
  214. # if !defined(BOOST_CLANG)
  215. BOOST_CXX14_CONSTEXPR
  216. # endif
  217. BOOST_FUSION_GPU_ENABLED
  218. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10
  219. )
  220. : vec(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) , std::forward<U10>( arg10)) {}
  221. # endif
  222. # if !defined(BOOST_CLANG)
  223. BOOST_CONSTEXPR
  224. # endif
  225. BOOST_FUSION_GPU_ENABLED
  226. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11)
  227. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11) {}
  228. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  229. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
  230. # if !defined(BOOST_CLANG)
  231. BOOST_CXX14_CONSTEXPR
  232. # endif
  233. BOOST_FUSION_GPU_ENABLED
  234. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11
  235. )
  236. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11)) {}
  237. # endif
  238. # if !defined(BOOST_CLANG)
  239. BOOST_CONSTEXPR
  240. # endif
  241. BOOST_FUSION_GPU_ENABLED
  242. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12)
  243. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12) {}
  244. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  245. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
  246. # if !defined(BOOST_CLANG)
  247. BOOST_CXX14_CONSTEXPR
  248. # endif
  249. BOOST_FUSION_GPU_ENABLED
  250. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12
  251. )
  252. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12)) {}
  253. # endif
  254. # if !defined(BOOST_CLANG)
  255. BOOST_CONSTEXPR
  256. # endif
  257. BOOST_FUSION_GPU_ENABLED
  258. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12 , typename detail::call_param<T13 >::type arg13)
  259. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13) {}
  260. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  261. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
  262. # if !defined(BOOST_CLANG)
  263. BOOST_CXX14_CONSTEXPR
  264. # endif
  265. BOOST_FUSION_GPU_ENABLED
  266. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12 , U13 && arg13
  267. )
  268. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12) , std::forward<U13>( arg13)) {}
  269. # endif
  270. # if !defined(BOOST_CLANG)
  271. BOOST_CONSTEXPR
  272. # endif
  273. BOOST_FUSION_GPU_ENABLED
  274. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12 , typename detail::call_param<T13 >::type arg13 , typename detail::call_param<T14 >::type arg14)
  275. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14) {}
  276. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  277. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
  278. # if !defined(BOOST_CLANG)
  279. BOOST_CXX14_CONSTEXPR
  280. # endif
  281. BOOST_FUSION_GPU_ENABLED
  282. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12 , U13 && arg13 , U14 && arg14
  283. )
  284. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12) , std::forward<U13>( arg13) , std::forward<U14>( arg14)) {}
  285. # endif
  286. # if !defined(BOOST_CLANG)
  287. BOOST_CONSTEXPR
  288. # endif
  289. BOOST_FUSION_GPU_ENABLED
  290. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12 , typename detail::call_param<T13 >::type arg13 , typename detail::call_param<T14 >::type arg14 , typename detail::call_param<T15 >::type arg15)
  291. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15) {}
  292. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  293. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
  294. # if !defined(BOOST_CLANG)
  295. BOOST_CXX14_CONSTEXPR
  296. # endif
  297. BOOST_FUSION_GPU_ENABLED
  298. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12 , U13 && arg13 , U14 && arg14 , U15 && arg15
  299. )
  300. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12) , std::forward<U13>( arg13) , std::forward<U14>( arg14) , std::forward<U15>( arg15)) {}
  301. # endif
  302. # if !defined(BOOST_CLANG)
  303. BOOST_CONSTEXPR
  304. # endif
  305. BOOST_FUSION_GPU_ENABLED
  306. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12 , typename detail::call_param<T13 >::type arg13 , typename detail::call_param<T14 >::type arg14 , typename detail::call_param<T15 >::type arg15 , typename detail::call_param<T16 >::type arg16)
  307. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16) {}
  308. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  309. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
  310. # if !defined(BOOST_CLANG)
  311. BOOST_CXX14_CONSTEXPR
  312. # endif
  313. BOOST_FUSION_GPU_ENABLED
  314. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12 , U13 && arg13 , U14 && arg14 , U15 && arg15 , U16 && arg16
  315. )
  316. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12) , std::forward<U13>( arg13) , std::forward<U14>( arg14) , std::forward<U15>( arg15) , std::forward<U16>( arg16)) {}
  317. # endif
  318. # if !defined(BOOST_CLANG)
  319. BOOST_CONSTEXPR
  320. # endif
  321. BOOST_FUSION_GPU_ENABLED
  322. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12 , typename detail::call_param<T13 >::type arg13 , typename detail::call_param<T14 >::type arg14 , typename detail::call_param<T15 >::type arg15 , typename detail::call_param<T16 >::type arg16 , typename detail::call_param<T17 >::type arg17)
  323. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16 , arg17) {}
  324. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  325. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
  326. # if !defined(BOOST_CLANG)
  327. BOOST_CXX14_CONSTEXPR
  328. # endif
  329. BOOST_FUSION_GPU_ENABLED
  330. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12 , U13 && arg13 , U14 && arg14 , U15 && arg15 , U16 && arg16 , U17 && arg17
  331. )
  332. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12) , std::forward<U13>( arg13) , std::forward<U14>( arg14) , std::forward<U15>( arg15) , std::forward<U16>( arg16) , std::forward<U17>( arg17)) {}
  333. # endif
  334. # if !defined(BOOST_CLANG)
  335. BOOST_CONSTEXPR
  336. # endif
  337. BOOST_FUSION_GPU_ENABLED
  338. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12 , typename detail::call_param<T13 >::type arg13 , typename detail::call_param<T14 >::type arg14 , typename detail::call_param<T15 >::type arg15 , typename detail::call_param<T16 >::type arg16 , typename detail::call_param<T17 >::type arg17 , typename detail::call_param<T18 >::type arg18)
  339. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16 , arg17 , arg18) {}
  340. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  341. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
  342. # if !defined(BOOST_CLANG)
  343. BOOST_CXX14_CONSTEXPR
  344. # endif
  345. BOOST_FUSION_GPU_ENABLED
  346. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12 , U13 && arg13 , U14 && arg14 , U15 && arg15 , U16 && arg16 , U17 && arg17 , U18 && arg18
  347. )
  348. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12) , std::forward<U13>( arg13) , std::forward<U14>( arg14) , std::forward<U15>( arg15) , std::forward<U16>( arg16) , std::forward<U17>( arg17) , std::forward<U18>( arg18)) {}
  349. # endif
  350. # if !defined(BOOST_CLANG)
  351. BOOST_CONSTEXPR
  352. # endif
  353. BOOST_FUSION_GPU_ENABLED
  354. vector(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 , typename detail::call_param<T10 >::type arg10 , typename detail::call_param<T11 >::type arg11 , typename detail::call_param<T12 >::type arg12 , typename detail::call_param<T13 >::type arg13 , typename detail::call_param<T14 >::type arg14 , typename detail::call_param<T15 >::type arg15 , typename detail::call_param<T16 >::type arg16 , typename detail::call_param<T17 >::type arg17 , typename detail::call_param<T18 >::type arg18 , typename detail::call_param<T19 >::type arg19)
  355. : vec(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16 , arg17 , arg18 , arg19) {}
  356. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  357. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
  358. # if !defined(BOOST_CLANG)
  359. BOOST_CXX14_CONSTEXPR
  360. # endif
  361. BOOST_FUSION_GPU_ENABLED
  362. vector(U0 && arg0 , U1 && arg1 , U2 && arg2 , U3 && arg3 , U4 && arg4 , U5 && arg5 , U6 && arg6 , U7 && arg7 , U8 && arg8 , U9 && arg9 , U10 && arg10 , U11 && arg11 , U12 && arg12 , U13 && arg13 , U14 && arg14 , U15 && arg15 , U16 && arg16 , U17 && arg17 , U18 && arg18 , U19 && arg19
  363. )
  364. : vec(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) , std::forward<U10>( arg10) , std::forward<U11>( arg11) , std::forward<U12>( arg12) , std::forward<U13>( arg13) , std::forward<U14>( arg14) , std::forward<U15>( arg15) , std::forward<U16>( arg16) , std::forward<U17>( arg17) , std::forward<U18>( arg18) , std::forward<U19>( arg19)) {}
  365. # endif
  366. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
  367. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  368. vector&
  369. operator=(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
  370. {
  371. vec = rhs.vec;
  372. return *this;
  373. }
  374. template <typename T>
  375. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  376. vector&
  377. operator=(T const& rhs)
  378. {
  379. vec = rhs;
  380. return *this;
  381. }
  382. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  383. vector&
  384. operator=(vector const& rhs)
  385. {
  386. vec = rhs.vec;
  387. return *this;
  388. }
  389. # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  390. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  391. vector(vector&& rhs)
  392. : vec(std::forward<vector_n>(rhs.vec)) {}
  393. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  394. vector&
  395. operator=(vector&& rhs)
  396. {
  397. vec = std::forward<vector_n>(rhs.vec);
  398. return *this;
  399. }
  400. template <typename T>
  401. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  402. typename boost::disable_if_c<
  403. boost::is_same<vector, typename boost::remove_cv_ref<T>::type>::value
  404. , vector&
  405. >::type
  406. operator=(T&& rhs)
  407. {
  408. vec = std::forward<T>( rhs);
  409. return *this;
  410. }
  411. # endif
  412. template <int N>
  413. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  414. typename add_reference<
  415. typename mpl::at_c<types, N>::type
  416. >::type
  417. at_impl(mpl::int_<N> index)
  418. {
  419. return vec.at_impl(index);
  420. }
  421. template <int N>
  422. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  423. typename add_reference<
  424. typename add_const<
  425. typename mpl::at_c<types, N>::type
  426. >::type
  427. >::type
  428. at_impl(mpl::int_<N> index) const
  429. {
  430. return vec.at_impl(index);
  431. }
  432. template <typename I>
  433. BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  434. typename add_reference<
  435. typename mpl::at<types, I>::type
  436. >::type
  437. at_impl(I )
  438. {
  439. return vec.at_impl(mpl::int_<I::value>());
  440. }
  441. template<typename I>
  442. BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
  443. typename add_reference<
  444. typename add_const<
  445. typename mpl::at<types, I>::type
  446. >::type
  447. >::type
  448. at_impl(I ) const
  449. {
  450. return vec.at_impl(mpl::int_<I::value>());
  451. }
  452. private:
  453. BOOST_FUSION_VECTOR_CTOR_HELPER()
  454. vector_n vec;
  455. };
  456. }}