tuple20.hpp 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  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. 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>
  10. struct tuple : vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>
  11. {
  12. typedef vector<
  13. T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>
  14. base_type;
  15. BOOST_FUSION_GPU_ENABLED tuple()
  16. : base_type() {}
  17. BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs)
  18. : base_type(static_cast<base_type const&>(rhs)) {}
  19. template <typename U1, typename U2>
  20. BOOST_FUSION_GPU_ENABLED
  21. tuple(std::pair<U1, U2> const& rhs)
  22. : base_type(rhs) {}
  23. BOOST_FUSION_GPU_ENABLED
  24. explicit
  25. tuple(typename detail::call_param<T0 >::type arg0)
  26. : base_type(arg0) {}
  27. template <typename U0>
  28. BOOST_FUSION_GPU_ENABLED
  29. tuple(tuple<U0> const& rhs)
  30. : base_type(rhs) {}
  31. template <typename U0>
  32. BOOST_FUSION_GPU_ENABLED
  33. tuple& operator=(tuple<U0> const& rhs)
  34. {
  35. base_type::operator=(rhs);
  36. return *this;
  37. }
  38. BOOST_FUSION_GPU_ENABLED
  39. tuple(typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1)
  40. : base_type(arg0 , arg1) {}
  41. template <typename U0 , typename U1>
  42. BOOST_FUSION_GPU_ENABLED
  43. tuple(tuple<U0 , U1> const& rhs)
  44. : base_type(rhs) {}
  45. template <typename U0 , typename U1>
  46. BOOST_FUSION_GPU_ENABLED
  47. tuple& operator=(tuple<U0 , U1> const& rhs)
  48. {
  49. base_type::operator=(rhs);
  50. return *this;
  51. }
  52. BOOST_FUSION_GPU_ENABLED
  53. tuple(typename detail::call_param<T0 >::type arg0 , typename detail::call_param<T1 >::type arg1 , typename detail::call_param<T2 >::type arg2)
  54. : base_type(arg0 , arg1 , arg2) {}
  55. template <typename U0 , typename U1 , typename U2>
  56. BOOST_FUSION_GPU_ENABLED
  57. tuple(tuple<U0 , U1 , U2> const& rhs)
  58. : base_type(rhs) {}
  59. template <typename U0 , typename U1 , typename U2>
  60. BOOST_FUSION_GPU_ENABLED
  61. tuple& operator=(tuple<U0 , U1 , U2> const& rhs)
  62. {
  63. base_type::operator=(rhs);
  64. return *this;
  65. }
  66. BOOST_FUSION_GPU_ENABLED
  67. tuple(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)
  68. : base_type(arg0 , arg1 , arg2 , arg3) {}
  69. template <typename U0 , typename U1 , typename U2 , typename U3>
  70. BOOST_FUSION_GPU_ENABLED
  71. tuple(tuple<U0 , U1 , U2 , U3> const& rhs)
  72. : base_type(rhs) {}
  73. template <typename U0 , typename U1 , typename U2 , typename U3>
  74. BOOST_FUSION_GPU_ENABLED
  75. tuple& operator=(tuple<U0 , U1 , U2 , U3> const& rhs)
  76. {
  77. base_type::operator=(rhs);
  78. return *this;
  79. }
  80. BOOST_FUSION_GPU_ENABLED
  81. tuple(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)
  82. : base_type(arg0 , arg1 , arg2 , arg3 , arg4) {}
  83. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
  84. BOOST_FUSION_GPU_ENABLED
  85. tuple(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
  86. : base_type(rhs) {}
  87. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
  88. BOOST_FUSION_GPU_ENABLED
  89. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
  90. {
  91. base_type::operator=(rhs);
  92. return *this;
  93. }
  94. BOOST_FUSION_GPU_ENABLED
  95. tuple(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)
  96. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5) {}
  97. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
  98. BOOST_FUSION_GPU_ENABLED
  99. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
  100. : base_type(rhs) {}
  101. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
  102. BOOST_FUSION_GPU_ENABLED
  103. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
  104. {
  105. base_type::operator=(rhs);
  106. return *this;
  107. }
  108. BOOST_FUSION_GPU_ENABLED
  109. tuple(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)
  110. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6) {}
  111. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
  112. BOOST_FUSION_GPU_ENABLED
  113. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
  114. : base_type(rhs) {}
  115. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
  116. BOOST_FUSION_GPU_ENABLED
  117. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
  118. {
  119. base_type::operator=(rhs);
  120. return *this;
  121. }
  122. BOOST_FUSION_GPU_ENABLED
  123. tuple(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)
  124. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7) {}
  125. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
  126. BOOST_FUSION_GPU_ENABLED
  127. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
  128. : base_type(rhs) {}
  129. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
  130. BOOST_FUSION_GPU_ENABLED
  131. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
  132. {
  133. base_type::operator=(rhs);
  134. return *this;
  135. }
  136. BOOST_FUSION_GPU_ENABLED
  137. tuple(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)
  138. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8) {}
  139. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
  140. BOOST_FUSION_GPU_ENABLED
  141. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
  142. : base_type(rhs) {}
  143. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
  144. BOOST_FUSION_GPU_ENABLED
  145. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
  146. {
  147. base_type::operator=(rhs);
  148. return *this;
  149. }
  150. BOOST_FUSION_GPU_ENABLED
  151. tuple(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)
  152. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9) {}
  153. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
  154. BOOST_FUSION_GPU_ENABLED
  155. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
  156. : base_type(rhs) {}
  157. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
  158. BOOST_FUSION_GPU_ENABLED
  159. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
  160. {
  161. base_type::operator=(rhs);
  162. return *this;
  163. }
  164. BOOST_FUSION_GPU_ENABLED
  165. tuple(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)
  166. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10) {}
  167. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
  168. BOOST_FUSION_GPU_ENABLED
  169. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
  170. : base_type(rhs) {}
  171. template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
  172. BOOST_FUSION_GPU_ENABLED
  173. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
  174. {
  175. base_type::operator=(rhs);
  176. return *this;
  177. }
  178. BOOST_FUSION_GPU_ENABLED
  179. tuple(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)
  180. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11) {}
  181. 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>
  182. BOOST_FUSION_GPU_ENABLED
  183. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
  184. : base_type(rhs) {}
  185. 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>
  186. BOOST_FUSION_GPU_ENABLED
  187. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
  188. {
  189. base_type::operator=(rhs);
  190. return *this;
  191. }
  192. BOOST_FUSION_GPU_ENABLED
  193. tuple(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)
  194. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12) {}
  195. 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>
  196. BOOST_FUSION_GPU_ENABLED
  197. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
  198. : base_type(rhs) {}
  199. 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>
  200. BOOST_FUSION_GPU_ENABLED
  201. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
  202. {
  203. base_type::operator=(rhs);
  204. return *this;
  205. }
  206. BOOST_FUSION_GPU_ENABLED
  207. tuple(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)
  208. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13) {}
  209. 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>
  210. BOOST_FUSION_GPU_ENABLED
  211. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
  212. : base_type(rhs) {}
  213. 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>
  214. BOOST_FUSION_GPU_ENABLED
  215. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
  216. {
  217. base_type::operator=(rhs);
  218. return *this;
  219. }
  220. BOOST_FUSION_GPU_ENABLED
  221. tuple(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)
  222. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14) {}
  223. 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>
  224. BOOST_FUSION_GPU_ENABLED
  225. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
  226. : base_type(rhs) {}
  227. 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>
  228. BOOST_FUSION_GPU_ENABLED
  229. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
  230. {
  231. base_type::operator=(rhs);
  232. return *this;
  233. }
  234. BOOST_FUSION_GPU_ENABLED
  235. tuple(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)
  236. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15) {}
  237. 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>
  238. BOOST_FUSION_GPU_ENABLED
  239. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
  240. : base_type(rhs) {}
  241. 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>
  242. BOOST_FUSION_GPU_ENABLED
  243. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
  244. {
  245. base_type::operator=(rhs);
  246. return *this;
  247. }
  248. BOOST_FUSION_GPU_ENABLED
  249. tuple(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)
  250. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16) {}
  251. 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>
  252. BOOST_FUSION_GPU_ENABLED
  253. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
  254. : base_type(rhs) {}
  255. 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>
  256. BOOST_FUSION_GPU_ENABLED
  257. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
  258. {
  259. base_type::operator=(rhs);
  260. return *this;
  261. }
  262. BOOST_FUSION_GPU_ENABLED
  263. tuple(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)
  264. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16 , arg17) {}
  265. 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>
  266. BOOST_FUSION_GPU_ENABLED
  267. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
  268. : base_type(rhs) {}
  269. 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>
  270. BOOST_FUSION_GPU_ENABLED
  271. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
  272. {
  273. base_type::operator=(rhs);
  274. return *this;
  275. }
  276. BOOST_FUSION_GPU_ENABLED
  277. tuple(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)
  278. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16 , arg17 , arg18) {}
  279. 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>
  280. BOOST_FUSION_GPU_ENABLED
  281. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
  282. : base_type(rhs) {}
  283. 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>
  284. BOOST_FUSION_GPU_ENABLED
  285. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
  286. {
  287. base_type::operator=(rhs);
  288. return *this;
  289. }
  290. BOOST_FUSION_GPU_ENABLED
  291. tuple(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)
  292. : base_type(arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 , arg10 , arg11 , arg12 , arg13 , arg14 , arg15 , arg16 , arg17 , arg18 , arg19) {}
  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 , typename U16 , typename U17 , typename U18 , typename U19>
  294. BOOST_FUSION_GPU_ENABLED
  295. tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
  296. : base_type(rhs) {}
  297. 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>
  298. BOOST_FUSION_GPU_ENABLED
  299. tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
  300. {
  301. base_type::operator=(rhs);
  302. return *this;
  303. }
  304. template <typename T>
  305. BOOST_FUSION_GPU_ENABLED
  306. tuple& operator=(T const& rhs)
  307. {
  308. base_type::operator=(rhs);
  309. return *this;
  310. }
  311. BOOST_FUSION_GPU_ENABLED
  312. tuple& operator=(tuple const& rhs)
  313. {
  314. base_type::operator=(static_cast<base_type const&>(rhs));
  315. return *this;
  316. }
  317. template <typename U1, typename U2>
  318. BOOST_FUSION_GPU_ENABLED
  319. tuple& operator=(std::pair<U1, U2> const& rhs)
  320. {
  321. base_type::operator=(rhs);
  322. return *this;
  323. }
  324. };
  325. template <typename Tuple>
  326. struct tuple_size : result_of::size<Tuple> {};
  327. template <int N, typename Tuple>
  328. struct tuple_element : result_of::value_at_c<Tuple, N> {};
  329. template <int N, typename Tuple>
  330. BOOST_FUSION_GPU_ENABLED
  331. inline typename
  332. lazy_disable_if<
  333. is_const<Tuple>
  334. , result_of::at_c<Tuple, N>
  335. >::type
  336. get(Tuple& tup)
  337. {
  338. return at_c<N>(tup);
  339. }
  340. template <int N, typename Tuple>
  341. BOOST_FUSION_GPU_ENABLED
  342. inline typename result_of::at_c<Tuple const, N>::type
  343. get(Tuple const& tup)
  344. {
  345. return at_c<N>(tup);
  346. }
  347. }}