webruby 0.2.2 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|