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
@@ -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
|
-
|
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
|
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
|
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
|
{
|