webruby 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/rake/mruby.rake +1 -0
  3. data/modules/emscripten/AUTHORS +7 -0
  4. data/modules/emscripten/LICENSE +26 -0
  5. data/modules/emscripten/emcc +58 -20
  6. data/modules/emscripten/emlink.py +2 -265
  7. data/modules/emscripten/emscripten.py +38 -18
  8. data/modules/emscripten/scons-tools/emscripten.py +11 -6
  9. data/modules/emscripten/scons-tools/llvm.py +4 -3
  10. data/modules/emscripten/src/analyzer.js +32 -13
  11. data/modules/emscripten/src/embind/embind.js +13 -13
  12. data/modules/emscripten/src/embind/emval.js +8 -7
  13. data/modules/emscripten/src/intertyper.js +10 -0
  14. data/modules/emscripten/src/jsifier.js +28 -6
  15. data/modules/emscripten/src/library.js +2949 -1322
  16. data/modules/emscripten/src/library_browser.js +27 -23
  17. data/modules/emscripten/src/library_egl.js +7 -2
  18. data/modules/emscripten/src/library_gl.js +15 -2
  19. data/modules/emscripten/src/library_glut.js +1 -1
  20. data/modules/emscripten/src/library_jansson.js +1 -1
  21. data/modules/emscripten/src/library_openal.js +464 -132
  22. data/modules/emscripten/src/library_path.js +134 -0
  23. data/modules/emscripten/src/library_sdl.js +222 -50
  24. data/modules/emscripten/src/modules.js +22 -5
  25. data/modules/emscripten/src/parseTools.js +13 -2
  26. data/modules/emscripten/src/postamble.js +60 -34
  27. data/modules/emscripten/src/preamble.js +67 -18
  28. data/modules/emscripten/src/relooper/Relooper.cpp +1 -1
  29. data/modules/emscripten/src/runtime.js +12 -2
  30. data/modules/emscripten/src/settings.js +869 -826
  31. data/modules/emscripten/src/shell.js +63 -51
  32. data/modules/emscripten/src/utility.js +6 -0
  33. data/modules/emscripten/system/include/bsd/sys/mman.h +1 -1
  34. data/modules/emscripten/system/include/emscripten/bind.h +28 -28
  35. data/modules/emscripten/system/include/libc/math.h +8 -0
  36. data/modules/emscripten/system/include/libc/sys/signal.h +3 -1
  37. data/modules/emscripten/system/include/libc/sys/stat.h +2 -1
  38. data/modules/emscripten/system/include/libc/sys/types.h +4 -0
  39. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +24 -0
  40. data/modules/emscripten/system/include/libcxx/__bit_reference +27 -8
  41. data/modules/emscripten/system/include/libcxx/__config +62 -15
  42. data/modules/emscripten/system/include/libcxx/__debug +5 -1
  43. data/modules/emscripten/system/include/libcxx/__functional_03 +24 -24
  44. data/modules/emscripten/system/include/libcxx/__functional_base +22 -4
  45. data/modules/emscripten/system/include/libcxx/__hash_table +566 -54
  46. data/modules/emscripten/system/include/libcxx/__locale +11 -3
  47. data/modules/emscripten/system/include/libcxx/__split_buffer +6 -6
  48. data/modules/emscripten/system/include/libcxx/__std_stream +58 -30
  49. data/modules/emscripten/system/include/libcxx/__tree +58 -51
  50. data/modules/emscripten/system/include/libcxx/__tuple +9 -9
  51. data/modules/emscripten/system/include/libcxx/algorithm +223 -13
  52. data/modules/emscripten/system/include/libcxx/array +18 -17
  53. data/modules/emscripten/system/include/libcxx/atomic +15 -5
  54. data/modules/emscripten/system/include/libcxx/cctype +2 -2
  55. data/modules/emscripten/system/include/libcxx/chrono +131 -36
  56. data/modules/emscripten/system/include/libcxx/cmath +41 -36
  57. data/modules/emscripten/system/include/libcxx/complex +49 -49
  58. data/modules/emscripten/system/include/libcxx/cstdio +2 -2
  59. data/modules/emscripten/system/include/libcxx/cstdlib +5 -5
  60. data/modules/emscripten/system/include/libcxx/cstring +2 -2
  61. data/modules/emscripten/system/include/libcxx/cwchar +22 -13
  62. data/modules/emscripten/system/include/libcxx/deque +27 -14
  63. data/modules/emscripten/system/include/libcxx/forward_list +36 -35
  64. data/modules/emscripten/system/include/libcxx/fstream +16 -0
  65. data/modules/emscripten/system/include/libcxx/functional +348 -23
  66. data/modules/emscripten/system/include/libcxx/future +66 -0
  67. data/modules/emscripten/system/include/libcxx/ios +27 -0
  68. data/modules/emscripten/system/include/libcxx/istream +2 -4
  69. data/modules/emscripten/system/include/libcxx/iterator +17 -9
  70. data/modules/emscripten/system/include/libcxx/limits +2 -2
  71. data/modules/emscripten/system/include/libcxx/list +165 -105
  72. data/modules/emscripten/system/include/libcxx/locale +154 -43
  73. data/modules/emscripten/system/include/libcxx/map +165 -224
  74. data/modules/emscripten/system/include/libcxx/memory +113 -54
  75. data/modules/emscripten/system/include/libcxx/random +2 -29
  76. data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
  77. data/modules/emscripten/system/include/libcxx/regex +60 -15
  78. data/modules/emscripten/system/include/libcxx/sstream +124 -40
  79. data/modules/emscripten/system/include/libcxx/string +345 -182
  80. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +3 -3
  81. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -2
  82. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +3 -3
  83. data/modules/emscripten/system/include/libcxx/support/win32/support.h +10 -11
  84. data/modules/emscripten/system/include/libcxx/thread +2 -2
  85. data/modules/emscripten/system/include/libcxx/tuple +134 -65
  86. data/modules/emscripten/system/include/libcxx/type_traits +232 -24
  87. data/modules/emscripten/system/include/libcxx/unordered_map +314 -161
  88. data/modules/emscripten/system/include/libcxx/unordered_set +160 -2
  89. data/modules/emscripten/system/include/libcxx/utility +225 -40
  90. data/modules/emscripten/system/include/libcxx/vector +52 -57
  91. data/modules/emscripten/system/include/net/if.h +20 -1
  92. data/modules/emscripten/system/include/net/netinet/in.h +69 -5
  93. data/modules/emscripten/system/include/netdb.h +36 -0
  94. data/modules/emscripten/system/include/sys/ioctl.h +55 -3
  95. data/modules/emscripten/system/include/sys/select.h +2 -0
  96. data/modules/emscripten/system/include/sys/sendfile.h +16 -0
  97. data/modules/emscripten/system/include/sys/socket.h +181 -35
  98. data/modules/emscripten/system/lib/dlmalloc.c +10 -12
  99. data/modules/emscripten/system/lib/libc/musl/src/stdlib/ecvt.c +19 -0
  100. data/modules/emscripten/system/lib/libc/musl/src/stdlib/fcvt.c +25 -0
  101. data/modules/emscripten/system/lib/libc/musl/src/stdlib/gcvt.c +8 -0
  102. data/modules/emscripten/system/lib/libcextra.symbols +3 -0
  103. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +24 -0
  104. data/modules/emscripten/system/lib/libcxx/debug.cpp +11 -9
  105. data/modules/emscripten/system/lib/libcxx/exception.cpp +9 -0
  106. data/modules/emscripten/system/lib/libcxx/hash.cpp +6 -0
  107. data/modules/emscripten/system/lib/libcxx/iostream.cpp +4 -4
  108. data/modules/emscripten/system/lib/libcxx/locale.cpp +91 -42
  109. data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
  110. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +1 -1
  111. data/modules/emscripten/system/lib/libcxx/string.cpp +332 -491
  112. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +4 -2
  113. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +140 -41
  114. data/modules/emscripten/system/lib/libcxx/symbols +9 -256
  115. data/modules/emscripten/system/lib/libcxx/system_error.cpp +3 -0
  116. data/modules/emscripten/system/lib/libcxx/thread.cpp +16 -3
  117. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +12 -2
  118. data/modules/emscripten/third_party/stb_image.c +4673 -0
  119. data/modules/emscripten/tools/asm_module.py +273 -0
  120. data/modules/emscripten/tools/exec_llvm.py +2 -2
  121. data/modules/emscripten/tools/file_packager.py +36 -16
  122. data/modules/emscripten/tools/find_bigfuncs.py +9 -9
  123. data/modules/emscripten/tools/js-optimizer.js +485 -131
  124. data/modules/emscripten/tools/js_optimizer.py +22 -15
  125. data/modules/emscripten/tools/merge_asm.py +26 -0
  126. data/modules/emscripten/tools/nativize_llvm.py +2 -2
  127. data/modules/emscripten/tools/settings_template_readonly.py +1 -1
  128. data/modules/emscripten/tools/shared.py +63 -20
  129. data/modules/emscripten/tools/split_asm.py +30 -0
  130. data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +686 -0
  131. data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +263 -0
  132. data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +747 -0
  133. data/modules/emscripten/tools/{test-js-optimizer-asm-outline.js → test-js-optimizer-asm-outline2.js} +1 -1
  134. data/modules/emscripten/tools/test-js-optimizer-asm-outline3-output.js +28 -0
  135. data/modules/emscripten/tools/test-js-optimizer-asm-outline3.js +30 -0
  136. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +4 -4
  137. data/modules/mruby/AUTHORS +1 -0
  138. data/modules/mruby/README.md +4 -2
  139. data/modules/mruby/build_config.rb +6 -6
  140. data/modules/mruby/doc/mrbgems/README.md +4 -4
  141. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +1 -1
  142. data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +1 -1
  143. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +1 -1
  144. data/modules/mruby/include/mrbconf.h +3 -0
  145. data/modules/mruby/include/mruby/array.h +2 -2
  146. data/modules/mruby/include/mruby/class.h +4 -4
  147. data/modules/mruby/include/mruby/compile.h +1 -0
  148. data/modules/mruby/include/mruby/data.h +1 -1
  149. data/modules/mruby/include/mruby/hash.h +2 -2
  150. data/modules/mruby/include/mruby/irep.h +3 -2
  151. data/modules/mruby/include/mruby/proc.h +1 -1
  152. data/modules/mruby/include/mruby/range.h +1 -1
  153. data/modules/mruby/include/mruby/string.h +2 -2
  154. data/modules/mruby/include/mruby/value.h +43 -26
  155. data/modules/mruby/include/mruby.h +10 -2
  156. data/modules/mruby/minirake +2 -2
  157. data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +1 -1
  158. data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +4 -1
  159. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +32 -0
  160. data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
  161. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +13 -5
  162. data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +1 -1
  163. data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -11
  164. data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +1 -1
  165. data/modules/mruby/mrbgems/mruby-exit/mrbgem.rake +4 -0
  166. data/modules/mruby/mrbgems/mruby-exit/src/mruby-exit.c +24 -0
  167. data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +1 -1
  168. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +4 -2
  169. data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +1 -1
  170. data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +5 -7
  171. data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +1 -1
  172. data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +1 -1
  173. data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -2
  174. data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -1
  175. data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +3 -3
  176. data/modules/mruby/mrbgems/mruby-object-ext/test/nil.rb +3 -3
  177. data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +1 -1
  178. data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +1 -1
  179. data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +36 -37
  180. data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +1 -1
  181. data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +1 -1
  182. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +8 -8
  183. data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +1 -1
  184. data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +1 -1
  185. data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +6 -6
  186. data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +1 -1
  187. data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +1 -1
  188. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +6 -6
  189. data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +1 -1
  190. data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +1 -1
  191. data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +2 -2
  192. data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +1 -1
  193. data/modules/mruby/mrbgems/mruby-time/src/time.c +2 -8
  194. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +1 -1
  195. data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +10 -10
  196. data/modules/mruby/mrblib/class.rb +15 -9
  197. data/modules/mruby/mrblib/string.rb +12 -0
  198. data/modules/mruby/src/array.c +4 -3
  199. data/modules/mruby/src/class.c +13 -8
  200. data/modules/mruby/src/codegen.c +9 -8
  201. data/modules/mruby/src/error.c +7 -5
  202. data/modules/mruby/src/error.h +1 -0
  203. data/modules/mruby/src/etc.c +1 -1
  204. data/modules/mruby/src/gc.c +163 -128
  205. data/modules/mruby/src/kernel.c +43 -15
  206. data/modules/mruby/src/numeric.c +9 -7
  207. data/modules/mruby/src/object.c +1 -1
  208. data/modules/mruby/src/parse.y +37 -19
  209. data/modules/mruby/src/range.c +10 -24
  210. data/modules/mruby/src/state.c +2 -6
  211. data/modules/mruby/src/string.c +0 -9
  212. data/modules/mruby/src/variable.c +2 -2
  213. data/modules/mruby/src/vm.c +12 -6
  214. data/modules/mruby/tasks/mrbgem_spec.rake +7 -0
  215. data/modules/mruby/tasks/mrbgems.rake +2 -1
  216. data/modules/mruby/tasks/mrbgems_test.rake +1 -1
  217. data/modules/mruby/tasks/mruby_build.rake +4 -3
  218. data/modules/mruby/tasks/mruby_build_commands.rake +6 -1
  219. data/modules/mruby/tasks/mruby_build_gem.rake +2 -2
  220. data/modules/mruby/tasks/toolchains/androideabi.rake +2 -0
  221. data/modules/mruby/test/assert.rb +2 -2
  222. data/modules/mruby/test/t/argumenterror.rb +3 -3
  223. data/modules/mruby/test/t/array.rb +55 -55
  224. data/modules/mruby/test/t/basicobject.rb +1 -1
  225. data/modules/mruby/test/t/bs_block.rb +12 -12
  226. data/modules/mruby/test/t/class.rb +21 -21
  227. data/modules/mruby/test/t/enumerable.rb +18 -18
  228. data/modules/mruby/test/t/exception.rb +20 -20
  229. data/modules/mruby/test/t/false.rb +3 -3
  230. data/modules/mruby/test/t/float.rb +40 -40
  231. data/modules/mruby/test/t/gc.rb +10 -10
  232. data/modules/mruby/test/t/hash.rb +41 -41
  233. data/modules/mruby/test/t/indexerror.rb +2 -2
  234. data/modules/mruby/test/t/integer.rb +41 -41
  235. data/modules/mruby/test/t/kernel.rb +33 -33
  236. data/modules/mruby/test/t/literals.rb +82 -82
  237. data/modules/mruby/test/t/localjumperror.rb +1 -1
  238. data/modules/mruby/test/t/module.rb +170 -31
  239. data/modules/mruby/test/t/nameerror.rb +5 -5
  240. data/modules/mruby/test/t/nil.rb +2 -2
  241. data/modules/mruby/test/t/nomethoderror.rb +1 -1
  242. data/modules/mruby/test/t/numeric.rb +5 -5
  243. data/modules/mruby/test/t/object.rb +2 -2
  244. data/modules/mruby/test/t/proc.rb +8 -8
  245. data/modules/mruby/test/t/range.rb +9 -9
  246. data/modules/mruby/test/t/rangeerror.rb +2 -2
  247. data/modules/mruby/test/t/runtimeerror.rb +1 -1
  248. data/modules/mruby/test/t/standarderror.rb +2 -2
  249. data/modules/mruby/test/t/string.rb +100 -100
  250. data/modules/mruby/test/t/symbol.rb +5 -5
  251. data/modules/mruby/test/t/syntax.rb +15 -6
  252. data/modules/mruby/test/t/true.rb +3 -3
  253. data/modules/mruby/test/t/typeerror.rb +2 -2
  254. data/modules/mruby/tools/mrbc/mrbc.c +10 -4
  255. data/modules/mruby/travis_config.rb +1 -0
  256. data/scripts/gen_gems_config.rb +5 -1
  257. metadata +19 -4
  258. data/modules/emscripten/tools/test-js-optimizer-asm-outline-output.js +0 -570
@@ -68,96 +68,120 @@ template <class T> reference_wrapper<const T> cref(const T& t) noexcept;
68
68
  template <class T> void cref(const T&& t) = delete;
69
69
  template <class T> reference_wrapper<const T> cref(reference_wrapper<T> t) noexcept;
70
70
 
71
- template <class T>
71
+ template <class T> // <class T=void> in C++14
72
72
  struct plus : binary_function<T, T, T>
73
73
  {
74
74
  T operator()(const T& x, const T& y) const;
75
75
  };
76
76
 
77
- template <class T>
77
+ template <class T> // <class T=void> in C++14
78
78
  struct minus : binary_function<T, T, T>
79
79
  {
80
80
  T operator()(const T& x, const T& y) const;
81
81
  };
82
82
 
83
- template <class T>
83
+ template <class T> // <class T=void> in C++14
84
84
  struct multiplies : binary_function<T, T, T>
85
85
  {
86
86
  T operator()(const T& x, const T& y) const;
87
87
  };
88
88
 
89
- template <class T>
89
+ template <class T> // <class T=void> in C++14
90
90
  struct divides : binary_function<T, T, T>
91
91
  {
92
92
  T operator()(const T& x, const T& y) const;
93
93
  };
94
94
 
95
- template <class T>
95
+ template <class T> // <class T=void> in C++14
96
96
  struct modulus : binary_function<T, T, T>
97
97
  {
98
98
  T operator()(const T& x, const T& y) const;
99
99
  };
100
100
 
101
- template <class T>
101
+ template <class T> // <class T=void> in C++14
102
102
  struct negate : unary_function<T, T>
103
103
  {
104
104
  T operator()(const T& x) const;
105
105
  };
106
106
 
107
- template <class T>
107
+ template <class T> // <class T=void> in C++14
108
108
  struct equal_to : binary_function<T, T, bool>
109
109
  {
110
110
  bool operator()(const T& x, const T& y) const;
111
111
  };
112
112
 
113
- template <class T>
113
+ template <class T> // <class T=void> in C++14
114
114
  struct not_equal_to : binary_function<T, T, bool>
115
115
  {
116
116
  bool operator()(const T& x, const T& y) const;
117
117
  };
118
118
 
119
- template <class T>
119
+ template <class T> // <class T=void> in C++14
120
120
  struct greater : binary_function<T, T, bool>
121
121
  {
122
122
  bool operator()(const T& x, const T& y) const;
123
123
  };
124
124
 
125
- template <class T>
125
+ template <class T> // <class T=void> in C++14
126
126
  struct less : binary_function<T, T, bool>
127
127
  {
128
128
  bool operator()(const T& x, const T& y) const;
129
129
  };
130
130
 
131
- template <class T>
131
+ template <class T> // <class T=void> in C++14
132
132
  struct greater_equal : binary_function<T, T, bool>
133
133
  {
134
134
  bool operator()(const T& x, const T& y) const;
135
135
  };
136
136
 
137
- template <class T>
137
+ template <class T> // <class T=void> in C++14
138
138
  struct less_equal : binary_function<T, T, bool>
139
139
  {
140
140
  bool operator()(const T& x, const T& y) const;
141
141
  };
142
142
 
143
- template <class T>
143
+ template <class T> // <class T=void> in C++14
144
144
  struct logical_and : binary_function<T, T, bool>
145
145
  {
146
146
  bool operator()(const T& x, const T& y) const;
147
147
  };
148
148
 
149
- template <class T>
149
+ template <class T> // <class T=void> in C++14
150
150
  struct logical_or : binary_function<T, T, bool>
151
151
  {
152
152
  bool operator()(const T& x, const T& y) const;
153
153
  };
154
154
 
155
- template <class T>
155
+ template <class T> // <class T=void> in C++14
156
156
  struct logical_not : unary_function<T, bool>
157
157
  {
158
158
  bool operator()(const T& x) const;
159
159
  };
160
160
 
161
+ template <class T> // <class T=void> in C++14
162
+ struct bit_and : unary_function<T, bool>
163
+ {
164
+ bool operator()(const T& x, const T& y) const;
165
+ };
166
+
167
+ template <class T> // <class T=void> in C++14
168
+ struct bit_or : unary_function<T, bool>
169
+ {
170
+ bool operator()(const T& x, const T& y) const;
171
+ };
172
+
173
+ template <class T> // <class T=void> in C++14
174
+ struct bit_xor : unary_function<T, bool>
175
+ {
176
+ bool operator()(const T& x, const T& y) const;
177
+ };
178
+
179
+ template <class T=void> // C++14
180
+ struct bit_xor : unary_function<T, bool>
181
+ {
182
+ bool operator()(const T& x) const;
183
+ };
184
+
161
185
  template <class Predicate>
162
186
  class unary_negate
163
187
  : public unary_function<typename Predicate::argument_type, bool>
@@ -473,127 +497,399 @@ POLICY: For non-variadic implementations, the number of arguments is limited
473
497
 
474
498
  _LIBCPP_BEGIN_NAMESPACE_STD
475
499
 
500
+ #if _LIBCPP_STD_VER > 11
501
+ template <class _Tp = void>
502
+ #else
476
503
  template <class _Tp>
504
+ #endif
477
505
  struct _LIBCPP_TYPE_VIS plus : binary_function<_Tp, _Tp, _Tp>
478
506
  {
479
507
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
480
508
  {return __x + __y;}
481
509
  };
482
510
 
511
+ #if _LIBCPP_STD_VER > 11
512
+ template <>
513
+ struct _LIBCPP_TYPE_VIS plus<void>
514
+ {
515
+ template <class _T1, class _T2>
516
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const
517
+ { return _VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u); }
518
+ };
519
+ #endif
520
+
521
+
522
+ #if _LIBCPP_STD_VER > 11
523
+ template <class _Tp = void>
524
+ #else
483
525
  template <class _Tp>
526
+ #endif
484
527
  struct _LIBCPP_TYPE_VIS minus : binary_function<_Tp, _Tp, _Tp>
485
528
  {
486
529
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
487
530
  {return __x - __y;}
488
531
  };
489
532
 
533
+ #if _LIBCPP_STD_VER > 11
534
+ template <>
535
+ struct _LIBCPP_TYPE_VIS minus<void>
536
+ {
537
+ template <class _T1, class _T2>
538
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const
539
+ { return _VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u); }
540
+ };
541
+ #endif
542
+
543
+
544
+ #if _LIBCPP_STD_VER > 11
545
+ template <class _Tp = void>
546
+ #else
490
547
  template <class _Tp>
548
+ #endif
491
549
  struct _LIBCPP_TYPE_VIS multiplies : binary_function<_Tp, _Tp, _Tp>
492
550
  {
493
551
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
494
552
  {return __x * __y;}
495
553
  };
496
554
 
555
+ #if _LIBCPP_STD_VER > 11
556
+ template <>
557
+ struct _LIBCPP_TYPE_VIS multiplies<void>
558
+ {
559
+ template <class _T1, class _T2>
560
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const
561
+ { return _VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u); }
562
+ };
563
+ #endif
564
+
565
+
566
+ #if _LIBCPP_STD_VER > 11
567
+ template <class _Tp = void>
568
+ #else
497
569
  template <class _Tp>
570
+ #endif
498
571
  struct _LIBCPP_TYPE_VIS divides : binary_function<_Tp, _Tp, _Tp>
499
572
  {
500
573
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
501
574
  {return __x / __y;}
502
575
  };
503
576
 
577
+ #if _LIBCPP_STD_VER > 11
578
+ template <>
579
+ struct _LIBCPP_TYPE_VIS divides<void>
580
+ {
581
+ template <class _T1, class _T2>
582
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const
583
+ { return _VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u); }
584
+ };
585
+ #endif
586
+
587
+
588
+ #if _LIBCPP_STD_VER > 11
589
+ template <class _Tp = void>
590
+ #else
504
591
  template <class _Tp>
592
+ #endif
505
593
  struct _LIBCPP_TYPE_VIS modulus : binary_function<_Tp, _Tp, _Tp>
506
594
  {
507
595
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
508
596
  {return __x % __y;}
509
597
  };
510
598
 
599
+ #if _LIBCPP_STD_VER > 11
600
+ template <>
601
+ struct _LIBCPP_TYPE_VIS modulus<void>
602
+ {
603
+ template <class _T1, class _T2>
604
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_T1&& __t, _T2&& __u) const
605
+ { return _VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u); }
606
+ };
607
+ #endif
608
+
609
+
610
+ #if _LIBCPP_STD_VER > 11
611
+ template <class _Tp = void>
612
+ #else
511
613
  template <class _Tp>
614
+ #endif
512
615
  struct _LIBCPP_TYPE_VIS negate : unary_function<_Tp, _Tp>
513
616
  {
514
617
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x) const
515
618
  {return -__x;}
516
619
  };
517
620
 
621
+ #if _LIBCPP_STD_VER > 11
622
+ template <>
623
+ struct _LIBCPP_TYPE_VIS negate<void>
624
+ {
625
+ template <class _Tp>
626
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_Tp&& __x) const
627
+ { return -_VSTD::forward<_Tp>(__x); }
628
+ };
629
+ #endif
630
+
631
+
632
+ #if _LIBCPP_STD_VER > 11
633
+ template <class _Tp = void>
634
+ #else
518
635
  template <class _Tp>
636
+ #endif
519
637
  struct _LIBCPP_TYPE_VIS equal_to : binary_function<_Tp, _Tp, bool>
520
638
  {
521
639
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
522
640
  {return __x == __y;}
523
641
  };
524
642
 
643
+ #if _LIBCPP_STD_VER > 11
644
+ template <>
645
+ struct _LIBCPP_TYPE_VIS equal_to<void>
646
+ {
647
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
648
+ auto operator()(_T1&& __t, _T2&& __u) const
649
+ { return _VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u); }
650
+ };
651
+ #endif
652
+
653
+
654
+ #if _LIBCPP_STD_VER > 11
655
+ template <class _Tp = void>
656
+ #else
525
657
  template <class _Tp>
658
+ #endif
526
659
  struct _LIBCPP_TYPE_VIS not_equal_to : binary_function<_Tp, _Tp, bool>
527
660
  {
528
661
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
529
662
  {return __x != __y;}
530
663
  };
531
664
 
665
+ #if _LIBCPP_STD_VER > 11
666
+ template <>
667
+ struct _LIBCPP_TYPE_VIS not_equal_to<void>
668
+ {
669
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
670
+ auto operator()(_T1&& __t, _T2&& __u) const
671
+ { return _VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u); }
672
+ };
673
+ #endif
674
+
675
+
676
+ #if _LIBCPP_STD_VER > 11
677
+ template <class _Tp = void>
678
+ #else
532
679
  template <class _Tp>
680
+ #endif
533
681
  struct _LIBCPP_TYPE_VIS greater : binary_function<_Tp, _Tp, bool>
534
682
  {
535
683
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
536
684
  {return __x > __y;}
537
685
  };
538
686
 
687
+ #if _LIBCPP_STD_VER > 11
688
+ template <>
689
+ struct _LIBCPP_TYPE_VIS greater<void>
690
+ {
691
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
692
+ auto operator()(_T1&& __t, _T2&& __u) const
693
+ { return _VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u); }
694
+ };
695
+ #endif
696
+
697
+
539
698
  // less in <__functional_base>
540
699
 
700
+ #if _LIBCPP_STD_VER > 11
701
+ template <class _Tp = void>
702
+ #else
541
703
  template <class _Tp>
704
+ #endif
542
705
  struct _LIBCPP_TYPE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
543
706
  {
544
707
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
545
708
  {return __x >= __y;}
546
709
  };
547
710
 
711
+ #if _LIBCPP_STD_VER > 11
712
+ template <>
713
+ struct _LIBCPP_TYPE_VIS greater_equal<void>
714
+ {
715
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
716
+ auto operator()(_T1&& __t, _T2&& __u) const
717
+ { return _VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u); }
718
+ };
719
+ #endif
720
+
721
+
722
+ #if _LIBCPP_STD_VER > 11
723
+ template <class _Tp = void>
724
+ #else
548
725
  template <class _Tp>
726
+ #endif
549
727
  struct _LIBCPP_TYPE_VIS less_equal : binary_function<_Tp, _Tp, bool>
550
728
  {
551
729
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
552
730
  {return __x <= __y;}
553
731
  };
554
732
 
733
+ #if _LIBCPP_STD_VER > 11
734
+ template <>
735
+ struct _LIBCPP_TYPE_VIS less_equal<void>
736
+ {
737
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
738
+ auto operator()(_T1&& __t, _T2&& __u) const
739
+ { return _VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u); }
740
+ };
741
+ #endif
742
+
743
+
744
+ #if _LIBCPP_STD_VER > 11
745
+ template <class _Tp = void>
746
+ #else
555
747
  template <class _Tp>
748
+ #endif
556
749
  struct _LIBCPP_TYPE_VIS logical_and : binary_function<_Tp, _Tp, bool>
557
750
  {
558
751
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
559
752
  {return __x && __y;}
560
753
  };
561
754
 
755
+ #if _LIBCPP_STD_VER > 11
756
+ template <>
757
+ struct _LIBCPP_TYPE_VIS logical_and<void>
758
+ {
759
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
760
+ auto operator()(_T1&& __t, _T2&& __u) const
761
+ { return _VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u); }
762
+ };
763
+ #endif
764
+
765
+
766
+ #if _LIBCPP_STD_VER > 11
767
+ template <class _Tp = void>
768
+ #else
562
769
  template <class _Tp>
770
+ #endif
563
771
  struct _LIBCPP_TYPE_VIS logical_or : binary_function<_Tp, _Tp, bool>
564
772
  {
565
773
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
566
774
  {return __x || __y;}
567
775
  };
568
776
 
777
+ #if _LIBCPP_STD_VER > 11
778
+ template <>
779
+ struct _LIBCPP_TYPE_VIS logical_or<void>
780
+ {
781
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
782
+ auto operator()(_T1&& __t, _T2&& __u) const
783
+ { return _VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u); }
784
+ };
785
+ #endif
786
+
787
+
788
+ #if _LIBCPP_STD_VER > 11
789
+ template <class _Tp = void>
790
+ #else
569
791
  template <class _Tp>
792
+ #endif
570
793
  struct _LIBCPP_TYPE_VIS logical_not : unary_function<_Tp, bool>
571
794
  {
572
795
  _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x) const
573
796
  {return !__x;}
574
797
  };
575
798
 
799
+ #if _LIBCPP_STD_VER > 11
800
+ template <>
801
+ struct _LIBCPP_TYPE_VIS logical_not<void>
802
+ {
803
+ template <class _Tp>
804
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_Tp&& __x) const
805
+ { return !_VSTD::forward<_Tp>(__x); }
806
+ };
807
+ #endif
808
+
809
+
810
+ #if _LIBCPP_STD_VER > 11
811
+ template <class _Tp = void>
812
+ #else
576
813
  template <class _Tp>
814
+ #endif
577
815
  struct _LIBCPP_TYPE_VIS bit_and : binary_function<_Tp, _Tp, _Tp>
578
816
  {
579
817
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
580
818
  {return __x & __y;}
581
819
  };
582
820
 
821
+ #if _LIBCPP_STD_VER > 11
822
+ template <>
823
+ struct _LIBCPP_TYPE_VIS bit_and<void>
824
+ {
825
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
826
+ auto operator()(_T1&& __t, _T2&& __u) const
827
+ { return _VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u); }
828
+ };
829
+ #endif
830
+
831
+
832
+ #if _LIBCPP_STD_VER > 11
833
+ template <class _Tp = void>
834
+ #else
583
835
  template <class _Tp>
836
+ #endif
584
837
  struct _LIBCPP_TYPE_VIS bit_or : binary_function<_Tp, _Tp, _Tp>
585
838
  {
586
839
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
587
840
  {return __x | __y;}
588
841
  };
589
842
 
843
+ #if _LIBCPP_STD_VER > 11
844
+ template <>
845
+ struct _LIBCPP_TYPE_VIS bit_or<void>
846
+ {
847
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
848
+ auto operator()(_T1&& __t, _T2&& __u) const
849
+ { return _VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u); }
850
+ };
851
+ #endif
852
+
853
+
854
+ #if _LIBCPP_STD_VER > 11
855
+ template <class _Tp = void>
856
+ #else
590
857
  template <class _Tp>
858
+ #endif
591
859
  struct _LIBCPP_TYPE_VIS bit_xor : binary_function<_Tp, _Tp, _Tp>
592
860
  {
593
861
  _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
594
862
  {return __x ^ __y;}
595
863
  };
596
864
 
865
+ #if _LIBCPP_STD_VER > 11
866
+ template <>
867
+ struct _LIBCPP_TYPE_VIS bit_xor<void>
868
+ {
869
+ template <class _T1, class _T2> _LIBCPP_INLINE_VISIBILITY
870
+ auto operator()(_T1&& __t, _T2&& __u) const
871
+ { return _VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u); }
872
+ };
873
+ #endif
874
+
875
+
876
+ #if _LIBCPP_STD_VER > 11
877
+ template <class _Tp = void>
878
+ struct _LIBCPP_TYPE_VIS bit_not : unary_function<_Tp, _Tp>
879
+ {
880
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x) const
881
+ {return ~__x;}
882
+ };
883
+
884
+ template <>
885
+ struct _LIBCPP_TYPE_VIS bit_not<void>
886
+ {
887
+ template <class _Tp>
888
+ _LIBCPP_INLINE_VISIBILITY auto operator()(_Tp&& __x) const
889
+ { return ~_VSTD::forward<_Tp>(__x); }
890
+ };
891
+ #endif
892
+
597
893
  template <class _Predicate>
598
894
  class _LIBCPP_TYPE_VIS unary_negate
599
895
  : public unary_function<typename _Predicate::argument_type, bool>
@@ -1139,8 +1435,11 @@ public:
1139
1435
  function(const function&);
1140
1436
  function(function&&) _NOEXCEPT;
1141
1437
  template<class _Fp>
1142
- function(_Fp,
1143
- typename enable_if<__callable<_Fp>::value>::type* = 0);
1438
+ function(_Fp, typename enable_if
1439
+ <
1440
+ __callable<_Fp>::value &&
1441
+ !is_same<_Fp, function>::value
1442
+ >::type* = 0);
1144
1443
 
1145
1444
  template<class _Alloc>
1146
1445
  _LIBCPP_INLINE_VISIBILITY
@@ -1162,7 +1461,8 @@ public:
1162
1461
  template<class _Fp>
1163
1462
  typename enable_if
1164
1463
  <
1165
- __callable<typename decay<_Fp>::type>::value,
1464
+ __callable<typename decay<_Fp>::type>::value &&
1465
+ !is_same<typename remove_reference<_Fp>::type, function>::value,
1166
1466
  function&
1167
1467
  >::type
1168
1468
  operator=(_Fp&&);
@@ -1266,7 +1566,11 @@ function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&,
1266
1566
  template<class _Rp, class ..._ArgTypes>
1267
1567
  template <class _Fp>
1268
1568
  function<_Rp(_ArgTypes...)>::function(_Fp __f,
1269
- typename enable_if<__callable<_Fp>::value>::type*)
1569
+ typename enable_if
1570
+ <
1571
+ __callable<_Fp>::value &&
1572
+ !is_same<_Fp, function>::value
1573
+ >::type*)
1270
1574
  : __f_(0)
1271
1575
  {
1272
1576
  if (__not_null(__f))
@@ -1370,7 +1674,8 @@ template<class _Rp, class ..._ArgTypes>
1370
1674
  template <class _Fp>
1371
1675
  typename enable_if
1372
1676
  <
1373
- function<_Rp(_ArgTypes...)>::template __callable<typename decay<_Fp>::type>::value,
1677
+ function<_Rp(_ArgTypes...)>::template __callable<typename decay<_Fp>::type>::value &&
1678
+ !is_same<typename remove_reference<_Fp>::type, function<_Rp(_ArgTypes...)>>::value,
1374
1679
  function<_Rp(_ArgTypes...)>&
1375
1680
  >::type
1376
1681
  function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f)
@@ -1594,12 +1899,24 @@ template <class _Ti, bool IsReferenceWrapper, bool IsBindEx, bool IsPh,
1594
1899
  class _TupleUj>
1595
1900
  struct ____mu_return;
1596
1901
 
1902
+ template <bool _Invokable, class _Ti, class ..._Uj>
1903
+ struct ____mu_return_invokable // false
1904
+ {
1905
+ typedef __nat type;
1906
+ };
1907
+
1597
1908
  template <class _Ti, class ..._Uj>
1598
- struct ____mu_return<_Ti, false, true, false, tuple<_Uj...> >
1909
+ struct ____mu_return_invokable<true, _Ti, _Uj...>
1599
1910
  {
1600
1911
  typedef typename __invoke_of<_Ti&, _Uj...>::type type;
1601
1912
  };
1602
1913
 
1914
+ template <class _Ti, class ..._Uj>
1915
+ struct ____mu_return<_Ti, false, true, false, tuple<_Uj...> >
1916
+ : public ____mu_return_invokable<__invokable<_Ti&, _Uj...>::value, _Ti, _Uj...>
1917
+ {
1918
+ };
1919
+
1603
1920
  template <class _Ti, class _TupleUj>
1604
1921
  struct ____mu_return<_Ti, false, false, true, _TupleUj>
1605
1922
  {
@@ -1737,7 +2054,9 @@ public:
1737
2054
  template <class _Gp, class ..._BA,
1738
2055
  class = typename enable_if
1739
2056
  <
1740
- is_constructible<_Fd, _Gp>::value
2057
+ is_constructible<_Fd, _Gp>::value &&
2058
+ !is_same<typename remove_reference<_Gp>::type,
2059
+ __bind>::value
1741
2060
  >::type>
1742
2061
  _LIBCPP_INLINE_VISIBILITY
1743
2062
  explicit __bind(_Gp&& __f, _BA&& ...__bound_args)
@@ -1802,7 +2121,13 @@ public:
1802
2121
 
1803
2122
  #endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
1804
2123
 
1805
- template <class _Gp, class ..._BA>
2124
+ template <class _Gp, class ..._BA,
2125
+ class = typename enable_if
2126
+ <
2127
+ is_constructible<_Fd, _Gp>::value &&
2128
+ !is_same<typename remove_reference<_Gp>::type,
2129
+ __bind_r>::value
2130
+ >::type>
1806
2131
  _LIBCPP_INLINE_VISIBILITY
1807
2132
  explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args)
1808
2133
  : base(_VSTD::forward<_Gp>(__f),
@@ -403,6 +403,72 @@ _LIBCPP_DECLARE_STRONG_ENUM(launch)
403
403
  };
404
404
  _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(launch)
405
405
 
406
+ #ifndef _LIBCPP_HAS_NO_STRONG_ENUMS
407
+
408
+ #ifdef _LIBCXX_UNDERLYING_TYPE
409
+ typedef underlying_type<launch>::type __launch_underlying_type;
410
+ #else
411
+ typedef int __launch_underlying_type;
412
+ #endif
413
+
414
+ inline _LIBCPP_INLINE_VISIBILITY
415
+ _LIBCPP_CONSTEXPR
416
+ launch
417
+ operator&(launch __x, launch __y)
418
+ {
419
+ return static_cast<launch>(static_cast<__launch_underlying_type>(__x) &
420
+ static_cast<__launch_underlying_type>(__y));
421
+ }
422
+
423
+ inline _LIBCPP_INLINE_VISIBILITY
424
+ _LIBCPP_CONSTEXPR
425
+ launch
426
+ operator|(launch __x, launch __y)
427
+ {
428
+ return static_cast<launch>(static_cast<__launch_underlying_type>(__x) |
429
+ static_cast<__launch_underlying_type>(__y));
430
+ }
431
+
432
+ inline _LIBCPP_INLINE_VISIBILITY
433
+ _LIBCPP_CONSTEXPR
434
+ launch
435
+ operator^(launch __x, launch __y)
436
+ {
437
+ return static_cast<launch>(static_cast<__launch_underlying_type>(__x) ^
438
+ static_cast<__launch_underlying_type>(__y));
439
+ }
440
+
441
+ inline _LIBCPP_INLINE_VISIBILITY
442
+ _LIBCPP_CONSTEXPR
443
+ launch
444
+ operator~(launch __x)
445
+ {
446
+ return static_cast<launch>(~static_cast<__launch_underlying_type>(__x) & 3);
447
+ }
448
+
449
+ inline _LIBCPP_INLINE_VISIBILITY
450
+ launch&
451
+ operator&=(launch& __x, launch __y)
452
+ {
453
+ __x = __x & __y; return __x;
454
+ }
455
+
456
+ inline _LIBCPP_INLINE_VISIBILITY
457
+ launch&
458
+ operator|=(launch& __x, launch __y)
459
+ {
460
+ __x = __x | __y; return __x;
461
+ }
462
+
463
+ inline _LIBCPP_INLINE_VISIBILITY
464
+ launch&
465
+ operator^=(launch& __x, launch __y)
466
+ {
467
+ __x = __x ^ __y; return __x;
468
+ }
469
+
470
+ #endif // !_LIBCPP_HAS_NO_STRONG_ENUMS
471
+
406
472
  //enum class future_status
407
473
  _LIBCPP_DECLARE_STRONG_ENUM(future_status)
408
474
  {