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
@@ -118,7 +118,7 @@ template <int I, class T, size_t N> T&& get(array<T, N>&&) noexcept; // constexp
118
118
  _LIBCPP_BEGIN_NAMESPACE_STD
119
119
 
120
120
  template <class _Tp, size_t _Size>
121
- struct _LIBCPP_TYPE_VIS array
121
+ struct _LIBCPP_TYPE_VIS_ONLY array
122
122
  {
123
123
  // types:
124
124
  typedef array __self;
@@ -224,7 +224,7 @@ array<_Tp, _Size>::at(size_type __n) const
224
224
  }
225
225
 
226
226
  template <class _Tp, size_t _Size>
227
- _LIBCPP_INLINE_VISIBILITY inline
227
+ inline _LIBCPP_INLINE_VISIBILITY
228
228
  bool
229
229
  operator==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
230
230
  {
@@ -232,7 +232,7 @@ operator==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
232
232
  }
233
233
 
234
234
  template <class _Tp, size_t _Size>
235
- _LIBCPP_INLINE_VISIBILITY inline
235
+ inline _LIBCPP_INLINE_VISIBILITY
236
236
  bool
237
237
  operator!=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
238
238
  {
@@ -240,7 +240,7 @@ operator!=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
240
240
  }
241
241
 
242
242
  template <class _Tp, size_t _Size>
243
- _LIBCPP_INLINE_VISIBILITY inline
243
+ inline _LIBCPP_INLINE_VISIBILITY
244
244
  bool
245
245
  operator<(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
246
246
  {
@@ -248,7 +248,7 @@ operator<(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
248
248
  }
249
249
 
250
250
  template <class _Tp, size_t _Size>
251
- _LIBCPP_INLINE_VISIBILITY inline
251
+ inline _LIBCPP_INLINE_VISIBILITY
252
252
  bool
253
253
  operator>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
254
254
  {
@@ -256,7 +256,7 @@ operator>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
256
256
  }
257
257
 
258
258
  template <class _Tp, size_t _Size>
259
- _LIBCPP_INLINE_VISIBILITY inline
259
+ inline _LIBCPP_INLINE_VISIBILITY
260
260
  bool
261
261
  operator<=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
262
262
  {
@@ -264,7 +264,7 @@ operator<=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
264
264
  }
265
265
 
266
266
  template <class _Tp, size_t _Size>
267
- _LIBCPP_INLINE_VISIBILITY inline
267
+ inline _LIBCPP_INLINE_VISIBILITY
268
268
  bool
269
269
  operator>=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
270
270
  {
@@ -272,7 +272,7 @@ operator>=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
272
272
  }
273
273
 
274
274
  template <class _Tp, size_t _Size>
275
- _LIBCPP_INLINE_VISIBILITY inline
275
+ inline _LIBCPP_INLINE_VISIBILITY
276
276
  typename enable_if
277
277
  <
278
278
  __is_swappable<_Tp>::value,
@@ -285,29 +285,29 @@ swap(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
285
285
  }
286
286
 
287
287
  template <class _Tp, size_t _Size>
288
- class _LIBCPP_TYPE_VIS tuple_size<array<_Tp, _Size> >
288
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<array<_Tp, _Size> >
289
289
  : public integral_constant<size_t, _Size> {};
290
290
 
291
291
  template <class _Tp, size_t _Size>
292
- class _LIBCPP_TYPE_VIS tuple_size<const array<_Tp, _Size> >
292
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<const array<_Tp, _Size> >
293
293
  : public integral_constant<size_t, _Size> {};
294
294
 
295
295
  template <size_t _Ip, class _Tp, size_t _Size>
296
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, array<_Tp, _Size> >
296
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, array<_Tp, _Size> >
297
297
  {
298
298
  public:
299
299
  typedef _Tp type;
300
300
  };
301
301
 
302
302
  template <size_t _Ip, class _Tp, size_t _Size>
303
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, const array<_Tp, _Size> >
303
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const array<_Tp, _Size> >
304
304
  {
305
305
  public:
306
306
  typedef const _Tp type;
307
307
  };
308
308
 
309
309
  template <size_t _Ip, class _Tp, size_t _Size>
310
- _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
310
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
311
311
  _Tp&
312
312
  get(array<_Tp, _Size>& __a) _NOEXCEPT
313
313
  {
@@ -316,7 +316,7 @@ get(array<_Tp, _Size>& __a) _NOEXCEPT
316
316
  }
317
317
 
318
318
  template <size_t _Ip, class _Tp, size_t _Size>
319
- _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
319
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
320
320
  const _Tp&
321
321
  get(const array<_Tp, _Size>& __a) _NOEXCEPT
322
322
  {
@@ -327,7 +327,7 @@ get(const array<_Tp, _Size>& __a) _NOEXCEPT
327
327
  #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
328
328
 
329
329
  template <size_t _Ip, class _Tp, size_t _Size>
330
- _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
330
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
331
331
  _Tp&&
332
332
  get(array<_Tp, _Size>&& __a) _NOEXCEPT
333
333
  {
@@ -632,11 +632,11 @@ __bitset<0, 0>::__bitset(unsigned long long) _NOEXCEPT
632
632
  {
633
633
  }
634
634
 
635
- template <size_t _Size> class _LIBCPP_TYPE_VIS bitset;
636
- template <size_t _Size> struct _LIBCPP_TYPE_VIS hash<bitset<_Size> >;
635
+ template <size_t _Size> class _LIBCPP_TYPE_VIS_ONLY bitset;
636
+ template <size_t _Size> struct _LIBCPP_TYPE_VIS_ONLY hash<bitset<_Size> >;
637
637
 
638
638
  template <size_t _Size>
639
- class _LIBCPP_TYPE_VIS bitset
639
+ class _LIBCPP_TYPE_VIS_ONLY bitset
640
640
  : private __bitset<_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size>
641
641
  {
642
642
  public:
@@ -1060,7 +1060,7 @@ operator^(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT
1060
1060
  }
1061
1061
 
1062
1062
  template <size_t _Size>
1063
- struct _LIBCPP_TYPE_VIS hash<bitset<_Size> >
1063
+ struct _LIBCPP_TYPE_VIS_ONLY hash<bitset<_Size> >
1064
1064
  : public unary_function<bitset<_Size>, size_t>
1065
1065
  {
1066
1066
  _LIBCPP_INLINE_VISIBILITY
@@ -292,7 +292,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
292
292
  namespace chrono
293
293
  {
294
294
 
295
- template <class _Rep, class _Period = ratio<1> > class _LIBCPP_TYPE_VIS duration;
295
+ template <class _Rep, class _Period = ratio<1> > class _LIBCPP_TYPE_VIS_ONLY duration;
296
296
 
297
297
  template <class _Tp>
298
298
  struct __is_duration : false_type {};
@@ -312,8 +312,8 @@ struct __is_duration<const volatile duration<_Rep, _Period> > : true_type {};
312
312
  } // chrono
313
313
 
314
314
  template <class _Rep1, class _Period1, class _Rep2, class _Period2>
315
- struct _LIBCPP_TYPE_VIS common_type<chrono::duration<_Rep1, _Period1>,
316
- chrono::duration<_Rep2, _Period2> >
315
+ struct _LIBCPP_TYPE_VIS_ONLY common_type<chrono::duration<_Rep1, _Period1>,
316
+ chrono::duration<_Rep2, _Period2> >
317
317
  {
318
318
  typedef chrono::duration<typename common_type<_Rep1, _Rep2>::type,
319
319
  typename __ratio_gcd<_Period1, _Period2>::type> type;
@@ -390,10 +390,10 @@ duration_cast(const duration<_Rep, _Period>& __fd)
390
390
  }
391
391
 
392
392
  template <class _Rep>
393
- struct _LIBCPP_TYPE_VIS treat_as_floating_point : is_floating_point<_Rep> {};
393
+ struct _LIBCPP_TYPE_VIS_ONLY treat_as_floating_point : is_floating_point<_Rep> {};
394
394
 
395
395
  template <class _Rep>
396
- struct _LIBCPP_TYPE_VIS duration_values
396
+ struct _LIBCPP_TYPE_VIS_ONLY duration_values
397
397
  {
398
398
  public:
399
399
  _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() {return _Rep(0);}
@@ -404,11 +404,42 @@ public:
404
404
  // duration
405
405
 
406
406
  template <class _Rep, class _Period>
407
- class _LIBCPP_TYPE_VIS duration
407
+ class _LIBCPP_TYPE_VIS_ONLY duration
408
408
  {
409
409
  static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration");
410
410
  static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio");
411
411
  static_assert(_Period::num > 0, "duration period must be positive");
412
+
413
+ template <class _R1, class _R2>
414
+ struct __no_overflow
415
+ {
416
+ private:
417
+ static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
418
+ static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value;
419
+ static const intmax_t __n1 = _R1::num / __gcd_n1_n2;
420
+ static const intmax_t __d1 = _R1::den / __gcd_d1_d2;
421
+ static const intmax_t __n2 = _R2::num / __gcd_n1_n2;
422
+ static const intmax_t __d2 = _R2::den / __gcd_d1_d2;
423
+ static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1);
424
+
425
+ template <intmax_t _Xp, intmax_t _Yp, bool __overflow>
426
+ struct __mul // __overflow == false
427
+ {
428
+ static const intmax_t value = _Xp * _Yp;
429
+ };
430
+
431
+ template <intmax_t _Xp, intmax_t _Yp>
432
+ struct __mul<_Xp, _Yp, true>
433
+ {
434
+ static const intmax_t value = 1;
435
+ };
436
+
437
+ public:
438
+ static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1);
439
+ typedef ratio<__mul<__n1, __d2, !value>::value,
440
+ __mul<__n2, __d1, !value>::value> type;
441
+ };
442
+
412
443
  public:
413
444
  typedef _Rep rep;
414
445
  typedef _Period period;
@@ -440,9 +471,10 @@ public:
440
471
  duration(const duration<_Rep2, _Period2>& __d,
441
472
  typename enable_if
442
473
  <
474
+ __no_overflow<_Period2, period>::value && (
443
475
  treat_as_floating_point<rep>::value ||
444
- (ratio_divide<_Period2, period>::type::den == 1 &&
445
- !treat_as_floating_point<_Rep2>::value)
476
+ (__no_overflow<_Period2, period>::type::den == 1 &&
477
+ !treat_as_floating_point<_Rep2>::value))
446
478
  >::type* = 0)
447
479
  : __rep_(_VSTD::chrono::duration_cast<duration>(__d).count()) {}
448
480
 
@@ -715,7 +747,7 @@ operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2
715
747
  //////////////////////////////////////////////////////////
716
748
 
717
749
  template <class _Clock, class _Duration = typename _Clock::duration>
718
- class _LIBCPP_TYPE_VIS time_point
750
+ class _LIBCPP_TYPE_VIS_ONLY time_point
719
751
  {
720
752
  static_assert(__is_duration<_Duration>::value,
721
753
  "Second template parameter of time_point must be a std::chrono::duration");
@@ -759,8 +791,8 @@ public:
759
791
  } // chrono
760
792
 
761
793
  template <class _Clock, class _Duration1, class _Duration2>
762
- struct _LIBCPP_TYPE_VIS common_type<chrono::time_point<_Clock, _Duration1>,
763
- chrono::time_point<_Clock, _Duration2> >
794
+ struct _LIBCPP_TYPE_VIS_ONLY common_type<chrono::time_point<_Clock, _Duration1>,
795
+ chrono::time_point<_Clock, _Duration2> >
764
796
  {
765
797
  typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type;
766
798
  };
@@ -910,12 +942,9 @@ typedef steady_clock high_resolution_clock;
910
942
 
911
943
  } // chrono
912
944
 
913
- #if _LIBCPP_STD_VER > 11
914
- // Literal suffixes for chrono types
915
- // inline // Deviation from N3690.
916
- // We believe the inline to be a defect and have submitted an LWG issue.
917
- // An LWG issue number has not yet been assigned.
918
- namespace literals
945
+ #if _LIBCPP_STD_VER > 11
946
+ // Suffixes for duration literals [time.duration.literals]
947
+ inline namespace literals
919
948
  {
920
949
  inline namespace chrono_literals
921
950
  {
@@ -986,6 +1015,11 @@ namespace literals
986
1015
  }
987
1016
 
988
1017
  }}
1018
+
1019
+ namespace chrono { // hoist the literals into namespace std::chrono
1020
+ using namespace literals::chrono_literals;
1021
+ }
1022
+
989
1023
  #endif
990
1024
 
991
1025
  _LIBCPP_END_NAMESPACE_STD
@@ -654,6 +654,7 @@ using ::double_t;
654
654
 
655
655
  // abs
656
656
 
657
+ #if !defined(_AIX)
657
658
  inline _LIBCPP_INLINE_VISIBILITY
658
659
  float
659
660
  abs(float __x) _NOEXCEPT {return fabsf(__x);}
@@ -665,6 +666,7 @@ abs(double __x) _NOEXCEPT {return fabs(__x);}
665
666
  inline _LIBCPP_INLINE_VISIBILITY
666
667
  long double
667
668
  abs(long double __x) _NOEXCEPT {return fabsl(__x);}
669
+ #endif // !defined(_AIX)
668
670
 
669
671
  #ifndef __sun__
670
672
 
@@ -673,7 +675,7 @@ abs(long double __x) _NOEXCEPT {return fabsl(__x);}
673
675
  using ::acos;
674
676
  using ::acosf;
675
677
 
676
- #ifndef _LIBCPP_MSVCRT
678
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
677
679
  inline _LIBCPP_INLINE_VISIBILITY float acos(float __x) _NOEXCEPT {return acosf(__x);}
678
680
  inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __x) _NOEXCEPT {return acosl(__x);}
679
681
  #endif
@@ -688,7 +690,7 @@ acos(_A1 __x) _NOEXCEPT {return acos((double)__x);}
688
690
  using ::asin;
689
691
  using ::asinf;
690
692
 
691
- #ifndef _LIBCPP_MSVCRT
693
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
692
694
  inline _LIBCPP_INLINE_VISIBILITY float asin(float __x) _NOEXCEPT {return asinf(__x);}
693
695
  inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __x) _NOEXCEPT {return asinl(__x);}
694
696
  #endif
@@ -703,7 +705,7 @@ asin(_A1 __x) _NOEXCEPT {return asin((double)__x);}
703
705
  using ::atan;
704
706
  using ::atanf;
705
707
 
706
- #ifndef _LIBCPP_MSVCRT
708
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
707
709
  inline _LIBCPP_INLINE_VISIBILITY float atan(float __x) _NOEXCEPT {return atanf(__x);}
708
710
  inline _LIBCPP_INLINE_VISIBILITY long double atan(long double __x) _NOEXCEPT {return atanl(__x);}
709
711
  #endif
@@ -718,7 +720,7 @@ atan(_A1 __x) _NOEXCEPT {return atan((double)__x);}
718
720
  using ::atan2;
719
721
  using ::atan2f;
720
722
 
721
- #ifndef _LIBCPP_MSVCRT
723
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
722
724
  inline _LIBCPP_INLINE_VISIBILITY float atan2(float __y, float __x) _NOEXCEPT {return atan2f(__y, __x);}
723
725
  inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __y, long double __x) _NOEXCEPT {return atan2l(__y, __x);}
724
726
  #endif
@@ -744,7 +746,7 @@ atan2(_A1 __y, _A2 __x) _NOEXCEPT
744
746
  using ::ceil;
745
747
  using ::ceilf;
746
748
 
747
- #ifndef _LIBCPP_MSVCRT
749
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
748
750
  inline _LIBCPP_INLINE_VISIBILITY float ceil(float __x) _NOEXCEPT {return ceilf(__x);}
749
751
  inline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __x) _NOEXCEPT {return ceill(__x);}
750
752
  #endif
@@ -759,13 +761,13 @@ ceil(_A1 __x) _NOEXCEPT {return ceil((double)__x);}
759
761
  using ::cos;
760
762
  using ::cosf;
761
763
 
762
- #ifndef _LIBCPP_MSVCRT
764
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
763
765
  inline _LIBCPP_INLINE_VISIBILITY float cos(float __x) _NOEXCEPT {return cosf(__x);}
764
766
  inline _LIBCPP_INLINE_VISIBILITY long double cos(long double __x) _NOEXCEPT {return cosl(__x);}
765
767
  #endif
766
768
 
767
769
  template <class _A1>
768
- inline _LIBCPP_ALWAYS_INLINE _LIBCPP_INLINE_VISIBILITY
770
+ inline _LIBCPP_INLINE_VISIBILITY
769
771
  typename enable_if<is_integral<_A1>::value, double>::type
770
772
  cos(_A1 __x) _NOEXCEPT {return cos((double)__x);}
771
773
 
@@ -774,7 +776,7 @@ cos(_A1 __x) _NOEXCEPT {return cos((double)__x);}
774
776
  using ::cosh;
775
777
  using ::coshf;
776
778
 
777
- #ifndef _LIBCPP_MSVCRT
779
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
778
780
  inline _LIBCPP_INLINE_VISIBILITY float cosh(float __x) _NOEXCEPT {return coshf(__x);}
779
781
  inline _LIBCPP_INLINE_VISIBILITY long double cosh(long double __x) _NOEXCEPT {return coshl(__x);}
780
782
  #endif
@@ -792,7 +794,7 @@ using ::expf;
792
794
 
793
795
  #ifndef __sun__
794
796
 
795
- #ifndef _LIBCPP_MSVCRT
797
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
796
798
  inline _LIBCPP_INLINE_VISIBILITY float exp(float __x) _NOEXCEPT {return expf(__x);}
797
799
  inline _LIBCPP_INLINE_VISIBILITY long double exp(long double __x) _NOEXCEPT {return expl(__x);}
798
800
  #endif
@@ -808,7 +810,7 @@ exp(_A1 __x) _NOEXCEPT {return exp((double)__x);}
808
810
  using ::fabs;
809
811
  using ::fabsf;
810
812
 
811
- #ifndef _LIBCPP_MSVCRT
813
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
812
814
  inline _LIBCPP_INLINE_VISIBILITY float fabs(float __x) _NOEXCEPT {return fabsf(__x);}
813
815
  inline _LIBCPP_INLINE_VISIBILITY long double fabs(long double __x) _NOEXCEPT {return fabsl(__x);}
814
816
  #endif
@@ -823,7 +825,7 @@ fabs(_A1 __x) _NOEXCEPT {return fabs((double)__x);}
823
825
  using ::floor;
824
826
  using ::floorf;
825
827
 
826
- #ifndef _LIBCPP_MSVCRT
828
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
827
829
  inline _LIBCPP_INLINE_VISIBILITY float floor(float __x) _NOEXCEPT {return floorf(__x);}
828
830
  inline _LIBCPP_INLINE_VISIBILITY long double floor(long double __x) _NOEXCEPT {return floorl(__x);}
829
831
  #endif
@@ -840,7 +842,7 @@ using ::fmod;
840
842
  using ::fmodf;
841
843
  #ifndef __sun__
842
844
 
843
- #ifndef _LIBCPP_MSVCRT
845
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
844
846
  inline _LIBCPP_INLINE_VISIBILITY float fmod(float __x, float __y) _NOEXCEPT {return fmodf(__x, __y);}
845
847
  inline _LIBCPP_INLINE_VISIBILITY long double fmod(long double __x, long double __y) _NOEXCEPT {return fmodl(__x, __y);}
846
848
  #endif
@@ -867,7 +869,7 @@ fmod(_A1 __x, _A2 __y) _NOEXCEPT
867
869
  using ::frexp;
868
870
  using ::frexpf;
869
871
 
870
- #ifndef _LIBCPP_MSVCRT
872
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
871
873
  inline _LIBCPP_INLINE_VISIBILITY float frexp(float __x, int* __e) _NOEXCEPT {return frexpf(__x, __e);}
872
874
  inline _LIBCPP_INLINE_VISIBILITY long double frexp(long double __x, int* __e) _NOEXCEPT {return frexpl(__x, __e);}
873
875
  #endif
@@ -882,7 +884,7 @@ frexp(_A1 __x, int* __e) _NOEXCEPT {return frexp((double)__x, __e);}
882
884
  using ::ldexp;
883
885
  using ::ldexpf;
884
886
 
885
- #ifndef _LIBCPP_MSVCRT
887
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
886
888
  inline _LIBCPP_INLINE_VISIBILITY float ldexp(float __x, int __e) _NOEXCEPT {return ldexpf(__x, __e);}
887
889
  inline _LIBCPP_INLINE_VISIBILITY long double ldexp(long double __x, int __e) _NOEXCEPT {return ldexpl(__x, __e);}
888
890
  #endif
@@ -899,7 +901,7 @@ using ::log;
899
901
  using ::logf;
900
902
  #ifndef __sun__
901
903
 
902
- #ifndef _LIBCPP_MSVCRT
904
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
903
905
  inline _LIBCPP_INLINE_VISIBILITY float log(float __x) _NOEXCEPT {return logf(__x);}
904
906
  inline _LIBCPP_INLINE_VISIBILITY long double log(long double __x) _NOEXCEPT {return logl(__x);}
905
907
  #endif
@@ -915,7 +917,7 @@ log(_A1 __x) _NOEXCEPT {return log((double)__x);}
915
917
  using ::log10;
916
918
  using ::log10f;
917
919
 
918
- #ifndef _LIBCPP_MSVCRT
920
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
919
921
  inline _LIBCPP_INLINE_VISIBILITY float log10(float __x) _NOEXCEPT {return log10f(__x);}
920
922
  inline _LIBCPP_INLINE_VISIBILITY long double log10(long double __x) _NOEXCEPT {return log10l(__x);}
921
923
  #endif
@@ -930,7 +932,7 @@ log10(_A1 __x) _NOEXCEPT {return log10((double)__x);}
930
932
  using ::modf;
931
933
  using ::modff;
932
934
 
933
- #ifndef _LIBCPP_MSVCRT
935
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
934
936
  inline _LIBCPP_INLINE_VISIBILITY float modf(float __x, float* __y) _NOEXCEPT {return modff(__x, __y);}
935
937
  inline _LIBCPP_INLINE_VISIBILITY long double modf(long double __x, long double* __y) _NOEXCEPT {return modfl(__x, __y);}
936
938
  #endif
@@ -943,7 +945,7 @@ using ::powf;
943
945
 
944
946
  #ifndef __sun__
945
947
 
946
- #ifndef _LIBCPP_MSVCRT
948
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
947
949
  inline _LIBCPP_INLINE_VISIBILITY float pow(float __x, float __y) _NOEXCEPT {return powf(__x, __y);}
948
950
  inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __x, long double __y) _NOEXCEPT {return powl(__x, __y);}
949
951
  #endif
@@ -970,7 +972,7 @@ pow(_A1 __x, _A2 __y) _NOEXCEPT
970
972
  using ::sin;
971
973
  using ::sinf;
972
974
 
973
- #ifndef _LIBCPP_MSVCRT
975
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
974
976
  inline _LIBCPP_INLINE_VISIBILITY float sin(float __x) _NOEXCEPT {return sinf(__x);}
975
977
  inline _LIBCPP_INLINE_VISIBILITY long double sin(long double __x) _NOEXCEPT {return sinl(__x);}
976
978
  #endif
@@ -985,7 +987,7 @@ sin(_A1 __x) _NOEXCEPT {return sin((double)__x);}
985
987
  using ::sinh;
986
988
  using ::sinhf;
987
989
 
988
- #ifndef _LIBCPP_MSVCRT
990
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
989
991
  inline _LIBCPP_INLINE_VISIBILITY float sinh(float __x) _NOEXCEPT {return sinhf(__x);}
990
992
  inline _LIBCPP_INLINE_VISIBILITY long double sinh(long double __x) _NOEXCEPT {return sinhl(__x);}
991
993
  #endif
@@ -1002,7 +1004,7 @@ using ::sqrt;
1002
1004
  using ::sqrtf;
1003
1005
 
1004
1006
 
1005
- #if !(defined(_LIBCPP_MSVCRT) || defined(__sun__))
1007
+ #if !(defined(_LIBCPP_MSVCRT) || defined(__sun__) || defined(_AIX))
1006
1008
  inline _LIBCPP_INLINE_VISIBILITY float sqrt(float __x) _NOEXCEPT {return sqrtf(__x);}
1007
1009
  inline _LIBCPP_INLINE_VISIBILITY long double sqrt(long double __x) _NOEXCEPT {return sqrtl(__x);}
1008
1010
  #endif
@@ -1018,7 +1020,7 @@ using ::tan;
1018
1020
  using ::tanf;
1019
1021
  #ifndef __sun__
1020
1022
 
1021
- #ifndef _LIBCPP_MSVCRT
1023
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
1022
1024
  inline _LIBCPP_INLINE_VISIBILITY float tan(float __x) _NOEXCEPT {return tanf(__x);}
1023
1025
  inline _LIBCPP_INLINE_VISIBILITY long double tan(long double __x) _NOEXCEPT {return tanl(__x);}
1024
1026
  #endif
@@ -1033,7 +1035,7 @@ tan(_A1 __x) _NOEXCEPT {return tan((double)__x);}
1033
1035
  using ::tanh;
1034
1036
  using ::tanhf;
1035
1037
 
1036
- #ifndef _LIBCPP_MSVCRT
1038
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
1037
1039
  inline _LIBCPP_INLINE_VISIBILITY float tanh(float __x) _NOEXCEPT {return tanhf(__x);}
1038
1040
  inline _LIBCPP_INLINE_VISIBILITY long double tanh(long double __x) _NOEXCEPT {return tanhl(__x);}
1039
1041
  #endif
@@ -29,7 +29,8 @@ template <class Elem, unsigned long Maxcode = 0x10ffff,
29
29
  class codecvt_utf8
30
30
  : public codecvt<Elem, char, mbstate_t>
31
31
  {
32
- // unspecified
32
+ explicit codecvt_utf8(size_t refs = 0);
33
+ ~codecvt_utf8();
33
34
  };
34
35
 
35
36
  template <class Elem, unsigned long Maxcode = 0x10ffff,
@@ -37,7 +38,8 @@ template <class Elem, unsigned long Maxcode = 0x10ffff,
37
38
  class codecvt_utf16
38
39
  : public codecvt<Elem, char, mbstate_t>
39
40
  {
40
- // unspecified
41
+ explicit codecvt_utf16(size_t refs = 0);
42
+ ~codecvt_utf16();
41
43
  };
42
44
 
43
45
  template <class Elem, unsigned long Maxcode = 0x10ffff,
@@ -45,7 +47,8 @@ template <class Elem, unsigned long Maxcode = 0x10ffff,
45
47
  class codecvt_utf8_utf16
46
48
  : public codecvt<Elem, char, mbstate_t>
47
49
  {
48
- // unspecified
50
+ explicit codecvt_utf8_utf16(size_t refs = 0);
51
+ ~codecvt_utf8_utf16();
49
52
  };
50
53
 
51
54
  } // std
@@ -73,7 +76,7 @@ enum codecvt_mode
73
76
  template <class _Elem> class __codecvt_utf8;
74
77
 
75
78
  template <>
76
- class __codecvt_utf8<wchar_t>
79
+ class _LIBCPP_TYPE_VIS __codecvt_utf8<wchar_t>
77
80
  : public codecvt<wchar_t, char, mbstate_t>
78
81
  {
79
82
  unsigned long _Maxcode_;
@@ -108,7 +111,7 @@ protected:
108
111
  };
109
112
 
110
113
  template <>
111
- class __codecvt_utf8<char16_t>
114
+ class _LIBCPP_TYPE_VIS __codecvt_utf8<char16_t>
112
115
  : public codecvt<char16_t, char, mbstate_t>
113
116
  {
114
117
  unsigned long _Maxcode_;
@@ -143,7 +146,7 @@ protected:
143
146
  };
144
147
 
145
148
  template <>
146
- class __codecvt_utf8<char32_t>
149
+ class _LIBCPP_TYPE_VIS __codecvt_utf8<char32_t>
147
150
  : public codecvt<char32_t, char, mbstate_t>
148
151
  {
149
152
  unsigned long _Maxcode_;
@@ -179,7 +182,7 @@ protected:
179
182
 
180
183
  template <class _Elem, unsigned long _Maxcode = 0x10ffff,
181
184
  codecvt_mode _Mode = (codecvt_mode)0>
182
- class _LIBCPP_TYPE_VIS codecvt_utf8
185
+ class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8
183
186
  : public __codecvt_utf8<_Elem>
184
187
  {
185
188
  public:
@@ -196,7 +199,7 @@ public:
196
199
  template <class _Elem, bool _LittleEndian> class __codecvt_utf16;
197
200
 
198
201
  template <>
199
- class __codecvt_utf16<wchar_t, false>
202
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, false>
200
203
  : public codecvt<wchar_t, char, mbstate_t>
201
204
  {
202
205
  unsigned long _Maxcode_;
@@ -231,7 +234,7 @@ protected:
231
234
  };
232
235
 
233
236
  template <>
234
- class __codecvt_utf16<wchar_t, true>
237
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, true>
235
238
  : public codecvt<wchar_t, char, mbstate_t>
236
239
  {
237
240
  unsigned long _Maxcode_;
@@ -266,7 +269,7 @@ protected:
266
269
  };
267
270
 
268
271
  template <>
269
- class __codecvt_utf16<char16_t, false>
272
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, false>
270
273
  : public codecvt<char16_t, char, mbstate_t>
271
274
  {
272
275
  unsigned long _Maxcode_;
@@ -301,7 +304,7 @@ protected:
301
304
  };
302
305
 
303
306
  template <>
304
- class __codecvt_utf16<char16_t, true>
307
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, true>
305
308
  : public codecvt<char16_t, char, mbstate_t>
306
309
  {
307
310
  unsigned long _Maxcode_;
@@ -336,7 +339,7 @@ protected:
336
339
  };
337
340
 
338
341
  template <>
339
- class __codecvt_utf16<char32_t, false>
342
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, false>
340
343
  : public codecvt<char32_t, char, mbstate_t>
341
344
  {
342
345
  unsigned long _Maxcode_;
@@ -371,7 +374,7 @@ protected:
371
374
  };
372
375
 
373
376
  template <>
374
- class __codecvt_utf16<char32_t, true>
377
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, true>
375
378
  : public codecvt<char32_t, char, mbstate_t>
376
379
  {
377
380
  unsigned long _Maxcode_;
@@ -407,7 +410,7 @@ protected:
407
410
 
408
411
  template <class _Elem, unsigned long _Maxcode = 0x10ffff,
409
412
  codecvt_mode _Mode = (codecvt_mode)0>
410
- class _LIBCPP_TYPE_VIS codecvt_utf16
413
+ class _LIBCPP_TYPE_VIS_ONLY codecvt_utf16
411
414
  : public __codecvt_utf16<_Elem, _Mode & little_endian>
412
415
  {
413
416
  public:
@@ -424,7 +427,7 @@ public:
424
427
  template <class _Elem> class __codecvt_utf8_utf16;
425
428
 
426
429
  template <>
427
- class __codecvt_utf8_utf16<wchar_t>
430
+ class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<wchar_t>
428
431
  : public codecvt<wchar_t, char, mbstate_t>
429
432
  {
430
433
  unsigned long _Maxcode_;
@@ -459,7 +462,7 @@ protected:
459
462
  };
460
463
 
461
464
  template <>
462
- class __codecvt_utf8_utf16<char32_t>
465
+ class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char32_t>
463
466
  : public codecvt<char32_t, char, mbstate_t>
464
467
  {
465
468
  unsigned long _Maxcode_;
@@ -494,7 +497,7 @@ protected:
494
497
  };
495
498
 
496
499
  template <>
497
- class __codecvt_utf8_utf16<char16_t>
500
+ class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char16_t>
498
501
  : public codecvt<char16_t, char, mbstate_t>
499
502
  {
500
503
  unsigned long _Maxcode_;
@@ -530,7 +533,7 @@ protected:
530
533
 
531
534
  template <class _Elem, unsigned long _Maxcode = 0x10ffff,
532
535
  codecvt_mode _Mode = (codecvt_mode)0>
533
- class _LIBCPP_TYPE_VIS codecvt_utf8_utf16
536
+ class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8_utf16
534
537
  : public __codecvt_utf8_utf16<_Elem>
535
538
  {
536
539
  public: