webruby 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/webruby/config.rb +4 -9
- data/lib/webruby/rake/files.rake +2 -2
- data/modules/emscripten/AUTHORS +9 -1
- data/modules/emscripten/CONTRIBUTING.markdown +5 -0
- data/modules/emscripten/ChangeLog +435 -0
- data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
- data/modules/emscripten/em++ +0 -2
- data/modules/emscripten/emcc +92 -32
- data/modules/emscripten/emlink.py +16 -13
- data/modules/emscripten/emmake +1 -1
- data/modules/emscripten/emrun +918 -0
- data/modules/emscripten/emrun.bat +2 -0
- data/modules/emscripten/emscripten.py +545 -20
- data/modules/emscripten/src/analyzer.js +6 -1
- data/modules/emscripten/src/compiler.js +25 -16
- data/modules/emscripten/src/emrun_postjs.js +20 -0
- data/modules/emscripten/{tests → src}/hello_world.js +0 -0
- data/modules/emscripten/src/intertyper.js +45 -16
- data/modules/emscripten/src/jsifier.js +78 -48
- data/modules/emscripten/src/library.js +381 -96
- data/modules/emscripten/src/library_browser.js +50 -53
- data/modules/emscripten/src/library_egl.js +66 -24
- data/modules/emscripten/src/library_fs.js +122 -90
- data/modules/emscripten/src/library_gl.js +739 -353
- data/modules/emscripten/src/library_glfw.js +9 -3
- data/modules/emscripten/src/library_glut.js +10 -5
- data/modules/emscripten/src/library_idbfs.js +14 -14
- data/modules/emscripten/src/library_memfs.js +65 -41
- data/modules/emscripten/src/library_nodefs.js +61 -9
- data/modules/emscripten/src/library_openal.js +4 -4
- data/modules/emscripten/src/library_path.js +9 -13
- data/modules/emscripten/src/library_sdl.js +301 -64
- data/modules/emscripten/src/library_sockfs.js +7 -5
- data/modules/emscripten/src/modules.js +62 -22
- data/modules/emscripten/src/parseTools.js +135 -102
- data/modules/emscripten/src/postamble.js +3 -4
- data/modules/emscripten/src/preamble.js +49 -29
- data/modules/emscripten/src/proxyClient.js +1 -1
- data/modules/emscripten/src/proxyWorker.js +10 -10
- data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
- data/modules/emscripten/src/runtime.js +32 -8
- data/modules/emscripten/src/settings.js +25 -8
- data/modules/emscripten/src/shell.html +6 -3
- data/modules/emscripten/src/shell.js +13 -11
- data/modules/emscripten/src/simd.js +602 -432
- data/modules/emscripten/src/struct_info.json +22 -2
- data/modules/emscripten/src/utility.js +32 -17
- data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
- data/modules/emscripten/system/include/compat/ctype.h +17 -0
- data/modules/emscripten/system/include/compat/wchar.h +23 -0
- data/modules/emscripten/system/include/compat/wctype.h +23 -0
- data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
- data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
- data/modules/emscripten/system/include/emscripten/vector.h +29 -1
- data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
- data/modules/emscripten/system/include/libcxx/__config +95 -17
- data/modules/emscripten/system/include/libcxx/__debug +25 -4
- data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
- data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
- data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
- data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
- data/modules/emscripten/system/include/libcxx/__locale +21 -19
- data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
- data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
- data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
- data/modules/emscripten/system/include/libcxx/__tree +35 -26
- data/modules/emscripten/system/include/libcxx/__tuple +15 -15
- data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
- data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
- data/modules/emscripten/system/include/libcxx/algorithm +121 -110
- data/modules/emscripten/system/include/libcxx/array +15 -15
- data/modules/emscripten/system/include/libcxx/bitset +4 -4
- data/modules/emscripten/system/include/libcxx/chrono +51 -17
- data/modules/emscripten/system/include/libcxx/cmath +25 -23
- data/modules/emscripten/system/include/libcxx/codecvt +21 -18
- data/modules/emscripten/system/include/libcxx/complex +48 -7
- data/modules/emscripten/system/include/libcxx/cstddef +1 -1
- data/modules/emscripten/system/include/libcxx/cstdio +8 -1
- data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
- data/modules/emscripten/system/include/libcxx/cwchar +1 -1
- data/modules/emscripten/system/include/libcxx/deque +26 -12
- data/modules/emscripten/system/include/libcxx/dynarray +311 -0
- data/modules/emscripten/system/include/libcxx/exception +4 -4
- data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
- data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
- data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
- data/modules/emscripten/system/include/libcxx/forward_list +33 -7
- data/modules/emscripten/system/include/libcxx/fstream +4 -4
- data/modules/emscripten/system/include/libcxx/functional +200 -170
- data/modules/emscripten/system/include/libcxx/future +83 -39
- data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
- data/modules/emscripten/system/include/libcxx/iomanip +147 -0
- data/modules/emscripten/system/include/libcxx/ios +24 -16
- data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
- data/modules/emscripten/system/include/libcxx/istream +13 -8
- data/modules/emscripten/system/include/libcxx/iterator +108 -417
- data/modules/emscripten/system/include/libcxx/limits +8 -4
- data/modules/emscripten/system/include/libcxx/list +28 -8
- data/modules/emscripten/system/include/libcxx/locale +153 -390
- data/modules/emscripten/system/include/libcxx/map +280 -100
- data/modules/emscripten/system/include/libcxx/memory +49 -97
- data/modules/emscripten/system/include/libcxx/mutex +2 -2
- data/modules/emscripten/system/include/libcxx/new +43 -14
- data/modules/emscripten/system/include/libcxx/numeric +2 -2
- data/modules/emscripten/system/include/libcxx/optional +697 -0
- data/modules/emscripten/system/include/libcxx/ostream +17 -8
- data/modules/emscripten/system/include/libcxx/queue +5 -5
- data/modules/emscripten/system/include/libcxx/random +53 -51
- data/modules/emscripten/system/include/libcxx/ratio +11 -11
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +23 -20
- data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
- data/modules/emscripten/system/include/libcxx/set +166 -2
- data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
- data/modules/emscripten/system/include/libcxx/sstream +4 -4
- data/modules/emscripten/system/include/libcxx/stack +3 -3
- data/modules/emscripten/system/include/libcxx/streambuf +5 -5
- data/modules/emscripten/system/include/libcxx/string +372 -324
- data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
- data/modules/emscripten/system/include/libcxx/system_error +14 -8
- data/modules/emscripten/system/include/libcxx/thread +7 -8
- data/modules/emscripten/system/include/libcxx/tuple +29 -88
- data/modules/emscripten/system/include/libcxx/type_traits +253 -209
- data/modules/emscripten/system/include/libcxx/typeindex +3 -3
- data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
- data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
- data/modules/emscripten/system/include/libcxx/utility +20 -20
- data/modules/emscripten/system/include/libcxx/valarray +23 -23
- data/modules/emscripten/system/include/libcxx/vector +114 -91
- data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
- data/modules/emscripten/system/lib/libcextra.symbols +7 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
- data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
- data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
- data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
- data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
- data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
- data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
- data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
- data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
- data/modules/emscripten/system/lib/libcxx/symbols +187 -168
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
- data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
- data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
- data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
- data/modules/emscripten/tools/cache.py +5 -7
- data/modules/emscripten/tools/cache.pyc +0 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
- data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
- data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
- data/modules/emscripten/tools/file_packager.py +93 -50
- data/modules/emscripten/tools/js-optimizer.js +98 -48
- data/modules/emscripten/tools/js_optimizer.py +4 -4
- data/modules/emscripten/tools/js_optimizer.pyc +0 -0
- data/modules/emscripten/tools/jsrun.py +1 -1
- data/modules/emscripten/tools/jsrun.pyc +0 -0
- data/modules/emscripten/tools/response_file.py +6 -0
- data/modules/emscripten/tools/response_file.pyc +0 -0
- data/modules/emscripten/tools/settings_template_readonly.py +2 -0
- data/modules/emscripten/tools/shared.py +88 -34
- data/modules/emscripten/tools/shared.pyc +0 -0
- data/modules/emscripten/tools/split.py +21 -13
- data/modules/mruby/build_config.rb +7 -1
- data/modules/mruby/doc/compile/README.md +5 -9
- data/modules/mruby/include/mrbconf.h +5 -2
- data/modules/mruby/include/mruby/array.h +1 -0
- data/modules/mruby/include/mruby/compile.h +2 -4
- data/modules/mruby/include/mruby/dump.h +7 -16
- data/modules/mruby/include/mruby/hash.h +1 -1
- data/modules/mruby/include/mruby/irep.h +14 -2
- data/modules/mruby/include/mruby/khash.h +8 -7
- data/modules/mruby/include/mruby/string.h +1 -0
- data/modules/mruby/include/mruby/value.h +5 -2
- data/modules/mruby/include/mruby.h +12 -13
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
- data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
- data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
- data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
- data/modules/mruby/mrblib/numeric.rb +99 -33
- data/modules/mruby/src/array.c +11 -4
- data/modules/mruby/src/backtrace.c +2 -2
- data/modules/mruby/src/class.c +49 -30
- data/modules/mruby/src/codegen.c +131 -79
- data/modules/mruby/src/debug.c +1 -1
- data/modules/mruby/src/dump.c +213 -163
- data/modules/mruby/src/error.c +17 -17
- data/modules/mruby/src/error.h +1 -1
- data/modules/mruby/src/etc.c +10 -0
- data/modules/mruby/src/gc.c +35 -17
- data/modules/mruby/src/hash.c +5 -5
- data/modules/mruby/src/kernel.c +36 -14
- data/modules/mruby/src/load.c +238 -296
- data/modules/mruby/src/numeric.c +18 -98
- data/modules/mruby/src/object.c +3 -5
- data/modules/mruby/src/parse.y +63 -56
- data/modules/mruby/src/proc.c +8 -5
- data/modules/mruby/src/re.h +0 -1
- data/modules/mruby/src/state.c +65 -27
- data/modules/mruby/src/string.c +3 -31
- data/modules/mruby/src/symbol.c +3 -3
- data/modules/mruby/src/variable.c +12 -5
- data/modules/mruby/src/vm.c +90 -72
- data/modules/mruby/tasks/mruby_build.rake +10 -1
- data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
- data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
- data/modules/mruby/test/driver.c +3 -3
- data/modules/mruby/test/t/array.rb +5 -5
- data/modules/mruby/test/t/class.rb +14 -1
- data/modules/mruby/test/t/kernel.rb +4 -0
- data/modules/mruby/test/t/module.rb +4 -4
- data/modules/mruby/test/t/nameerror.rb +1 -1
- data/modules/mruby/tools/mrbc/mrbc.c +23 -17
- data/modules/mruby/travis_config.rb +10 -1
- metadata +28 -5
- data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
@@ -77,7 +77,12 @@ public:
|
|
77
77
|
map(map&& m, const allocator_type& a);
|
78
78
|
map(initializer_list<value_type> il, const key_compare& comp = key_compare());
|
79
79
|
map(initializer_list<value_type> il, const key_compare& comp, const allocator_type& a);
|
80
|
-
|
80
|
+
template <class InputIterator>
|
81
|
+
map(InputIterator first, InputIterator last, const allocator_type& a)
|
82
|
+
: map(first, last, Compare(), a) {} // C++14
|
83
|
+
map(initializer_list<value_type> il, const allocator_type& a)
|
84
|
+
: map(il, Compare(), a) {} // C++14
|
85
|
+
~map();
|
81
86
|
|
82
87
|
map& operator=(const map& m);
|
83
88
|
map& operator=(map&& m)
|
@@ -149,13 +154,34 @@ public:
|
|
149
154
|
// map operations:
|
150
155
|
iterator find(const key_type& k);
|
151
156
|
const_iterator find(const key_type& k) const;
|
157
|
+
template<typename K>
|
158
|
+
iterator find(const K& x); // C++14
|
159
|
+
template<typename K>
|
160
|
+
const_iterator find(const K& x) const; // C++14
|
161
|
+
template<typename K>
|
162
|
+
size_type count(const K& x) const;
|
163
|
+
|
152
164
|
size_type count(const key_type& k) const;
|
153
165
|
iterator lower_bound(const key_type& k);
|
154
166
|
const_iterator lower_bound(const key_type& k) const;
|
167
|
+
template<typename K>
|
168
|
+
iterator lower_bound(const K& x); // C++14
|
169
|
+
template<typename K>
|
170
|
+
const_iterator lower_bound(const K& x) const; // C++14
|
171
|
+
|
155
172
|
iterator upper_bound(const key_type& k);
|
156
173
|
const_iterator upper_bound(const key_type& k) const;
|
174
|
+
template<typename K>
|
175
|
+
iterator upper_bound(const K& x); // C++14
|
176
|
+
template<typename K>
|
177
|
+
const_iterator upper_bound(const K& x) const; // C++14
|
178
|
+
|
157
179
|
pair<iterator,iterator> equal_range(const key_type& k);
|
158
180
|
pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
|
181
|
+
template<typename K>
|
182
|
+
pair<iterator,iterator> equal_range(const K& x); // C++14
|
183
|
+
template<typename K>
|
184
|
+
pair<const_iterator,const_iterator> equal_range(const K& x) const; // C++14
|
159
185
|
};
|
160
186
|
|
161
187
|
template <class Key, class T, class Compare, class Allocator>
|
@@ -252,6 +278,11 @@ public:
|
|
252
278
|
multimap(initializer_list<value_type> il, const key_compare& comp = key_compare());
|
253
279
|
multimap(initializer_list<value_type> il, const key_compare& comp,
|
254
280
|
const allocator_type& a);
|
281
|
+
template <class InputIterator>
|
282
|
+
multimap(InputIterator first, InputIterator last, const allocator_type& a)
|
283
|
+
: multimap(first, last, Compare(), a) {} // C++14
|
284
|
+
multimap(initializer_list<value_type> il, const allocator_type& a)
|
285
|
+
: multimap(il, Compare(), a) {} // C++14
|
255
286
|
~multimap();
|
256
287
|
|
257
288
|
multimap& operator=(const multimap& m);
|
@@ -317,13 +348,34 @@ public:
|
|
317
348
|
// map operations:
|
318
349
|
iterator find(const key_type& k);
|
319
350
|
const_iterator find(const key_type& k) const;
|
351
|
+
template<typename K>
|
352
|
+
iterator find(const K& x); // C++14
|
353
|
+
template<typename K>
|
354
|
+
const_iterator find(const K& x) const; // C++14
|
355
|
+
template<typename K>
|
356
|
+
size_type count(const K& x) const;
|
357
|
+
|
320
358
|
size_type count(const key_type& k) const;
|
321
359
|
iterator lower_bound(const key_type& k);
|
322
360
|
const_iterator lower_bound(const key_type& k) const;
|
361
|
+
template<typename K>
|
362
|
+
iterator lower_bound(const K& x); // C++14
|
363
|
+
template<typename K>
|
364
|
+
const_iterator lower_bound(const K& x) const; // C++14
|
365
|
+
|
323
366
|
iterator upper_bound(const key_type& k);
|
324
367
|
const_iterator upper_bound(const key_type& k) const;
|
368
|
+
template<typename K>
|
369
|
+
iterator upper_bound(const K& x); // C++14
|
370
|
+
template<typename K>
|
371
|
+
const_iterator upper_bound(const K& x) const; // C++14
|
372
|
+
|
325
373
|
pair<iterator,iterator> equal_range(const key_type& k);
|
326
374
|
pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
|
375
|
+
template<typename K>
|
376
|
+
pair<iterator,iterator> equal_range(const K& x); // C++14
|
377
|
+
template<typename K>
|
378
|
+
pair<const_iterator,const_iterator> equal_range(const K& x) const; // C++14
|
327
379
|
};
|
328
380
|
|
329
381
|
template <class Key, class T, class Compare, class Allocator>
|
@@ -409,6 +461,20 @@ public:
|
|
409
461
|
_LIBCPP_INLINE_VISIBILITY
|
410
462
|
bool operator()(const _Key& __x, const _CP& __y) const
|
411
463
|
{return static_cast<const _Compare&>(*this)(__x, __y.__cc.first);}
|
464
|
+
|
465
|
+
#if _LIBCPP_STD_VER > 11
|
466
|
+
template <typename _K2>
|
467
|
+
_LIBCPP_INLINE_VISIBILITY
|
468
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
|
469
|
+
operator () ( const _K2& __x, const _CP& __y ) const
|
470
|
+
{return static_cast<const _Compare&>(*this) (__x, __y.__cc.first);}
|
471
|
+
|
472
|
+
template <typename _K2>
|
473
|
+
_LIBCPP_INLINE_VISIBILITY
|
474
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
|
475
|
+
operator () (const _CP& __x, const _K2& __y) const
|
476
|
+
{return static_cast<const _Compare&>(*this) (__x.__cc.first, __y);}
|
477
|
+
#endif
|
412
478
|
};
|
413
479
|
|
414
480
|
template <class _Key, class _CP, class _Compare>
|
@@ -437,6 +503,20 @@ public:
|
|
437
503
|
_LIBCPP_INLINE_VISIBILITY
|
438
504
|
bool operator()(const _Key& __x, const _CP& __y) const
|
439
505
|
{return comp(__x, __y.__cc.first);}
|
506
|
+
|
507
|
+
#if _LIBCPP_STD_VER > 11
|
508
|
+
template <typename _K2>
|
509
|
+
_LIBCPP_INLINE_VISIBILITY
|
510
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
|
511
|
+
operator () ( const _K2& __x, const _CP& __y ) const
|
512
|
+
{return comp (__x, __y.__cc.first);}
|
513
|
+
|
514
|
+
template <typename _K2>
|
515
|
+
_LIBCPP_INLINE_VISIBILITY
|
516
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type
|
517
|
+
operator () (const _CP& __x, const _K2& __y) const
|
518
|
+
{return comp (__x.__cc.first, __y);}
|
519
|
+
#endif
|
440
520
|
};
|
441
521
|
|
442
522
|
template <class _Allocator>
|
@@ -495,8 +575,77 @@ template <class _Key, class _Tp, class _Compare, class _Allocator>
|
|
495
575
|
class multimap;
|
496
576
|
template <class _TreeIterator> class __map_const_iterator;
|
497
577
|
|
578
|
+
#if __cplusplus >= 201103L
|
579
|
+
|
580
|
+
template <class _Key, class _Tp>
|
581
|
+
union __value_type
|
582
|
+
{
|
583
|
+
typedef _Key key_type;
|
584
|
+
typedef _Tp mapped_type;
|
585
|
+
typedef pair<const key_type, mapped_type> value_type;
|
586
|
+
typedef pair<key_type, mapped_type> __nc_value_type;
|
587
|
+
|
588
|
+
value_type __cc;
|
589
|
+
__nc_value_type __nc;
|
590
|
+
|
591
|
+
template <class ..._Args>
|
592
|
+
_LIBCPP_INLINE_VISIBILITY
|
593
|
+
__value_type(_Args&& ...__args)
|
594
|
+
: __cc(std::forward<_Args>(__args)...) {}
|
595
|
+
|
596
|
+
_LIBCPP_INLINE_VISIBILITY
|
597
|
+
__value_type(const __value_type& __v)
|
598
|
+
: __cc(__v.__cc) {}
|
599
|
+
|
600
|
+
_LIBCPP_INLINE_VISIBILITY
|
601
|
+
__value_type(__value_type& __v)
|
602
|
+
: __cc(__v.__cc) {}
|
603
|
+
|
604
|
+
_LIBCPP_INLINE_VISIBILITY
|
605
|
+
__value_type(__value_type&& __v)
|
606
|
+
: __nc(std::move(__v.__nc)) {}
|
607
|
+
|
608
|
+
_LIBCPP_INLINE_VISIBILITY
|
609
|
+
__value_type& operator=(const __value_type& __v)
|
610
|
+
{__nc = __v.__cc; return *this;}
|
611
|
+
|
612
|
+
_LIBCPP_INLINE_VISIBILITY
|
613
|
+
__value_type& operator=(__value_type&& __v)
|
614
|
+
{__nc = std::move(__v.__nc); return *this;}
|
615
|
+
|
616
|
+
_LIBCPP_INLINE_VISIBILITY
|
617
|
+
~__value_type() {__cc.~value_type();}
|
618
|
+
};
|
619
|
+
|
620
|
+
#else
|
621
|
+
|
622
|
+
template <class _Key, class _Tp>
|
623
|
+
struct __value_type
|
624
|
+
{
|
625
|
+
typedef _Key key_type;
|
626
|
+
typedef _Tp mapped_type;
|
627
|
+
typedef pair<const key_type, mapped_type> value_type;
|
628
|
+
|
629
|
+
value_type __cc;
|
630
|
+
|
631
|
+
_LIBCPP_INLINE_VISIBILITY
|
632
|
+
__value_type() {}
|
633
|
+
|
634
|
+
template <class _A0>
|
635
|
+
_LIBCPP_INLINE_VISIBILITY
|
636
|
+
__value_type(const _A0& __a0)
|
637
|
+
: __cc(__a0) {}
|
638
|
+
|
639
|
+
template <class _A0, class _A1>
|
640
|
+
_LIBCPP_INLINE_VISIBILITY
|
641
|
+
__value_type(const _A0& __a0, const _A1& __a1)
|
642
|
+
: __cc(__a0, __a1) {}
|
643
|
+
};
|
644
|
+
|
645
|
+
#endif
|
646
|
+
|
498
647
|
template <class _TreeIterator>
|
499
|
-
class
|
648
|
+
class _LIBCPP_TYPE_VIS_ONLY __map_iterator
|
500
649
|
{
|
501
650
|
_TreeIterator __i_;
|
502
651
|
|
@@ -555,13 +704,13 @@ public:
|
|
555
704
|
bool operator!=(const __map_iterator& __x, const __map_iterator& __y)
|
556
705
|
{return __x.__i_ != __y.__i_;}
|
557
706
|
|
558
|
-
template <class, class, class, class> friend class
|
559
|
-
template <class, class, class, class> friend class
|
560
|
-
template <class> friend class
|
707
|
+
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
|
708
|
+
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
|
709
|
+
template <class> friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator;
|
561
710
|
};
|
562
711
|
|
563
712
|
template <class _TreeIterator>
|
564
|
-
class
|
713
|
+
class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator
|
565
714
|
{
|
566
715
|
_TreeIterator __i_;
|
567
716
|
|
@@ -624,14 +773,14 @@ public:
|
|
624
773
|
bool operator!=(const __map_const_iterator& __x, const __map_const_iterator& __y)
|
625
774
|
{return __x.__i_ != __y.__i_;}
|
626
775
|
|
627
|
-
template <class, class, class, class> friend class
|
628
|
-
template <class, class, class, class> friend class
|
629
|
-
template <class, class, class> friend class
|
776
|
+
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
|
777
|
+
template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
|
778
|
+
template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator;
|
630
779
|
};
|
631
780
|
|
632
781
|
template <class _Key, class _Tp, class _Compare = less<_Key>,
|
633
782
|
class _Allocator = allocator<pair<const _Key, _Tp> > >
|
634
|
-
class
|
783
|
+
class _LIBCPP_TYPE_VIS_ONLY map
|
635
784
|
{
|
636
785
|
public:
|
637
786
|
// types:
|
@@ -644,7 +793,7 @@ public:
|
|
644
793
|
typedef value_type& reference;
|
645
794
|
typedef const value_type& const_reference;
|
646
795
|
|
647
|
-
class
|
796
|
+
class _LIBCPP_TYPE_VIS_ONLY value_compare
|
648
797
|
: public binary_function<value_type, value_type, bool>
|
649
798
|
{
|
650
799
|
friend class map;
|
@@ -660,49 +809,7 @@ public:
|
|
660
809
|
|
661
810
|
private:
|
662
811
|
|
663
|
-
|
664
|
-
union __value_type
|
665
|
-
{
|
666
|
-
typedef typename map::value_type value_type;
|
667
|
-
typedef typename map::__nc_value_type __nc_value_type;
|
668
|
-
value_type __cc;
|
669
|
-
__nc_value_type __nc;
|
670
|
-
|
671
|
-
template <class ..._Args>
|
672
|
-
__value_type(_Args&& ...__args)
|
673
|
-
: __cc(std::forward<_Args>(__args)...) {}
|
674
|
-
|
675
|
-
__value_type(const __value_type& __v)
|
676
|
-
: __cc(std::move(__v.__cc)) {}
|
677
|
-
|
678
|
-
__value_type(__value_type&& __v)
|
679
|
-
: __nc(std::move(__v.__nc)) {}
|
680
|
-
|
681
|
-
__value_type& operator=(const __value_type& __v)
|
682
|
-
{__nc = __v.__cc; return *this;}
|
683
|
-
|
684
|
-
__value_type& operator=(__value_type&& __v)
|
685
|
-
{__nc = std::move(__v.__nc); return *this;}
|
686
|
-
|
687
|
-
~__value_type() {__cc.~value_type();}
|
688
|
-
};
|
689
|
-
#else
|
690
|
-
struct __value_type
|
691
|
-
{
|
692
|
-
typedef typename map::value_type value_type;
|
693
|
-
value_type __cc;
|
694
|
-
|
695
|
-
__value_type() {}
|
696
|
-
|
697
|
-
template <class _A0>
|
698
|
-
__value_type(const _A0& __a0)
|
699
|
-
: __cc(__a0) {}
|
700
|
-
|
701
|
-
template <class _A0, class _A1>
|
702
|
-
__value_type(const _A0& __a0, const _A1& __a1)
|
703
|
-
: __cc(__a0, __a1) {}
|
704
|
-
};
|
705
|
-
#endif
|
812
|
+
typedef _VSTD::__value_type<key_type, mapped_type> __value_type;
|
706
813
|
typedef __map_value_compare<key_type, __value_type, key_compare> __vc;
|
707
814
|
typedef typename allocator_traits<allocator_type>::template
|
708
815
|
#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
@@ -757,6 +864,13 @@ public:
|
|
757
864
|
insert(__f, __l);
|
758
865
|
}
|
759
866
|
|
867
|
+
#if _LIBCPP_STD_VER > 11
|
868
|
+
template <class _InputIterator>
|
869
|
+
_LIBCPP_INLINE_VISIBILITY
|
870
|
+
map(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
|
871
|
+
: map(__f, __l, key_compare(), __a) {}
|
872
|
+
#endif
|
873
|
+
|
760
874
|
_LIBCPP_INLINE_VISIBILITY
|
761
875
|
map(const map& __m)
|
762
876
|
: __tree_(__m.__tree_)
|
@@ -815,6 +929,12 @@ public:
|
|
815
929
|
insert(__il.begin(), __il.end());
|
816
930
|
}
|
817
931
|
|
932
|
+
#if _LIBCPP_STD_VER > 11
|
933
|
+
_LIBCPP_INLINE_VISIBILITY
|
934
|
+
map(initializer_list<value_type> __il, const allocator_type& __a)
|
935
|
+
: map(__il, key_compare(), __a) {}
|
936
|
+
#endif
|
937
|
+
|
818
938
|
_LIBCPP_INLINE_VISIBILITY
|
819
939
|
map& operator=(initializer_list<value_type> __il)
|
820
940
|
{
|
@@ -961,6 +1081,17 @@ public:
|
|
961
1081
|
iterator find(const key_type& __k) {return __tree_.find(__k);}
|
962
1082
|
_LIBCPP_INLINE_VISIBILITY
|
963
1083
|
const_iterator find(const key_type& __k) const {return __tree_.find(__k);}
|
1084
|
+
#if _LIBCPP_STD_VER > 11
|
1085
|
+
template <typename _K2>
|
1086
|
+
_LIBCPP_INLINE_VISIBILITY
|
1087
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
|
1088
|
+
find(const _K2& __k) {return __tree_.find(__k);}
|
1089
|
+
template <typename _K2>
|
1090
|
+
_LIBCPP_INLINE_VISIBILITY
|
1091
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
|
1092
|
+
find(const _K2& __k) const {return __tree_.find(__k);}
|
1093
|
+
#endif
|
1094
|
+
|
964
1095
|
_LIBCPP_INLINE_VISIBILITY
|
965
1096
|
size_type count(const key_type& __k) const
|
966
1097
|
{return __tree_.__count_unique(__k);}
|
@@ -970,18 +1101,51 @@ public:
|
|
970
1101
|
_LIBCPP_INLINE_VISIBILITY
|
971
1102
|
const_iterator lower_bound(const key_type& __k) const
|
972
1103
|
{return __tree_.lower_bound(__k);}
|
1104
|
+
#if _LIBCPP_STD_VER > 11
|
1105
|
+
template <typename _K2>
|
1106
|
+
_LIBCPP_INLINE_VISIBILITY
|
1107
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
|
1108
|
+
lower_bound(const _K2& __k) {return __tree_.lower_bound(__k);}
|
1109
|
+
|
1110
|
+
template <typename _K2>
|
1111
|
+
_LIBCPP_INLINE_VISIBILITY
|
1112
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
|
1113
|
+
lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);}
|
1114
|
+
#endif
|
1115
|
+
|
973
1116
|
_LIBCPP_INLINE_VISIBILITY
|
974
1117
|
iterator upper_bound(const key_type& __k)
|
975
1118
|
{return __tree_.upper_bound(__k);}
|
976
1119
|
_LIBCPP_INLINE_VISIBILITY
|
977
1120
|
const_iterator upper_bound(const key_type& __k) const
|
978
1121
|
{return __tree_.upper_bound(__k);}
|
1122
|
+
#if _LIBCPP_STD_VER > 11
|
1123
|
+
template <typename _K2>
|
1124
|
+
_LIBCPP_INLINE_VISIBILITY
|
1125
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
|
1126
|
+
upper_bound(const _K2& __k) {return __tree_.upper_bound(__k);}
|
1127
|
+
template <typename _K2>
|
1128
|
+
_LIBCPP_INLINE_VISIBILITY
|
1129
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
|
1130
|
+
upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);}
|
1131
|
+
#endif
|
1132
|
+
|
979
1133
|
_LIBCPP_INLINE_VISIBILITY
|
980
1134
|
pair<iterator,iterator> equal_range(const key_type& __k)
|
981
1135
|
{return __tree_.__equal_range_unique(__k);}
|
982
1136
|
_LIBCPP_INLINE_VISIBILITY
|
983
1137
|
pair<const_iterator,const_iterator> equal_range(const key_type& __k) const
|
984
1138
|
{return __tree_.__equal_range_unique(__k);}
|
1139
|
+
#if _LIBCPP_STD_VER > 11
|
1140
|
+
template <typename _K2>
|
1141
|
+
_LIBCPP_INLINE_VISIBILITY
|
1142
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,pair<iterator,iterator>>::type
|
1143
|
+
equal_range(const _K2& __k) {return __tree_.__equal_range_unique(__k);}
|
1144
|
+
template <typename _K2>
|
1145
|
+
_LIBCPP_INLINE_VISIBILITY
|
1146
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,pair<const_iterator,const_iterator>>::type
|
1147
|
+
equal_range(const _K2& __k) const {return __tree_.__equal_range_unique(__k);}
|
1148
|
+
#endif
|
985
1149
|
|
986
1150
|
private:
|
987
1151
|
typedef typename __base::__node __node;
|
@@ -1152,7 +1316,7 @@ map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(key_type&& __k)
|
|
1152
1316
|
__h.get_deleter().__first_constructed = true;
|
1153
1317
|
__node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.second));
|
1154
1318
|
__h.get_deleter().__second_constructed = true;
|
1155
|
-
return
|
1319
|
+
return __h;
|
1156
1320
|
}
|
1157
1321
|
|
1158
1322
|
#ifndef _LIBCPP_HAS_NO_VARIADICS
|
@@ -1186,7 +1350,7 @@ map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(const key_type&
|
|
1186
1350
|
__h.get_deleter().__first_constructed = true;
|
1187
1351
|
__node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.second));
|
1188
1352
|
__h.get_deleter().__second_constructed = true;
|
1189
|
-
return _VSTD::move(__h);
|
1353
|
+
return _VSTD::move(__h); // explicitly moved for C++03
|
1190
1354
|
}
|
1191
1355
|
|
1192
1356
|
template <class _Key, class _Tp, class _Compare, class _Allocator>
|
@@ -1346,7 +1510,7 @@ swap(map<_Key, _Tp, _Compare, _Allocator>& __x,
|
|
1346
1510
|
|
1347
1511
|
template <class _Key, class _Tp, class _Compare = less<_Key>,
|
1348
1512
|
class _Allocator = allocator<pair<const _Key, _Tp> > >
|
1349
|
-
class
|
1513
|
+
class _LIBCPP_TYPE_VIS_ONLY multimap
|
1350
1514
|
{
|
1351
1515
|
public:
|
1352
1516
|
// types:
|
@@ -1359,7 +1523,7 @@ public:
|
|
1359
1523
|
typedef value_type& reference;
|
1360
1524
|
typedef const value_type& const_reference;
|
1361
1525
|
|
1362
|
-
class
|
1526
|
+
class _LIBCPP_TYPE_VIS_ONLY value_compare
|
1363
1527
|
: public binary_function<value_type, value_type, bool>
|
1364
1528
|
{
|
1365
1529
|
friend class multimap;
|
@@ -1375,49 +1539,8 @@ public:
|
|
1375
1539
|
};
|
1376
1540
|
|
1377
1541
|
private:
|
1378
|
-
#if __cplusplus >= 201103L
|
1379
|
-
union __value_type
|
1380
|
-
{
|
1381
|
-
typedef typename multimap::value_type value_type;
|
1382
|
-
typedef typename multimap::__nc_value_type __nc_value_type;
|
1383
|
-
value_type __cc;
|
1384
|
-
__nc_value_type __nc;
|
1385
|
-
|
1386
|
-
template <class ..._Args>
|
1387
|
-
__value_type(_Args&& ...__args)
|
1388
|
-
: __cc(std::forward<_Args>(__args)...) {}
|
1389
1542
|
|
1390
|
-
|
1391
|
-
: __cc(std::move(__v.__cc)) {}
|
1392
|
-
|
1393
|
-
__value_type(__value_type&& __v)
|
1394
|
-
: __nc(std::move(__v.__nc)) {}
|
1395
|
-
|
1396
|
-
__value_type& operator=(const __value_type& __v)
|
1397
|
-
{__nc = __v.__cc; return *this;}
|
1398
|
-
|
1399
|
-
__value_type& operator=(__value_type&& __v)
|
1400
|
-
{__nc = std::move(__v.__nc); return *this;}
|
1401
|
-
|
1402
|
-
~__value_type() {__cc.~value_type();}
|
1403
|
-
};
|
1404
|
-
#else
|
1405
|
-
struct __value_type
|
1406
|
-
{
|
1407
|
-
typedef typename multimap::value_type value_type;
|
1408
|
-
value_type __cc;
|
1409
|
-
|
1410
|
-
__value_type() {}
|
1411
|
-
|
1412
|
-
template <class _A0>
|
1413
|
-
__value_type(const _A0& __a0)
|
1414
|
-
: __cc(__a0) {}
|
1415
|
-
|
1416
|
-
template <class _A0, class _A1>
|
1417
|
-
__value_type(const _A0& __a0, const _A1& __a1)
|
1418
|
-
: __cc(__a0, __a1) {}
|
1419
|
-
};
|
1420
|
-
#endif
|
1543
|
+
typedef _VSTD::__value_type<key_type, mapped_type> __value_type;
|
1421
1544
|
typedef __map_value_compare<key_type, __value_type, key_compare> __vc;
|
1422
1545
|
typedef typename allocator_traits<allocator_type>::template
|
1423
1546
|
#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
@@ -1472,6 +1595,13 @@ public:
|
|
1472
1595
|
insert(__f, __l);
|
1473
1596
|
}
|
1474
1597
|
|
1598
|
+
#if _LIBCPP_STD_VER > 11
|
1599
|
+
template <class _InputIterator>
|
1600
|
+
_LIBCPP_INLINE_VISIBILITY
|
1601
|
+
multimap(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
|
1602
|
+
: multimap(__f, __l, key_compare(), __a) {}
|
1603
|
+
#endif
|
1604
|
+
|
1475
1605
|
_LIBCPP_INLINE_VISIBILITY
|
1476
1606
|
multimap(const multimap& __m)
|
1477
1607
|
: __tree_(__m.__tree_.value_comp(),
|
@@ -1531,6 +1661,12 @@ public:
|
|
1531
1661
|
insert(__il.begin(), __il.end());
|
1532
1662
|
}
|
1533
1663
|
|
1664
|
+
#if _LIBCPP_STD_VER > 11
|
1665
|
+
_LIBCPP_INLINE_VISIBILITY
|
1666
|
+
multimap(initializer_list<value_type> __il, const allocator_type& __a)
|
1667
|
+
: multimap(__il, key_compare(), __a) {}
|
1668
|
+
#endif
|
1669
|
+
|
1534
1670
|
_LIBCPP_INLINE_VISIBILITY
|
1535
1671
|
multimap& operator=(initializer_list<value_type> __il)
|
1536
1672
|
{
|
@@ -1666,6 +1802,17 @@ public:
|
|
1666
1802
|
iterator find(const key_type& __k) {return __tree_.find(__k);}
|
1667
1803
|
_LIBCPP_INLINE_VISIBILITY
|
1668
1804
|
const_iterator find(const key_type& __k) const {return __tree_.find(__k);}
|
1805
|
+
#if _LIBCPP_STD_VER > 11
|
1806
|
+
template <typename _K2>
|
1807
|
+
_LIBCPP_INLINE_VISIBILITY
|
1808
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
|
1809
|
+
find(const _K2& __k) {return __tree_.find(__k);}
|
1810
|
+
template <typename _K2>
|
1811
|
+
_LIBCPP_INLINE_VISIBILITY
|
1812
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
|
1813
|
+
find(const _K2& __k) const {return __tree_.find(__k);}
|
1814
|
+
#endif
|
1815
|
+
|
1669
1816
|
_LIBCPP_INLINE_VISIBILITY
|
1670
1817
|
size_type count(const key_type& __k) const
|
1671
1818
|
{return __tree_.__count_multi(__k);}
|
@@ -1675,18 +1822,51 @@ public:
|
|
1675
1822
|
_LIBCPP_INLINE_VISIBILITY
|
1676
1823
|
const_iterator lower_bound(const key_type& __k) const
|
1677
1824
|
{return __tree_.lower_bound(__k);}
|
1825
|
+
#if _LIBCPP_STD_VER > 11
|
1826
|
+
template <typename _K2>
|
1827
|
+
_LIBCPP_INLINE_VISIBILITY
|
1828
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
|
1829
|
+
lower_bound(const _K2& __k) {return __tree_.lower_bound(__k);}
|
1830
|
+
|
1831
|
+
template <typename _K2>
|
1832
|
+
_LIBCPP_INLINE_VISIBILITY
|
1833
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
|
1834
|
+
lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);}
|
1835
|
+
#endif
|
1836
|
+
|
1678
1837
|
_LIBCPP_INLINE_VISIBILITY
|
1679
1838
|
iterator upper_bound(const key_type& __k)
|
1680
1839
|
{return __tree_.upper_bound(__k);}
|
1681
1840
|
_LIBCPP_INLINE_VISIBILITY
|
1682
1841
|
const_iterator upper_bound(const key_type& __k) const
|
1683
1842
|
{return __tree_.upper_bound(__k);}
|
1843
|
+
#if _LIBCPP_STD_VER > 11
|
1844
|
+
template <typename _K2>
|
1845
|
+
_LIBCPP_INLINE_VISIBILITY
|
1846
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
|
1847
|
+
upper_bound(const _K2& __k) {return __tree_.upper_bound(__k);}
|
1848
|
+
template <typename _K2>
|
1849
|
+
_LIBCPP_INLINE_VISIBILITY
|
1850
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
|
1851
|
+
upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);}
|
1852
|
+
#endif
|
1853
|
+
|
1684
1854
|
_LIBCPP_INLINE_VISIBILITY
|
1685
1855
|
pair<iterator,iterator> equal_range(const key_type& __k)
|
1686
1856
|
{return __tree_.__equal_range_multi(__k);}
|
1687
1857
|
_LIBCPP_INLINE_VISIBILITY
|
1688
1858
|
pair<const_iterator,const_iterator> equal_range(const key_type& __k) const
|
1689
1859
|
{return __tree_.__equal_range_multi(__k);}
|
1860
|
+
#if _LIBCPP_STD_VER > 11
|
1861
|
+
template <typename _K2>
|
1862
|
+
_LIBCPP_INLINE_VISIBILITY
|
1863
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,pair<iterator,iterator>>::type
|
1864
|
+
equal_range(const _K2& __k) {return __tree_.__equal_range_multi(__k);}
|
1865
|
+
template <typename _K2>
|
1866
|
+
_LIBCPP_INLINE_VISIBILITY
|
1867
|
+
typename enable_if<__is_transparent<_Compare, _K2>::value,pair<const_iterator,const_iterator>>::type
|
1868
|
+
equal_range(const _K2& __k) const {return __tree_.__equal_range_multi(__k);}
|
1869
|
+
#endif
|
1690
1870
|
|
1691
1871
|
private:
|
1692
1872
|
typedef typename __base::__node __node;
|