webruby 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/config.rb +4 -9
  3. data/lib/webruby/rake/files.rake +2 -2
  4. data/modules/emscripten/AUTHORS +9 -1
  5. data/modules/emscripten/CONTRIBUTING.markdown +5 -0
  6. data/modules/emscripten/ChangeLog +435 -0
  7. data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
  8. data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
  9. data/modules/emscripten/em++ +0 -2
  10. data/modules/emscripten/emcc +92 -32
  11. data/modules/emscripten/emlink.py +16 -13
  12. data/modules/emscripten/emmake +1 -1
  13. data/modules/emscripten/emrun +918 -0
  14. data/modules/emscripten/emrun.bat +2 -0
  15. data/modules/emscripten/emscripten.py +545 -20
  16. data/modules/emscripten/src/analyzer.js +6 -1
  17. data/modules/emscripten/src/compiler.js +25 -16
  18. data/modules/emscripten/src/emrun_postjs.js +20 -0
  19. data/modules/emscripten/{tests → src}/hello_world.js +0 -0
  20. data/modules/emscripten/src/intertyper.js +45 -16
  21. data/modules/emscripten/src/jsifier.js +78 -48
  22. data/modules/emscripten/src/library.js +381 -96
  23. data/modules/emscripten/src/library_browser.js +50 -53
  24. data/modules/emscripten/src/library_egl.js +66 -24
  25. data/modules/emscripten/src/library_fs.js +122 -90
  26. data/modules/emscripten/src/library_gl.js +739 -353
  27. data/modules/emscripten/src/library_glfw.js +9 -3
  28. data/modules/emscripten/src/library_glut.js +10 -5
  29. data/modules/emscripten/src/library_idbfs.js +14 -14
  30. data/modules/emscripten/src/library_memfs.js +65 -41
  31. data/modules/emscripten/src/library_nodefs.js +61 -9
  32. data/modules/emscripten/src/library_openal.js +4 -4
  33. data/modules/emscripten/src/library_path.js +9 -13
  34. data/modules/emscripten/src/library_sdl.js +301 -64
  35. data/modules/emscripten/src/library_sockfs.js +7 -5
  36. data/modules/emscripten/src/modules.js +62 -22
  37. data/modules/emscripten/src/parseTools.js +135 -102
  38. data/modules/emscripten/src/postamble.js +3 -4
  39. data/modules/emscripten/src/preamble.js +49 -29
  40. data/modules/emscripten/src/proxyClient.js +1 -1
  41. data/modules/emscripten/src/proxyWorker.js +10 -10
  42. data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
  43. data/modules/emscripten/src/runtime.js +32 -8
  44. data/modules/emscripten/src/settings.js +25 -8
  45. data/modules/emscripten/src/shell.html +6 -3
  46. data/modules/emscripten/src/shell.js +13 -11
  47. data/modules/emscripten/src/simd.js +602 -432
  48. data/modules/emscripten/src/struct_info.json +22 -2
  49. data/modules/emscripten/src/utility.js +32 -17
  50. data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
  51. data/modules/emscripten/system/include/compat/ctype.h +17 -0
  52. data/modules/emscripten/system/include/compat/wchar.h +23 -0
  53. data/modules/emscripten/system/include/compat/wctype.h +23 -0
  54. data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
  55. data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
  56. data/modules/emscripten/system/include/emscripten/vector.h +29 -1
  57. data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
  58. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
  59. data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
  60. data/modules/emscripten/system/include/libcxx/__config +95 -17
  61. data/modules/emscripten/system/include/libcxx/__debug +25 -4
  62. data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
  63. data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
  64. data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
  65. data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
  66. data/modules/emscripten/system/include/libcxx/__locale +21 -19
  67. data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
  68. data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
  69. data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
  70. data/modules/emscripten/system/include/libcxx/__tree +35 -26
  71. data/modules/emscripten/system/include/libcxx/__tuple +15 -15
  72. data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
  73. data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
  74. data/modules/emscripten/system/include/libcxx/algorithm +121 -110
  75. data/modules/emscripten/system/include/libcxx/array +15 -15
  76. data/modules/emscripten/system/include/libcxx/bitset +4 -4
  77. data/modules/emscripten/system/include/libcxx/chrono +51 -17
  78. data/modules/emscripten/system/include/libcxx/cmath +25 -23
  79. data/modules/emscripten/system/include/libcxx/codecvt +21 -18
  80. data/modules/emscripten/system/include/libcxx/complex +48 -7
  81. data/modules/emscripten/system/include/libcxx/cstddef +1 -1
  82. data/modules/emscripten/system/include/libcxx/cstdio +8 -1
  83. data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
  84. data/modules/emscripten/system/include/libcxx/cwchar +1 -1
  85. data/modules/emscripten/system/include/libcxx/deque +26 -12
  86. data/modules/emscripten/system/include/libcxx/dynarray +311 -0
  87. data/modules/emscripten/system/include/libcxx/exception +4 -4
  88. data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
  89. data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
  90. data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
  91. data/modules/emscripten/system/include/libcxx/forward_list +33 -7
  92. data/modules/emscripten/system/include/libcxx/fstream +4 -4
  93. data/modules/emscripten/system/include/libcxx/functional +200 -170
  94. data/modules/emscripten/system/include/libcxx/future +83 -39
  95. data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
  96. data/modules/emscripten/system/include/libcxx/iomanip +147 -0
  97. data/modules/emscripten/system/include/libcxx/ios +24 -16
  98. data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
  99. data/modules/emscripten/system/include/libcxx/istream +13 -8
  100. data/modules/emscripten/system/include/libcxx/iterator +108 -417
  101. data/modules/emscripten/system/include/libcxx/limits +8 -4
  102. data/modules/emscripten/system/include/libcxx/list +28 -8
  103. data/modules/emscripten/system/include/libcxx/locale +153 -390
  104. data/modules/emscripten/system/include/libcxx/map +280 -100
  105. data/modules/emscripten/system/include/libcxx/memory +49 -97
  106. data/modules/emscripten/system/include/libcxx/mutex +2 -2
  107. data/modules/emscripten/system/include/libcxx/new +43 -14
  108. data/modules/emscripten/system/include/libcxx/numeric +2 -2
  109. data/modules/emscripten/system/include/libcxx/optional +697 -0
  110. data/modules/emscripten/system/include/libcxx/ostream +17 -8
  111. data/modules/emscripten/system/include/libcxx/queue +5 -5
  112. data/modules/emscripten/system/include/libcxx/random +53 -51
  113. data/modules/emscripten/system/include/libcxx/ratio +11 -11
  114. data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
  115. data/modules/emscripten/system/include/libcxx/regex +23 -20
  116. data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
  117. data/modules/emscripten/system/include/libcxx/set +166 -2
  118. data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
  119. data/modules/emscripten/system/include/libcxx/sstream +4 -4
  120. data/modules/emscripten/system/include/libcxx/stack +3 -3
  121. data/modules/emscripten/system/include/libcxx/streambuf +5 -5
  122. data/modules/emscripten/system/include/libcxx/string +372 -324
  123. data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
  124. data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
  125. data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
  126. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
  127. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
  128. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
  129. data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
  130. data/modules/emscripten/system/include/libcxx/system_error +14 -8
  131. data/modules/emscripten/system/include/libcxx/thread +7 -8
  132. data/modules/emscripten/system/include/libcxx/tuple +29 -88
  133. data/modules/emscripten/system/include/libcxx/type_traits +253 -209
  134. data/modules/emscripten/system/include/libcxx/typeindex +3 -3
  135. data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
  136. data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
  137. data/modules/emscripten/system/include/libcxx/utility +20 -20
  138. data/modules/emscripten/system/include/libcxx/valarray +23 -23
  139. data/modules/emscripten/system/include/libcxx/vector +114 -91
  140. data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
  141. data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
  142. data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
  143. data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
  144. data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
  145. data/modules/emscripten/system/lib/libcextra.symbols +7 -0
  146. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
  147. data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
  148. data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
  149. data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
  150. data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
  151. data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
  152. data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
  153. data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
  154. data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
  155. data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
  156. data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
  157. data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
  158. data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
  159. data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
  160. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
  161. data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
  162. data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
  163. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
  164. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
  165. data/modules/emscripten/system/lib/libcxx/symbols +187 -168
  166. data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
  167. data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
  168. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
  169. data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
  170. data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
  171. data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
  172. data/modules/emscripten/tools/cache.py +5 -7
  173. data/modules/emscripten/tools/cache.pyc +0 -0
  174. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
  175. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
  176. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
  177. data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
  178. data/modules/emscripten/tools/file_packager.py +93 -50
  179. data/modules/emscripten/tools/js-optimizer.js +98 -48
  180. data/modules/emscripten/tools/js_optimizer.py +4 -4
  181. data/modules/emscripten/tools/js_optimizer.pyc +0 -0
  182. data/modules/emscripten/tools/jsrun.py +1 -1
  183. data/modules/emscripten/tools/jsrun.pyc +0 -0
  184. data/modules/emscripten/tools/response_file.py +6 -0
  185. data/modules/emscripten/tools/response_file.pyc +0 -0
  186. data/modules/emscripten/tools/settings_template_readonly.py +2 -0
  187. data/modules/emscripten/tools/shared.py +88 -34
  188. data/modules/emscripten/tools/shared.pyc +0 -0
  189. data/modules/emscripten/tools/split.py +21 -13
  190. data/modules/mruby/build_config.rb +7 -1
  191. data/modules/mruby/doc/compile/README.md +5 -9
  192. data/modules/mruby/include/mrbconf.h +5 -2
  193. data/modules/mruby/include/mruby/array.h +1 -0
  194. data/modules/mruby/include/mruby/compile.h +2 -4
  195. data/modules/mruby/include/mruby/dump.h +7 -16
  196. data/modules/mruby/include/mruby/hash.h +1 -1
  197. data/modules/mruby/include/mruby/irep.h +14 -2
  198. data/modules/mruby/include/mruby/khash.h +8 -7
  199. data/modules/mruby/include/mruby/string.h +1 -0
  200. data/modules/mruby/include/mruby/value.h +5 -2
  201. data/modules/mruby/include/mruby.h +12 -13
  202. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
  203. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
  204. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
  205. data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
  206. data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
  207. data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
  208. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
  209. data/modules/mruby/mrblib/numeric.rb +99 -33
  210. data/modules/mruby/src/array.c +11 -4
  211. data/modules/mruby/src/backtrace.c +2 -2
  212. data/modules/mruby/src/class.c +49 -30
  213. data/modules/mruby/src/codegen.c +131 -79
  214. data/modules/mruby/src/debug.c +1 -1
  215. data/modules/mruby/src/dump.c +213 -163
  216. data/modules/mruby/src/error.c +17 -17
  217. data/modules/mruby/src/error.h +1 -1
  218. data/modules/mruby/src/etc.c +10 -0
  219. data/modules/mruby/src/gc.c +35 -17
  220. data/modules/mruby/src/hash.c +5 -5
  221. data/modules/mruby/src/kernel.c +36 -14
  222. data/modules/mruby/src/load.c +238 -296
  223. data/modules/mruby/src/numeric.c +18 -98
  224. data/modules/mruby/src/object.c +3 -5
  225. data/modules/mruby/src/parse.y +63 -56
  226. data/modules/mruby/src/proc.c +8 -5
  227. data/modules/mruby/src/re.h +0 -1
  228. data/modules/mruby/src/state.c +65 -27
  229. data/modules/mruby/src/string.c +3 -31
  230. data/modules/mruby/src/symbol.c +3 -3
  231. data/modules/mruby/src/variable.c +12 -5
  232. data/modules/mruby/src/vm.c +90 -72
  233. data/modules/mruby/tasks/mruby_build.rake +10 -1
  234. data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
  235. data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
  236. data/modules/mruby/test/driver.c +3 -3
  237. data/modules/mruby/test/t/array.rb +5 -5
  238. data/modules/mruby/test/t/class.rb +14 -1
  239. data/modules/mruby/test/t/kernel.rb +4 -0
  240. data/modules/mruby/test/t/module.rb +4 -4
  241. data/modules/mruby/test/t/nameerror.rb +1 -1
  242. data/modules/mruby/tools/mrbc/mrbc.c +23 -17
  243. data/modules/mruby/travis_config.rb +10 -1
  244. metadata +28 -5
  245. data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
@@ -185,10 +185,9 @@ _LIBCPP_INLINE_VISIBILITY __thread_id get_id() _NOEXCEPT;
185
185
 
186
186
  } // this_thread
187
187
 
188
- class _LIBCPP_TYPE_VIS __thread_id;
189
- template<> struct _LIBCPP_TYPE_VIS hash<__thread_id>;
188
+ template<> struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>;
190
189
 
191
- class _LIBCPP_TYPE_VIS __thread_id
190
+ class _LIBCPP_TYPE_VIS_ONLY __thread_id
192
191
  {
193
192
  // FIXME: pthread_t is a pointer on Darwin but a long on Linux.
194
193
  // NULL is the no-thread value on Darwin. Someone needs to check
@@ -231,11 +230,11 @@ private:
231
230
 
232
231
  friend __thread_id this_thread::get_id() _NOEXCEPT;
233
232
  friend class _LIBCPP_TYPE_VIS thread;
234
- friend struct _LIBCPP_TYPE_VIS hash<__thread_id>;
233
+ friend struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>;
235
234
  };
236
235
 
237
236
  template<>
238
- struct _LIBCPP_TYPE_VIS hash<__thread_id>
237
+ struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>
239
238
  : public unary_function<__thread_id, size_t>
240
239
  {
241
240
  _LIBCPP_INLINE_VISIBILITY
@@ -307,7 +306,7 @@ class __assoc_sub_state;
307
306
 
308
307
  class _LIBCPP_HIDDEN __thread_struct_imp;
309
308
 
310
- class __thread_struct
309
+ class _LIBCPP_TYPE_VIS __thread_struct
311
310
  {
312
311
  __thread_struct_imp* __p_;
313
312
 
@@ -321,7 +320,7 @@ public:
321
320
  void __make_ready_at_thread_exit(__assoc_sub_state*);
322
321
  };
323
322
 
324
- __thread_specific_ptr<__thread_struct>& __thread_local_data();
323
+ _LIBCPP_FUNC_VIS __thread_specific_ptr<__thread_struct>& __thread_local_data();
325
324
 
326
325
  #ifndef _LIBCPP_HAS_NO_VARIADICS
327
326
 
@@ -405,7 +404,7 @@ void swap(thread& __x, thread& __y) _NOEXCEPT {__x.swap(__y);}
405
404
  namespace this_thread
406
405
  {
407
406
 
408
- void sleep_for(const chrono::nanoseconds& ns);
407
+ _LIBCPP_FUNC_VIS void sleep_for(const chrono::nanoseconds& ns);
409
408
 
410
409
  template <class _Rep, class _Period>
411
410
  void
@@ -73,7 +73,7 @@ public:
73
73
  const unspecified ignore;
74
74
 
75
75
  template <class... T> tuple<V...> make_tuple(T&&...); // constexpr in C++14
76
- template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept;
76
+ template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept; // constexpr in C++14
77
77
  template <class... T> tuple<T&...> tie(T&...) noexcept;
78
78
  template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // constexpr in C++14
79
79
 
@@ -133,74 +133,12 @@ template <class... Types>
133
133
 
134
134
  _LIBCPP_BEGIN_NAMESPACE_STD
135
135
 
136
- // allocator_arg_t
137
-
138
- struct _LIBCPP_TYPE_VIS allocator_arg_t { };
139
-
140
- #if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MEMORY)
141
- extern const allocator_arg_t allocator_arg;
142
- #else
143
- constexpr allocator_arg_t allocator_arg = allocator_arg_t();
144
- #endif
145
-
146
- // uses_allocator
147
-
148
- template <class _Tp>
149
- struct __has_allocator_type
150
- {
151
- private:
152
- struct __two {char __lx; char __lxx;};
153
- template <class _Up> static __two __test(...);
154
- template <class _Up> static char __test(typename _Up::allocator_type* = 0);
155
- public:
156
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
157
- };
158
-
159
- template <class _Tp, class _Alloc, bool = __has_allocator_type<_Tp>::value>
160
- struct __uses_allocator
161
- : public integral_constant<bool,
162
- is_convertible<_Alloc, typename _Tp::allocator_type>::value>
163
- {
164
- };
165
-
166
- template <class _Tp, class _Alloc>
167
- struct __uses_allocator<_Tp, _Alloc, false>
168
- : public false_type
169
- {
170
- };
171
-
172
- template <class _Tp, class _Alloc>
173
- struct _LIBCPP_TYPE_VIS uses_allocator
174
- : public __uses_allocator<_Tp, _Alloc>
175
- {
176
- };
177
-
178
- #ifndef _LIBCPP_HAS_NO_VARIADICS
179
-
180
- // uses-allocator construction
181
-
182
- template <class _Tp, class _Alloc, class ..._Args>
183
- struct __uses_alloc_ctor_imp
184
- {
185
- static const bool __ua = uses_allocator<_Tp, _Alloc>::value;
186
- static const bool __ic =
187
- is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value;
188
- static const int value = __ua ? 2 - __ic : 0;
189
- };
190
-
191
- template <class _Tp, class _Alloc, class ..._Args>
192
- struct __uses_alloc_ctor
193
- : integral_constant<int, __uses_alloc_ctor_imp<_Tp, _Alloc, _Args...>::value>
194
- {};
195
-
196
- #endif // _LIBCPP_HAS_NO_VARIADICS
197
-
198
136
  #ifndef _LIBCPP_HAS_NO_VARIADICS
199
137
 
200
138
  // tuple_size
201
139
 
202
140
  template <class ..._Tp>
203
- class _LIBCPP_TYPE_VIS tuple_size<tuple<_Tp...> >
141
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<tuple<_Tp...> >
204
142
  : public integral_constant<size_t, sizeof...(_Tp)>
205
143
  {
206
144
  };
@@ -208,7 +146,7 @@ class _LIBCPP_TYPE_VIS tuple_size<tuple<_Tp...> >
208
146
  // tuple_element
209
147
 
210
148
  template <size_t _Ip, class ..._Tp>
211
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, tuple<_Tp...> >
149
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, tuple<_Tp...> >
212
150
  {
213
151
  public:
214
152
  typedef typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type;
@@ -332,7 +270,7 @@ public:
332
270
  _LIBCPP_INLINE_VISIBILITY
333
271
  _LIBCPP_CONSTEXPR_AFTER_CXX11
334
272
  __tuple_leaf(__tuple_leaf&& __t) _NOEXCEPT_(is_nothrow_move_constructible<_Hp>::value)
335
- : value(_VSTD::move(__t.get()))
273
+ : value(_VSTD::forward<_Hp>(__t.get()))
336
274
  {}
337
275
 
338
276
  template <class _Tp>
@@ -519,13 +457,24 @@ struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...>
519
457
  return *this;
520
458
  }
521
459
 
522
- _LIBCPP_INLINE_VISIBILITY
523
- __tuple_impl&
524
- operator=(const __tuple_impl& __t) _NOEXCEPT_((__all<is_nothrow_copy_assignable<_Tp>::value...>::value))
525
- {
526
- __swallow(__tuple_leaf<_Indx, _Tp>::operator=(static_cast<const __tuple_leaf<_Indx, _Tp>&>(__t).get())...);
527
- return *this;
528
- }
460
+ __tuple_impl(const __tuple_impl&) = default;
461
+ __tuple_impl(__tuple_impl&&) = default;
462
+
463
+ _LIBCPP_INLINE_VISIBILITY
464
+ __tuple_impl&
465
+ operator=(const __tuple_impl& __t) _NOEXCEPT_((__all<is_nothrow_copy_assignable<_Tp>::value...>::value))
466
+ {
467
+ __swallow(__tuple_leaf<_Indx, _Tp>::operator=(static_cast<const __tuple_leaf<_Indx, _Tp>&>(__t).get())...);
468
+ return *this;
469
+ }
470
+
471
+ _LIBCPP_INLINE_VISIBILITY
472
+ __tuple_impl&
473
+ operator=(__tuple_impl&& __t) _NOEXCEPT_((__all<is_nothrow_move_assignable<_Tp>::value...>::value))
474
+ {
475
+ __swallow(__tuple_leaf<_Indx, _Tp>::operator=(_VSTD::forward<_Tp>(static_cast<__tuple_leaf<_Indx, _Tp>&>(__t).get()))...);
476
+ return *this;
477
+ }
529
478
 
530
479
  _LIBCPP_INLINE_VISIBILITY
531
480
  void swap(__tuple_impl& __t)
@@ -536,7 +485,7 @@ struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...>
536
485
  };
537
486
 
538
487
  template <class ..._Tp>
539
- class _LIBCPP_TYPE_VIS tuple
488
+ class _LIBCPP_TYPE_VIS_ONLY tuple
540
489
  {
541
490
  typedef __tuple_impl<typename __make_tuple_indices<sizeof...(_Tp)>::type, _Tp...> base;
542
491
 
@@ -724,7 +673,7 @@ public:
724
673
  };
725
674
 
726
675
  template <>
727
- class _LIBCPP_TYPE_VIS tuple<>
676
+ class _LIBCPP_TYPE_VIS_ONLY tuple<>
728
677
  {
729
678
  public:
730
679
  _LIBCPP_INLINE_VISIBILITY
@@ -810,7 +759,7 @@ struct __find_exactly_one_t_helper <_T1, _Idx, _Head, _Args...> {
810
759
  static constexpr size_t value =
811
760
  std::conditional<
812
761
  std::is_same<_T1, _Head>::value,
813
- __find_exactly_one_t_checker<_T1, _Idx,   _Args...>,
762
+ __find_exactly_one_t_checker<_T1, _Idx, _Args...>,
814
763
  __find_exactly_one_t_helper <_T1, _Idx+1, _Args...>
815
764
  >::type::value;
816
765
  };
@@ -864,7 +813,7 @@ struct __ignore_t
864
813
 
865
814
  namespace { const __ignore_t<unsigned char> ignore = __ignore_t<unsigned char>(); }
866
815
 
867
- template <class _Tp> class _LIBCPP_TYPE_VIS reference_wrapper;
816
+ template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY reference_wrapper;
868
817
 
869
818
  template <class _Tp>
870
819
  struct ___make_tuple_return
@@ -895,14 +844,6 @@ make_tuple(_Tp&&... __t)
895
844
  template <class... _Tp>
896
845
  inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
897
846
  tuple<_Tp&&...>
898
- __forward_as_tuple(_Tp&&... __t) _NOEXCEPT
899
- {
900
- return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
901
- }
902
-
903
- template <class... _Tp>
904
- inline _LIBCPP_INLINE_VISIBILITY
905
- tuple<_Tp&&...>
906
847
  forward_as_tuple(_Tp&&... __t) _NOEXCEPT
907
848
  {
908
849
  return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
@@ -1103,7 +1044,7 @@ struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J
1103
1044
  typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1104
1045
  operator()(tuple<_Types...> __t, _Tuple0&& __t0)
1105
1046
  {
1106
- return __forward_as_tuple(_VSTD::forward<_Types>(get<_I0>(__t))...,
1047
+ return forward_as_tuple(_VSTD::forward<_Types>(get<_I0>(__t))...,
1107
1048
  get<_J0>(_VSTD::forward<_Tuple0>(__t0))...);
1108
1049
  }
1109
1050
 
@@ -1118,7 +1059,7 @@ struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J
1118
1059
  tuple<_Types..., typename __apply_cv<_Tuple0, typename tuple_element<_J0, _T0>::type>::type&&...>,
1119
1060
  typename __make_tuple_indices<sizeof ...(_Types) + tuple_size<_T0>::value>::type,
1120
1061
  typename __make_tuple_indices<tuple_size<_T1>::value>::type>()
1121
- (__forward_as_tuple(
1062
+ (forward_as_tuple(
1122
1063
  _VSTD::forward<_Types>(get<_I0>(__t))...,
1123
1064
  get<_J0>(_VSTD::forward<_Tuple0>(__t0))...
1124
1065
  ),
@@ -1140,7 +1081,7 @@ tuple_cat(_Tuple0&& __t0, _Tuples&&... __tpls)
1140
1081
  }
1141
1082
 
1142
1083
  template <class ..._Tp, class _Alloc>
1143
- struct _LIBCPP_TYPE_VIS uses_allocator<tuple<_Tp...>, _Alloc>
1084
+ struct _LIBCPP_TYPE_VIS_ONLY uses_allocator<tuple<_Tp...>, _Alloc>
1144
1085
  : true_type {};
1145
1086
 
1146
1087
  template <class _T1, class _T2>