webruby 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webruby/rake/mruby.rake +1 -0
- data/modules/emscripten/AUTHORS +7 -0
- data/modules/emscripten/LICENSE +26 -0
- data/modules/emscripten/emcc +58 -20
- data/modules/emscripten/emlink.py +2 -265
- data/modules/emscripten/emscripten.py +38 -18
- data/modules/emscripten/scons-tools/emscripten.py +11 -6
- data/modules/emscripten/scons-tools/llvm.py +4 -3
- data/modules/emscripten/src/analyzer.js +32 -13
- data/modules/emscripten/src/embind/embind.js +13 -13
- data/modules/emscripten/src/embind/emval.js +8 -7
- data/modules/emscripten/src/intertyper.js +10 -0
- data/modules/emscripten/src/jsifier.js +28 -6
- data/modules/emscripten/src/library.js +2949 -1322
- data/modules/emscripten/src/library_browser.js +27 -23
- data/modules/emscripten/src/library_egl.js +7 -2
- data/modules/emscripten/src/library_gl.js +15 -2
- data/modules/emscripten/src/library_glut.js +1 -1
- data/modules/emscripten/src/library_jansson.js +1 -1
- data/modules/emscripten/src/library_openal.js +464 -132
- data/modules/emscripten/src/library_path.js +134 -0
- data/modules/emscripten/src/library_sdl.js +222 -50
- data/modules/emscripten/src/modules.js +22 -5
- data/modules/emscripten/src/parseTools.js +13 -2
- data/modules/emscripten/src/postamble.js +60 -34
- data/modules/emscripten/src/preamble.js +67 -18
- data/modules/emscripten/src/relooper/Relooper.cpp +1 -1
- data/modules/emscripten/src/runtime.js +12 -2
- data/modules/emscripten/src/settings.js +869 -826
- data/modules/emscripten/src/shell.js +63 -51
- data/modules/emscripten/src/utility.js +6 -0
- data/modules/emscripten/system/include/bsd/sys/mman.h +1 -1
- data/modules/emscripten/system/include/emscripten/bind.h +28 -28
- data/modules/emscripten/system/include/libc/math.h +8 -0
- data/modules/emscripten/system/include/libc/sys/signal.h +3 -1
- data/modules/emscripten/system/include/libc/sys/stat.h +2 -1
- data/modules/emscripten/system/include/libc/sys/types.h +4 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +24 -0
- data/modules/emscripten/system/include/libcxx/__bit_reference +27 -8
- data/modules/emscripten/system/include/libcxx/__config +62 -15
- data/modules/emscripten/system/include/libcxx/__debug +5 -1
- data/modules/emscripten/system/include/libcxx/__functional_03 +24 -24
- data/modules/emscripten/system/include/libcxx/__functional_base +22 -4
- data/modules/emscripten/system/include/libcxx/__hash_table +566 -54
- data/modules/emscripten/system/include/libcxx/__locale +11 -3
- data/modules/emscripten/system/include/libcxx/__split_buffer +6 -6
- data/modules/emscripten/system/include/libcxx/__std_stream +58 -30
- data/modules/emscripten/system/include/libcxx/__tree +58 -51
- data/modules/emscripten/system/include/libcxx/__tuple +9 -9
- data/modules/emscripten/system/include/libcxx/algorithm +223 -13
- data/modules/emscripten/system/include/libcxx/array +18 -17
- data/modules/emscripten/system/include/libcxx/atomic +15 -5
- data/modules/emscripten/system/include/libcxx/cctype +2 -2
- data/modules/emscripten/system/include/libcxx/chrono +131 -36
- data/modules/emscripten/system/include/libcxx/cmath +41 -36
- data/modules/emscripten/system/include/libcxx/complex +49 -49
- data/modules/emscripten/system/include/libcxx/cstdio +2 -2
- data/modules/emscripten/system/include/libcxx/cstdlib +5 -5
- data/modules/emscripten/system/include/libcxx/cstring +2 -2
- data/modules/emscripten/system/include/libcxx/cwchar +22 -13
- data/modules/emscripten/system/include/libcxx/deque +27 -14
- data/modules/emscripten/system/include/libcxx/forward_list +36 -35
- data/modules/emscripten/system/include/libcxx/fstream +16 -0
- data/modules/emscripten/system/include/libcxx/functional +348 -23
- data/modules/emscripten/system/include/libcxx/future +66 -0
- data/modules/emscripten/system/include/libcxx/ios +27 -0
- data/modules/emscripten/system/include/libcxx/istream +2 -4
- data/modules/emscripten/system/include/libcxx/iterator +17 -9
- data/modules/emscripten/system/include/libcxx/limits +2 -2
- data/modules/emscripten/system/include/libcxx/list +165 -105
- data/modules/emscripten/system/include/libcxx/locale +154 -43
- data/modules/emscripten/system/include/libcxx/map +165 -224
- data/modules/emscripten/system/include/libcxx/memory +113 -54
- data/modules/emscripten/system/include/libcxx/random +2 -29
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +60 -15
- data/modules/emscripten/system/include/libcxx/sstream +124 -40
- data/modules/emscripten/system/include/libcxx/string +345 -182
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +3 -3
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -2
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +3 -3
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +10 -11
- data/modules/emscripten/system/include/libcxx/thread +2 -2
- data/modules/emscripten/system/include/libcxx/tuple +134 -65
- data/modules/emscripten/system/include/libcxx/type_traits +232 -24
- data/modules/emscripten/system/include/libcxx/unordered_map +314 -161
- data/modules/emscripten/system/include/libcxx/unordered_set +160 -2
- data/modules/emscripten/system/include/libcxx/utility +225 -40
- data/modules/emscripten/system/include/libcxx/vector +52 -57
- data/modules/emscripten/system/include/net/if.h +20 -1
- data/modules/emscripten/system/include/net/netinet/in.h +69 -5
- data/modules/emscripten/system/include/netdb.h +36 -0
- data/modules/emscripten/system/include/sys/ioctl.h +55 -3
- data/modules/emscripten/system/include/sys/select.h +2 -0
- data/modules/emscripten/system/include/sys/sendfile.h +16 -0
- data/modules/emscripten/system/include/sys/socket.h +181 -35
- data/modules/emscripten/system/lib/dlmalloc.c +10 -12
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/ecvt.c +19 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/fcvt.c +25 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/gcvt.c +8 -0
- data/modules/emscripten/system/lib/libcextra.symbols +3 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +24 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +11 -9
- data/modules/emscripten/system/lib/libcxx/exception.cpp +9 -0
- data/modules/emscripten/system/lib/libcxx/hash.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +4 -4
- data/modules/emscripten/system/lib/libcxx/locale.cpp +91 -42
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +1 -1
- data/modules/emscripten/system/lib/libcxx/string.cpp +332 -491
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +4 -2
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +140 -41
- data/modules/emscripten/system/lib/libcxx/symbols +9 -256
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +16 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +12 -2
- data/modules/emscripten/third_party/stb_image.c +4673 -0
- data/modules/emscripten/tools/asm_module.py +273 -0
- data/modules/emscripten/tools/exec_llvm.py +2 -2
- data/modules/emscripten/tools/file_packager.py +36 -16
- data/modules/emscripten/tools/find_bigfuncs.py +9 -9
- data/modules/emscripten/tools/js-optimizer.js +485 -131
- data/modules/emscripten/tools/js_optimizer.py +22 -15
- data/modules/emscripten/tools/merge_asm.py +26 -0
- data/modules/emscripten/tools/nativize_llvm.py +2 -2
- data/modules/emscripten/tools/settings_template_readonly.py +1 -1
- data/modules/emscripten/tools/shared.py +63 -20
- data/modules/emscripten/tools/split_asm.py +30 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +686 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +263 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +747 -0
- data/modules/emscripten/tools/{test-js-optimizer-asm-outline.js → test-js-optimizer-asm-outline2.js} +1 -1
- data/modules/emscripten/tools/test-js-optimizer-asm-outline3-output.js +28 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline3.js +30 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +4 -4
- data/modules/mruby/AUTHORS +1 -0
- data/modules/mruby/README.md +4 -2
- data/modules/mruby/build_config.rb +6 -6
- data/modules/mruby/doc/mrbgems/README.md +4 -4
- data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/include/mrbconf.h +3 -0
- data/modules/mruby/include/mruby/array.h +2 -2
- data/modules/mruby/include/mruby/class.h +4 -4
- data/modules/mruby/include/mruby/compile.h +1 -0
- data/modules/mruby/include/mruby/data.h +1 -1
- data/modules/mruby/include/mruby/hash.h +2 -2
- data/modules/mruby/include/mruby/irep.h +3 -2
- data/modules/mruby/include/mruby/proc.h +1 -1
- data/modules/mruby/include/mruby/range.h +1 -1
- data/modules/mruby/include/mruby/string.h +2 -2
- data/modules/mruby/include/mruby/value.h +43 -26
- data/modules/mruby/include/mruby.h +10 -2
- data/modules/mruby/minirake +2 -2
- data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +4 -1
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +32 -0
- data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +13 -5
- data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -11
- data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-exit/mrbgem.rake +4 -0
- data/modules/mruby/mrbgems/mruby-exit/src/mruby-exit.c +24 -0
- data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +4 -2
- data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +5 -7
- data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -2
- data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +3 -3
- data/modules/mruby/mrbgems/mruby-object-ext/test/nil.rb +3 -3
- data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +1 -1
- data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +36 -37
- data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +8 -8
- data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +6 -6
- data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +6 -6
- data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +2 -2
- data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-time/src/time.c +2 -8
- data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +10 -10
- data/modules/mruby/mrblib/class.rb +15 -9
- data/modules/mruby/mrblib/string.rb +12 -0
- data/modules/mruby/src/array.c +4 -3
- data/modules/mruby/src/class.c +13 -8
- data/modules/mruby/src/codegen.c +9 -8
- data/modules/mruby/src/error.c +7 -5
- data/modules/mruby/src/error.h +1 -0
- data/modules/mruby/src/etc.c +1 -1
- data/modules/mruby/src/gc.c +163 -128
- data/modules/mruby/src/kernel.c +43 -15
- data/modules/mruby/src/numeric.c +9 -7
- data/modules/mruby/src/object.c +1 -1
- data/modules/mruby/src/parse.y +37 -19
- data/modules/mruby/src/range.c +10 -24
- data/modules/mruby/src/state.c +2 -6
- data/modules/mruby/src/string.c +0 -9
- data/modules/mruby/src/variable.c +2 -2
- data/modules/mruby/src/vm.c +12 -6
- data/modules/mruby/tasks/mrbgem_spec.rake +7 -0
- data/modules/mruby/tasks/mrbgems.rake +2 -1
- data/modules/mruby/tasks/mrbgems_test.rake +1 -1
- data/modules/mruby/tasks/mruby_build.rake +4 -3
- data/modules/mruby/tasks/mruby_build_commands.rake +6 -1
- data/modules/mruby/tasks/mruby_build_gem.rake +2 -2
- data/modules/mruby/tasks/toolchains/androideabi.rake +2 -0
- data/modules/mruby/test/assert.rb +2 -2
- data/modules/mruby/test/t/argumenterror.rb +3 -3
- data/modules/mruby/test/t/array.rb +55 -55
- data/modules/mruby/test/t/basicobject.rb +1 -1
- data/modules/mruby/test/t/bs_block.rb +12 -12
- data/modules/mruby/test/t/class.rb +21 -21
- data/modules/mruby/test/t/enumerable.rb +18 -18
- data/modules/mruby/test/t/exception.rb +20 -20
- data/modules/mruby/test/t/false.rb +3 -3
- data/modules/mruby/test/t/float.rb +40 -40
- data/modules/mruby/test/t/gc.rb +10 -10
- data/modules/mruby/test/t/hash.rb +41 -41
- data/modules/mruby/test/t/indexerror.rb +2 -2
- data/modules/mruby/test/t/integer.rb +41 -41
- data/modules/mruby/test/t/kernel.rb +33 -33
- data/modules/mruby/test/t/literals.rb +82 -82
- data/modules/mruby/test/t/localjumperror.rb +1 -1
- data/modules/mruby/test/t/module.rb +170 -31
- data/modules/mruby/test/t/nameerror.rb +5 -5
- data/modules/mruby/test/t/nil.rb +2 -2
- data/modules/mruby/test/t/nomethoderror.rb +1 -1
- data/modules/mruby/test/t/numeric.rb +5 -5
- data/modules/mruby/test/t/object.rb +2 -2
- data/modules/mruby/test/t/proc.rb +8 -8
- data/modules/mruby/test/t/range.rb +9 -9
- data/modules/mruby/test/t/rangeerror.rb +2 -2
- data/modules/mruby/test/t/runtimeerror.rb +1 -1
- data/modules/mruby/test/t/standarderror.rb +2 -2
- data/modules/mruby/test/t/string.rb +100 -100
- data/modules/mruby/test/t/symbol.rb +5 -5
- data/modules/mruby/test/t/syntax.rb +15 -6
- data/modules/mruby/test/t/true.rb +3 -3
- data/modules/mruby/test/t/typeerror.rb +2 -2
- data/modules/mruby/tools/mrbc/mrbc.c +10 -4
- data/modules/mruby/travis_config.rb +1 -0
- data/scripts/gen_gems_config.rb +5 -1
- metadata +19 -4
- data/modules/emscripten/tools/test-js-optimizer-asm-outline-output.js +0 -570
@@ -79,47 +79,47 @@ template <class _T1, class _T2> struct __tuple_like<pair<_T1, _T2> > : true_type
|
|
79
79
|
template <class _Tp, size_t _Size> struct __tuple_like<array<_Tp, _Size> > : true_type {};
|
80
80
|
|
81
81
|
template <size_t _Ip, class ..._Tp>
|
82
|
-
_LIBCPP_INLINE_VISIBILITY
|
82
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
83
83
|
typename tuple_element<_Ip, tuple<_Tp...> >::type&
|
84
84
|
get(tuple<_Tp...>&) _NOEXCEPT;
|
85
85
|
|
86
86
|
template <size_t _Ip, class ..._Tp>
|
87
|
-
_LIBCPP_INLINE_VISIBILITY
|
87
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
88
88
|
const typename tuple_element<_Ip, tuple<_Tp...> >::type&
|
89
89
|
get(const tuple<_Tp...>&) _NOEXCEPT;
|
90
90
|
|
91
91
|
template <size_t _Ip, class ..._Tp>
|
92
|
-
_LIBCPP_INLINE_VISIBILITY
|
92
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
93
93
|
typename tuple_element<_Ip, tuple<_Tp...> >::type&&
|
94
94
|
get(tuple<_Tp...>&&) _NOEXCEPT;
|
95
95
|
|
96
96
|
template <size_t _Ip, class _T1, class _T2>
|
97
|
-
_LIBCPP_INLINE_VISIBILITY
|
97
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
98
98
|
typename tuple_element<_Ip, pair<_T1, _T2> >::type&
|
99
99
|
get(pair<_T1, _T2>&) _NOEXCEPT;
|
100
100
|
|
101
101
|
template <size_t _Ip, class _T1, class _T2>
|
102
|
-
_LIBCPP_INLINE_VISIBILITY
|
102
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
103
103
|
const typename tuple_element<_Ip, pair<_T1, _T2> >::type&
|
104
104
|
get(const pair<_T1, _T2>&) _NOEXCEPT;
|
105
105
|
|
106
106
|
template <size_t _Ip, class _T1, class _T2>
|
107
|
-
_LIBCPP_INLINE_VISIBILITY
|
107
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
108
108
|
typename tuple_element<_Ip, pair<_T1, _T2> >::type&&
|
109
109
|
get(pair<_T1, _T2>&&) _NOEXCEPT;
|
110
110
|
|
111
111
|
template <size_t _Ip, class _Tp, size_t _Size>
|
112
|
-
_LIBCPP_INLINE_VISIBILITY
|
112
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
113
113
|
_Tp&
|
114
114
|
get(array<_Tp, _Size>&) _NOEXCEPT;
|
115
115
|
|
116
116
|
template <size_t _Ip, class _Tp, size_t _Size>
|
117
|
-
_LIBCPP_INLINE_VISIBILITY
|
117
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
118
118
|
const _Tp&
|
119
119
|
get(const array<_Tp, _Size>&) _NOEXCEPT;
|
120
120
|
|
121
121
|
template <size_t _Ip, class _Tp, size_t _Size>
|
122
|
-
_LIBCPP_INLINE_VISIBILITY
|
122
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
123
123
|
_Tp&&
|
124
124
|
get(array<_Tp, _Size>&&) _NOEXCEPT;
|
125
125
|
|
@@ -87,30 +87,63 @@ template <class InputIterator1, class InputIterator2>
|
|
87
87
|
pair<InputIterator1, InputIterator2>
|
88
88
|
mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);
|
89
89
|
|
90
|
+
template <class InputIterator1, class InputIterator2>
|
91
|
+
pair<InputIterator1, InputIterator2>
|
92
|
+
mismatch(InputIterator1 first1, InputIterator1 last1,
|
93
|
+
InputIterator2 first2, InputIterator2 last2); // **C++14**
|
94
|
+
|
90
95
|
template <class InputIterator1, class InputIterator2, class BinaryPredicate>
|
91
96
|
pair<InputIterator1, InputIterator2>
|
92
97
|
mismatch(InputIterator1 first1, InputIterator1 last1,
|
93
98
|
InputIterator2 first2, BinaryPredicate pred);
|
94
99
|
|
100
|
+
template <class InputIterator1, class InputIterator2, class BinaryPredicate>
|
101
|
+
pair<InputIterator1, InputIterator2>
|
102
|
+
mismatch(InputIterator1 first1, InputIterator1 last1,
|
103
|
+
InputIterator2 first2, InputIterator2 last2,
|
104
|
+
BinaryPredicate pred); // **C++14**
|
105
|
+
|
95
106
|
template <class InputIterator1, class InputIterator2>
|
96
107
|
bool
|
97
108
|
equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);
|
98
109
|
|
110
|
+
template <class InputIterator1, class InputIterator2>
|
111
|
+
bool
|
112
|
+
equal(InputIterator1 first1, InputIterator1 last1,
|
113
|
+
InputIterator2 first2, InputIterator2 last2); // **C++14**
|
114
|
+
|
99
115
|
template <class InputIterator1, class InputIterator2, class BinaryPredicate>
|
100
116
|
bool
|
101
117
|
equal(InputIterator1 first1, InputIterator1 last1,
|
102
118
|
InputIterator2 first2, BinaryPredicate pred);
|
103
119
|
|
120
|
+
template <class InputIterator1, class InputIterator2, class BinaryPredicate>
|
121
|
+
bool
|
122
|
+
equal(InputIterator1 first1, InputIterator1 last1,
|
123
|
+
InputIterator2 first2, InputIterator2 last2,
|
124
|
+
BinaryPredicate pred); // **C++14**
|
125
|
+
|
104
126
|
template<class ForwardIterator1, class ForwardIterator2>
|
105
127
|
bool
|
106
128
|
is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
|
107
129
|
ForwardIterator2 first2);
|
108
130
|
|
131
|
+
template<class ForwardIterator1, class ForwardIterator2>
|
132
|
+
bool
|
133
|
+
is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
|
134
|
+
ForwardIterator2 first2, ForwardIterator2 last2); // **C++14**
|
135
|
+
|
109
136
|
template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
|
110
137
|
bool
|
111
138
|
is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
|
112
139
|
ForwardIterator2 first2, BinaryPredicate pred);
|
113
140
|
|
141
|
+
template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
|
142
|
+
bool
|
143
|
+
is_permutation(ForwardIterator1 first1, ForwardIterator1 last1,
|
144
|
+
ForwardIterator2 first2, ForwardIterator2 last2,
|
145
|
+
BinaryPredicate pred); // **C++14**
|
146
|
+
|
114
147
|
template <class ForwardIterator1, class ForwardIterator2>
|
115
148
|
ForwardIterator1
|
116
149
|
search(ForwardIterator1 first1, ForwardIterator1 last1,
|
@@ -1087,6 +1120,32 @@ mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __fi
|
|
1087
1120
|
return _VSTD::mismatch(__first1, __last1, __first2, __equal_to<__v1, __v2>());
|
1088
1121
|
}
|
1089
1122
|
|
1123
|
+
#if _LIBCPP_STD_VER > 11
|
1124
|
+
template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate>
|
1125
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1126
|
+
pair<_InputIterator1, _InputIterator2>
|
1127
|
+
mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
|
1128
|
+
_InputIterator2 __first2, _InputIterator2 __last2,
|
1129
|
+
_BinaryPredicate __pred)
|
1130
|
+
{
|
1131
|
+
for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2)
|
1132
|
+
if (!__pred(*__first1, *__first2))
|
1133
|
+
break;
|
1134
|
+
return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
|
1135
|
+
}
|
1136
|
+
|
1137
|
+
template <class _InputIterator1, class _InputIterator2>
|
1138
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1139
|
+
pair<_InputIterator1, _InputIterator2>
|
1140
|
+
mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
|
1141
|
+
_InputIterator2 __first2, _InputIterator2 __last2)
|
1142
|
+
{
|
1143
|
+
typedef typename iterator_traits<_InputIterator1>::value_type __v1;
|
1144
|
+
typedef typename iterator_traits<_InputIterator2>::value_type __v2;
|
1145
|
+
return _VSTD::mismatch(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>());
|
1146
|
+
}
|
1147
|
+
#endif
|
1148
|
+
|
1090
1149
|
// equal
|
1091
1150
|
|
1092
1151
|
template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate>
|
@@ -1110,6 +1169,60 @@ equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first
|
|
1110
1169
|
return _VSTD::equal(__first1, __last1, __first2, __equal_to<__v1, __v2>());
|
1111
1170
|
}
|
1112
1171
|
|
1172
|
+
#if _LIBCPP_STD_VER > 11
|
1173
|
+
template <class _BinaryPredicate, class _InputIterator1, class _InputIterator2>
|
1174
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1175
|
+
bool
|
1176
|
+
__equal(_InputIterator1 __first1, _InputIterator1 __last1,
|
1177
|
+
_InputIterator2 __first2, _InputIterator2 __last2, _BinaryPredicate __pred,
|
1178
|
+
input_iterator_tag, input_iterator_tag )
|
1179
|
+
{
|
1180
|
+
for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2)
|
1181
|
+
if (!__pred(*__first1, *__first2))
|
1182
|
+
return false;
|
1183
|
+
return __first1 == __last1 && __first2 == __last2;
|
1184
|
+
}
|
1185
|
+
|
1186
|
+
template <class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2>
|
1187
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1188
|
+
bool
|
1189
|
+
__equal(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1,
|
1190
|
+
_RandomAccessIterator2 __first2, _RandomAccessIterator2 __last2, _BinaryPredicate __pred,
|
1191
|
+
random_access_iterator_tag, random_access_iterator_tag )
|
1192
|
+
{
|
1193
|
+
if ( _VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2))
|
1194
|
+
return false;
|
1195
|
+
return _VSTD::equal<_RandomAccessIterator1, _RandomAccessIterator2,
|
1196
|
+
typename add_lvalue_reference<_BinaryPredicate>::type>
|
1197
|
+
(__first1, __last1, __first2, __pred );
|
1198
|
+
}
|
1199
|
+
|
1200
|
+
template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate>
|
1201
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1202
|
+
bool
|
1203
|
+
equal(_InputIterator1 __first1, _InputIterator1 __last1,
|
1204
|
+
_InputIterator2 __first2, _InputIterator2 __last2, _BinaryPredicate __pred )
|
1205
|
+
{
|
1206
|
+
return _VSTD::__equal<typename add_lvalue_reference<_BinaryPredicate>::type>
|
1207
|
+
(__first1, __last1, __first2, __last2, __pred,
|
1208
|
+
typename iterator_traits<_InputIterator1>::iterator_category(),
|
1209
|
+
typename iterator_traits<_InputIterator2>::iterator_category());
|
1210
|
+
}
|
1211
|
+
|
1212
|
+
template <class _InputIterator1, class _InputIterator2>
|
1213
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1214
|
+
bool
|
1215
|
+
equal(_InputIterator1 __first1, _InputIterator1 __last1,
|
1216
|
+
_InputIterator2 __first2, _InputIterator2 __last2)
|
1217
|
+
{
|
1218
|
+
typedef typename iterator_traits<_InputIterator1>::value_type __v1;
|
1219
|
+
typedef typename iterator_traits<_InputIterator2>::value_type __v2;
|
1220
|
+
return _VSTD::__equal(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>(),
|
1221
|
+
typename iterator_traits<_InputIterator1>::iterator_category(),
|
1222
|
+
typename iterator_traits<_InputIterator2>::iterator_category());
|
1223
|
+
}
|
1224
|
+
#endif
|
1225
|
+
|
1113
1226
|
// is_permutation
|
1114
1227
|
|
1115
1228
|
template<class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
|
@@ -1169,6 +1282,100 @@ is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
|
|
1169
1282
|
return _VSTD::is_permutation(__first1, __last1, __first2, __equal_to<__v1, __v2>());
|
1170
1283
|
}
|
1171
1284
|
|
1285
|
+
#if _LIBCPP_STD_VER > 11
|
1286
|
+
template<class _BinaryPredicate, class _ForwardIterator1, class _ForwardIterator2>
|
1287
|
+
bool
|
1288
|
+
__is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
|
1289
|
+
_ForwardIterator2 __first2, _ForwardIterator2 __last2,
|
1290
|
+
_BinaryPredicate __pred,
|
1291
|
+
forward_iterator_tag, forward_iterator_tag )
|
1292
|
+
{
|
1293
|
+
// shorten sequences as much as possible by lopping of any equal parts
|
1294
|
+
for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2)
|
1295
|
+
if (!__pred(*__first1, *__first2))
|
1296
|
+
goto __not_done;
|
1297
|
+
return __first1 == __last1 && __first2 == __last2;
|
1298
|
+
__not_done:
|
1299
|
+
// __first1 != __last1 && __first2 != __last2 && *__first1 != *__first2
|
1300
|
+
typedef typename iterator_traits<_ForwardIterator1>::difference_type _D1;
|
1301
|
+
_D1 __l1 = _VSTD::distance(__first1, __last1);
|
1302
|
+
|
1303
|
+
typedef typename iterator_traits<_ForwardIterator2>::difference_type _D2;
|
1304
|
+
_D2 __l2 = _VSTD::distance(__first2, __last2);
|
1305
|
+
if (__l1 != __l2)
|
1306
|
+
return false;
|
1307
|
+
|
1308
|
+
// For each element in [f1, l1) see if there are the same number of
|
1309
|
+
// equal elements in [f2, l2)
|
1310
|
+
for (_ForwardIterator1 __i = __first1; __i != __last1; ++__i)
|
1311
|
+
{
|
1312
|
+
// Have we already counted the number of *__i in [f1, l1)?
|
1313
|
+
for (_ForwardIterator1 __j = __first1; __j != __i; ++__j)
|
1314
|
+
if (__pred(*__j, *__i))
|
1315
|
+
goto __next_iter;
|
1316
|
+
{
|
1317
|
+
// Count number of *__i in [f2, l2)
|
1318
|
+
_D1 __c2 = 0;
|
1319
|
+
for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j)
|
1320
|
+
if (__pred(*__i, *__j))
|
1321
|
+
++__c2;
|
1322
|
+
if (__c2 == 0)
|
1323
|
+
return false;
|
1324
|
+
// Count number of *__i in [__i, l1) (we can start with 1)
|
1325
|
+
_D1 __c1 = 1;
|
1326
|
+
for (_ForwardIterator1 __j = _VSTD::next(__i); __j != __last1; ++__j)
|
1327
|
+
if (__pred(*__i, *__j))
|
1328
|
+
++__c1;
|
1329
|
+
if (__c1 != __c2)
|
1330
|
+
return false;
|
1331
|
+
}
|
1332
|
+
__next_iter:;
|
1333
|
+
}
|
1334
|
+
return true;
|
1335
|
+
}
|
1336
|
+
|
1337
|
+
template<class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2>
|
1338
|
+
bool
|
1339
|
+
__is_permutation(_RandomAccessIterator1 __first1, _RandomAccessIterator2 __last1,
|
1340
|
+
_RandomAccessIterator1 __first2, _RandomAccessIterator2 __last2,
|
1341
|
+
_BinaryPredicate __pred,
|
1342
|
+
random_access_iterator_tag, random_access_iterator_tag )
|
1343
|
+
{
|
1344
|
+
if ( _VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2))
|
1345
|
+
return false;
|
1346
|
+
return _VSTD::is_permutation<_RandomAccessIterator1, _RandomAccessIterator2,
|
1347
|
+
typename add_lvalue_reference<_BinaryPredicate>::type>
|
1348
|
+
(__first1, __last1, __first2, __pred );
|
1349
|
+
}
|
1350
|
+
|
1351
|
+
template<class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
|
1352
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1353
|
+
bool
|
1354
|
+
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
|
1355
|
+
_ForwardIterator2 __first2, _ForwardIterator2 __last2,
|
1356
|
+
_BinaryPredicate __pred )
|
1357
|
+
{
|
1358
|
+
return _VSTD::__is_permutation<typename add_lvalue_reference<_BinaryPredicate>::type>
|
1359
|
+
(__first1, __last1, __first2, __last2, __pred,
|
1360
|
+
typename iterator_traits<_ForwardIterator1>::iterator_category(),
|
1361
|
+
typename iterator_traits<_ForwardIterator2>::iterator_category());
|
1362
|
+
}
|
1363
|
+
|
1364
|
+
template<class _ForwardIterator1, class _ForwardIterator2>
|
1365
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1366
|
+
bool
|
1367
|
+
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
|
1368
|
+
_ForwardIterator2 __first2, _ForwardIterator2 __last2)
|
1369
|
+
{
|
1370
|
+
typedef typename iterator_traits<_ForwardIterator1>::value_type __v1;
|
1371
|
+
typedef typename iterator_traits<_ForwardIterator2>::value_type __v2;
|
1372
|
+
return _VSTD::__is_permutation(__first1, __last1, __first2, __last2,
|
1373
|
+
__equal_to<__v1, __v2>(),
|
1374
|
+
typename iterator_traits<_ForwardIterator1>::iterator_category(),
|
1375
|
+
typename iterator_traits<_ForwardIterator2>::iterator_category());
|
1376
|
+
}
|
1377
|
+
#endif
|
1378
|
+
|
1172
1379
|
// search
|
1173
1380
|
|
1174
1381
|
template <class _BinaryPredicate, class _ForwardIterator1, class _ForwardIterator2>
|
@@ -1398,7 +1605,7 @@ __search_n(_RandomAccessIterator __first, _RandomAccessIterator __last,
|
|
1398
1605
|
// Find first element in sequence that matchs __value_, with a mininum of loop checks
|
1399
1606
|
while (true)
|
1400
1607
|
{
|
1401
|
-
if (__first
|
1608
|
+
if (__first >= __s) // return __last if no element matches __value_
|
1402
1609
|
return __last;
|
1403
1610
|
if (__pred(*__first, __value_))
|
1404
1611
|
break;
|
@@ -1780,17 +1987,23 @@ replace_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator _
|
|
1780
1987
|
template <class _OutputIterator, class _Size, class _Tp>
|
1781
1988
|
inline _LIBCPP_INLINE_VISIBILITY
|
1782
1989
|
_OutputIterator
|
1783
|
-
__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_
|
1990
|
+
__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_)
|
1784
1991
|
{
|
1785
1992
|
for (; __n > 0; ++__first, --__n)
|
1786
1993
|
*__first = __value_;
|
1787
1994
|
return __first;
|
1788
1995
|
}
|
1789
1996
|
|
1790
|
-
template <class
|
1997
|
+
template <class _Tp, class _Size, class _Up>
|
1791
1998
|
inline _LIBCPP_INLINE_VISIBILITY
|
1792
|
-
|
1793
|
-
|
1999
|
+
typename enable_if
|
2000
|
+
<
|
2001
|
+
is_integral<_Tp>::value && sizeof(_Tp) == 1 &&
|
2002
|
+
!is_same<_Tp, bool>::value &&
|
2003
|
+
is_integral<_Up>::value && sizeof(_Up) == 1,
|
2004
|
+
_Tp*
|
2005
|
+
>::type
|
2006
|
+
__fill_n(_Tp* __first, _Size __n,_Up __value_)
|
1794
2007
|
{
|
1795
2008
|
if (__n > 0)
|
1796
2009
|
_VSTD::memset(__first, (unsigned char)__value_, (size_t)(__n));
|
@@ -1802,10 +2015,7 @@ inline _LIBCPP_INLINE_VISIBILITY
|
|
1802
2015
|
_OutputIterator
|
1803
2016
|
fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_)
|
1804
2017
|
{
|
1805
|
-
return _VSTD::__fill_n(__first, __n, __value_
|
1806
|
-
is_pointer<_OutputIterator>::value &&
|
1807
|
-
is_trivially_copy_assignable<_Tp>::value &&
|
1808
|
-
sizeof(_Tp) == 1>());
|
2018
|
+
return _VSTD::__fill_n(__first, __n, __value_);
|
1809
2019
|
}
|
1810
2020
|
|
1811
2021
|
// fill
|
@@ -3778,10 +3988,10 @@ sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last, _Compare __comp)
|
|
3778
3988
|
_VSTD::sort<_Tp*, _Comp_ref>(__first.base(), __last.base(), __comp);
|
3779
3989
|
}
|
3780
3990
|
|
3781
|
-
#ifdef
|
3991
|
+
#ifdef _LIBCPP_MSVC
|
3782
3992
|
#pragma warning( push )
|
3783
3993
|
#pragma warning( disable: 4231)
|
3784
|
-
#endif //
|
3994
|
+
#endif // _LIBCPP_MSVC
|
3785
3995
|
_LIBCPP_EXTERN_TEMPLATE(void __sort<__less<char>&, char*>(char*, char*, __less<char>&))
|
3786
3996
|
_LIBCPP_EXTERN_TEMPLATE(void __sort<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&))
|
3787
3997
|
_LIBCPP_EXTERN_TEMPLATE(void __sort<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&))
|
@@ -3815,9 +4025,9 @@ _LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less<double>&, double
|
|
3815
4025
|
_LIBCPP_EXTERN_TEMPLATE(bool __insertion_sort_incomplete<__less<long double>&, long double*>(long double*, long double*, __less<long double>&))
|
3816
4026
|
|
3817
4027
|
_LIBCPP_EXTERN_TEMPLATE(unsigned __sort5<__less<long double>&, long double*>(long double*, long double*, long double*, long double*, long double*, __less<long double>&))
|
3818
|
-
#ifdef
|
4028
|
+
#ifdef _LIBCPP_MSVC
|
3819
4029
|
#pragma warning( pop )
|
3820
|
-
#endif //
|
4030
|
+
#endif // _LIBCPP_MSVC
|
3821
4031
|
|
3822
4032
|
// lower_bound
|
3823
4033
|
|
@@ -59,14 +59,14 @@ struct array
|
|
59
59
|
|
60
60
|
// element access:
|
61
61
|
reference operator[](size_type n);
|
62
|
-
const_reference operator[](size_type n) const;
|
63
|
-
const_reference at(size_type n) const;
|
62
|
+
const_reference operator[](size_type n) const; // constexpr in C++14
|
63
|
+
const_reference at(size_type n) const; // constexpr in C++14
|
64
64
|
reference at(size_type n);
|
65
65
|
|
66
66
|
reference front();
|
67
|
-
const_reference front() const;
|
67
|
+
const_reference front() const; // constexpr in C++14
|
68
68
|
reference back();
|
69
|
-
const_reference back() const;
|
69
|
+
const_reference back() const; // constexpr in C++14
|
70
70
|
|
71
71
|
T* data() noexcept;
|
72
72
|
const T* data() const noexcept;
|
@@ -92,9 +92,9 @@ template <class T> class tuple_size;
|
|
92
92
|
template <int I, class T> class tuple_element;
|
93
93
|
template <class T, size_t N> struct tuple_size<array<T, N>>;
|
94
94
|
template <int I, class T, size_t N> struct tuple_element<I, array<T, N>>;
|
95
|
-
template <int I, class T, size_t N> T& get(array<T, N>&) noexcept;
|
96
|
-
template <int I, class T, size_t N> const T& get(const array<T, N>&) noexcept;
|
97
|
-
template <int I, class T, size_t N> T&& get(array<T, N>&&) noexcept;
|
95
|
+
template <int I, class T, size_t N> T& get(array<T, N>&) noexcept; // constexpr in C++14
|
96
|
+
template <int I, class T, size_t N> const T& get(const array<T, N>&) noexcept; // constexpr in C++14
|
97
|
+
template <int I, class T, size_t N> T&& get(array<T, N>&&) noexcept; // constexpr in C++14
|
98
98
|
|
99
99
|
} // std
|
100
100
|
|
@@ -181,14 +181,14 @@ struct _LIBCPP_TYPE_VIS array
|
|
181
181
|
|
182
182
|
// element access:
|
183
183
|
_LIBCPP_INLINE_VISIBILITY reference operator[](size_type __n) {return __elems_[__n];}
|
184
|
-
_LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __n) const {return __elems_[__n];}
|
184
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference operator[](size_type __n) const {return __elems_[__n];}
|
185
185
|
reference at(size_type __n);
|
186
|
-
const_reference at(size_type __n) const;
|
186
|
+
_LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference at(size_type __n) const;
|
187
187
|
|
188
188
|
_LIBCPP_INLINE_VISIBILITY reference front() {return __elems_[0];}
|
189
|
-
_LIBCPP_INLINE_VISIBILITY const_reference front() const {return __elems_[0];}
|
189
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference front() const {return __elems_[0];}
|
190
190
|
_LIBCPP_INLINE_VISIBILITY reference back() {return __elems_[_Size > 0 ? _Size-1 : 0];}
|
191
|
-
_LIBCPP_INLINE_VISIBILITY const_reference back() const {return __elems_[_Size > 0 ? _Size-1 : 0];}
|
191
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference back() const {return __elems_[_Size > 0 ? _Size-1 : 0];}
|
192
192
|
|
193
193
|
_LIBCPP_INLINE_VISIBILITY
|
194
194
|
value_type* data() _NOEXCEPT {return __elems_;}
|
@@ -210,6 +210,7 @@ array<_Tp, _Size>::at(size_type __n)
|
|
210
210
|
}
|
211
211
|
|
212
212
|
template <class _Tp, size_t _Size>
|
213
|
+
_LIBCPP_CONSTEXPR_AFTER_CXX11
|
213
214
|
typename array<_Tp, _Size>::const_reference
|
214
215
|
array<_Tp, _Size>::at(size_type __n) const
|
215
216
|
{
|
@@ -306,32 +307,32 @@ public:
|
|
306
307
|
};
|
307
308
|
|
308
309
|
template <size_t _Ip, class _Tp, size_t _Size>
|
309
|
-
_LIBCPP_INLINE_VISIBILITY inline
|
310
|
+
_LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
|
310
311
|
_Tp&
|
311
312
|
get(array<_Tp, _Size>& __a) _NOEXCEPT
|
312
313
|
{
|
313
314
|
static_assert(_Ip < _Size, "Index out of bounds in std::get<> (std::array)");
|
314
|
-
return __a[_Ip];
|
315
|
+
return __a.__elems_[_Ip];
|
315
316
|
}
|
316
317
|
|
317
318
|
template <size_t _Ip, class _Tp, size_t _Size>
|
318
|
-
_LIBCPP_INLINE_VISIBILITY inline
|
319
|
+
_LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
|
319
320
|
const _Tp&
|
320
321
|
get(const array<_Tp, _Size>& __a) _NOEXCEPT
|
321
322
|
{
|
322
323
|
static_assert(_Ip < _Size, "Index out of bounds in std::get<> (const std::array)");
|
323
|
-
return __a[_Ip];
|
324
|
+
return __a.__elems_[_Ip];
|
324
325
|
}
|
325
326
|
|
326
327
|
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
327
328
|
|
328
329
|
template <size_t _Ip, class _Tp, size_t _Size>
|
329
|
-
_LIBCPP_INLINE_VISIBILITY inline
|
330
|
+
_LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
|
330
331
|
_Tp&&
|
331
332
|
get(array<_Tp, _Size>&& __a) _NOEXCEPT
|
332
333
|
{
|
333
334
|
static_assert(_Ip < _Size, "Index out of bounds in std::get<> (std::array &&)");
|
334
|
-
return _VSTD::move(__a[_Ip]);
|
335
|
+
return _VSTD::move(__a.__elems_[_Ip]);
|
335
336
|
}
|
336
337
|
|
337
338
|
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
@@ -622,7 +622,12 @@ struct __atomic_base // false
|
|
622
622
|
{return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __m);}
|
623
623
|
|
624
624
|
_LIBCPP_INLINE_VISIBILITY
|
625
|
-
|
625
|
+
#ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
|
626
|
+
__atomic_base() _NOEXCEPT = default;
|
627
|
+
#else
|
628
|
+
__atomic_base() _NOEXCEPT : __a_() {}
|
629
|
+
#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
|
630
|
+
|
626
631
|
_LIBCPP_INLINE_VISIBILITY
|
627
632
|
_LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __a_(__d) {}
|
628
633
|
#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
|
@@ -645,7 +650,7 @@ struct __atomic_base<_Tp, true>
|
|
645
650
|
{
|
646
651
|
typedef __atomic_base<_Tp, false> __base;
|
647
652
|
_LIBCPP_INLINE_VISIBILITY
|
648
|
-
__atomic_base() _NOEXCEPT
|
653
|
+
__atomic_base() _NOEXCEPT _LIBCPP_DEFAULT
|
649
654
|
_LIBCPP_INLINE_VISIBILITY
|
650
655
|
_LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __base(__d) {}
|
651
656
|
|
@@ -726,7 +731,7 @@ struct atomic
|
|
726
731
|
{
|
727
732
|
typedef __atomic_base<_Tp> __base;
|
728
733
|
_LIBCPP_INLINE_VISIBILITY
|
729
|
-
atomic() _NOEXCEPT
|
734
|
+
atomic() _NOEXCEPT _LIBCPP_DEFAULT
|
730
735
|
_LIBCPP_INLINE_VISIBILITY
|
731
736
|
_LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {}
|
732
737
|
|
@@ -746,7 +751,7 @@ struct atomic<_Tp*>
|
|
746
751
|
{
|
747
752
|
typedef __atomic_base<_Tp*> __base;
|
748
753
|
_LIBCPP_INLINE_VISIBILITY
|
749
|
-
atomic() _NOEXCEPT
|
754
|
+
atomic() _NOEXCEPT _LIBCPP_DEFAULT
|
750
755
|
_LIBCPP_INLINE_VISIBILITY
|
751
756
|
_LIBCPP_CONSTEXPR atomic(_Tp* __d) _NOEXCEPT : __base(__d) {}
|
752
757
|
|
@@ -1367,7 +1372,12 @@ typedef struct atomic_flag
|
|
1367
1372
|
{__c11_atomic_store(&__a_, false, __m);}
|
1368
1373
|
|
1369
1374
|
_LIBCPP_INLINE_VISIBILITY
|
1370
|
-
|
1375
|
+
#ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
|
1376
|
+
atomic_flag() _NOEXCEPT = default;
|
1377
|
+
#else
|
1378
|
+
atomic_flag() _NOEXCEPT : __a_() {}
|
1379
|
+
#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
|
1380
|
+
|
1371
1381
|
_LIBCPP_INLINE_VISIBILITY
|
1372
1382
|
atomic_flag(bool __b) _NOEXCEPT : __a_(__b) {}
|
1373
1383
|
|
@@ -37,9 +37,9 @@ int toupper(int c);
|
|
37
37
|
|
38
38
|
#include <__config>
|
39
39
|
#include <ctype.h>
|
40
|
-
#if defined(
|
40
|
+
#if defined(_LIBCPP_MSVCRT)
|
41
41
|
#include "support/win32/support.h"
|
42
|
-
#endif //
|
42
|
+
#endif // _LIBCPP_MSVCRT
|
43
43
|
|
44
44
|
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
45
45
|
#pragma GCC system_header
|