passenger 5.1.4 → 5.1.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.editorconfig +9 -0
- data/CHANGELOG +9 -0
- data/build/cxx_tests.rb +11 -1
- data/build/documentation.rb +0 -32
- data/build/support/cxx_dependency_map.rb +602 -2
- data/build/test_basics.rb +3 -3
- data/dev/boost-patches/0001-Patch-boost-thread-so-that-oxt-thread-can-use-it.patch +48 -0
- data/dev/boost-patches/0002-Make-boost-thread_interrupted-derive-from-oxt-tracab.patch +33 -0
- data/dev/boost-patches/0003-Disable-a-Clang-pragma-to-prevent-warnings-on-OS-X.patch +25 -0
- data/dev/ci/README.md +121 -0
- data/dev/ci/lib/functions.sh +129 -0
- data/dev/ci/lib/set-container-envvars.sh +46 -0
- data/dev/ci/lib/setup-container.sh +43 -0
- data/dev/ci/run-tests-natively +24 -0
- data/dev/ci/run-tests-with-docker +42 -0
- data/dev/ci/scripts/debug-console-wrapper.sh +27 -0
- data/dev/ci/scripts/docker-entrypoint-stage2.sh +17 -0
- data/dev/ci/scripts/docker-entrypoint.sh +17 -0
- data/dev/ci/scripts/inituidgid +17 -0
- data/dev/ci/scripts/run-tests-natively-stage2.sh +17 -0
- data/dev/ci/scripts/setup-host-natively.sh +11 -0
- data/dev/ci/setup-host +50 -0
- data/dev/ci/tests/apache2/run +6 -0
- data/dev/ci/tests/apache2/setup +4 -0
- data/dev/ci/tests/cxx/run +9 -0
- data/dev/ci/tests/cxx/setup +4 -0
- data/dev/ci/tests/nginx-dynamic/run +20 -0
- data/dev/ci/tests/nginx-dynamic/setup +4 -0
- data/dev/ci/tests/nginx/run +5 -0
- data/dev/ci/tests/nginx/setup +4 -0
- data/dev/ci/tests/nodejs/run +4 -0
- data/dev/ci/tests/nodejs/setup +4 -0
- data/dev/ci/tests/ruby/run +4 -0
- data/dev/ci/tests/ruby/setup +4 -0
- data/dev/ci/tests/source-packaging/run +4 -0
- data/dev/ci/tests/source-packaging/setup +4 -0
- data/dev/ci/tests/standalone/run +4 -0
- data/dev/ci/tests/standalone/setup +4 -0
- data/dev/copy_boost_headers +8 -2
- data/src/agent/Core/ApiServer.h +11 -5
- data/src/agent/Core/Controller.h +12 -46
- data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
- data/src/agent/Core/Controller/Config.h +369 -0
- data/src/agent/Core/Controller/ForwardResponse.cpp +4 -4
- data/src/agent/Core/Controller/Hooks.cpp +15 -3
- data/src/agent/Core/Controller/Implementation.cpp +1 -1
- data/src/agent/Core/Controller/InitRequest.cpp +28 -39
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +25 -60
- data/src/agent/Core/Controller/InternalUtils.cpp +0 -16
- data/src/agent/Core/Controller/Miscellaneous.cpp +0 -17
- data/src/agent/Core/Controller/Request.h +2 -0
- data/src/agent/Core/Controller/SendRequest.cpp +4 -4
- data/src/agent/Core/Controller/{StateInspectionAndConfiguration.cpp → StateInspection.cpp} +0 -22
- data/src/agent/Core/Controller/TurboCaching.h +11 -10
- data/src/agent/Core/CoreMain.cpp +16 -6
- data/src/agent/Core/ResponseCache.h +3 -3
- data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -3
- data/src/agent/Core/SpawningKit/Spawner.h +7 -3
- data/src/agent/UstRouter/ApiServer.h +3 -2
- data/src/agent/UstRouter/Controller.h +66 -32
- data/src/agent/UstRouter/UstRouterMain.cpp +10 -2
- data/src/agent/Watchdog/ApiServer.h +3 -2
- data/src/agent/Watchdog/WatchdogMain.cpp +3 -1
- data/src/apache2_module/ConfigurationCommands.cpp +1 -1
- data/src/cxx_supportlib/ConfigKit/Common.h +125 -0
- data/src/cxx_supportlib/ConfigKit/ConfigKit.h +34 -0
- data/src/cxx_supportlib/ConfigKit/README.md +895 -0
- data/src/cxx_supportlib/ConfigKit/Schema.h +331 -0
- data/src/cxx_supportlib/ConfigKit/Store.h +385 -0
- data/src/cxx_supportlib/ConfigKit/TableTranslator.h +185 -0
- data/src/cxx_supportlib/ConfigKit/Utils.h +141 -0
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +81 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Crypto.cpp +2 -2
- data/src/cxx_supportlib/Logging.h +0 -35
- data/src/cxx_supportlib/ServerKit/HttpServer.h +35 -16
- data/src/cxx_supportlib/ServerKit/Server.h +65 -25
- data/src/cxx_supportlib/oxt/macros.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +53 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +28 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +90 -18
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +35 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/compaq_cxx.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +29 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sgi_mipspro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +44 -16
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +33 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -27
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +62 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +39 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +49 -32
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +175 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +223 -98
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +88 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +4 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +45 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +205 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +290 -181
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +320 -46
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +91 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +491 -120
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +399 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +19 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +117 -59
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +33 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +414 -70
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +134 -117
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +202 -99
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +217 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +29 -27
- data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +27 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +25 -3
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +114 -1
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +116 -142
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +57 -69
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +35 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +37 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +209 -72
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +58 -45
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +83 -57
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +70 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +22 -21
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +29 -28
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +33 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +19 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +21 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +103 -29
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +295 -211
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +20 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +22 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +43 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +96 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +102 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +48 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +20 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +167 -23
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +100 -46
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -27
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +30 -14
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +35 -36
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +6 -28
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +20 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +2437 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +127 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +637 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -116
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +227 -32
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +30 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +84 -80
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +14 -20
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +32 -33
- data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +49 -49
- data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +197 -255
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +1059 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +372 -554
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +16 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/cat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/to_list.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +102 -87
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +45 -21
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +5 -14
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +116 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1004 -159
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +4 -58
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +28 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +52 -144
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +120 -450
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +70 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +22 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +163 -55
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/locks.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_functors.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +265 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +272 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +21 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +40 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4986 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +1814 -1255
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1498 -1161
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -44
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/utility/compare_pointees.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +39 -22
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +690 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view_fwd.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/helper-scripts/crash-watch.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -12
- metadata +77 -38
- data/dev/ci/inituidgid +0 -24
- data/dev/ci/run_jenkins.sh +0 -70
- data/dev/ci/run_travis.sh +0 -314
- data/doc/Design and Architecture.html +0 -2421
- data/doc/Design and Architecture.txt +0 -511
- data/doc/Security of user switching support.html +0 -1833
- data/doc/Users guide Apache.html +0 -3101
- data/doc/Users guide Apache.idmap.txt +0 -451
- data/doc/Users guide Apache.txt +0 -534
- data/doc/Users guide Nginx.html +0 -3026
- data/doc/Users guide Nginx.idmap.txt +0 -431
- data/doc/Users guide Nginx.txt +0 -451
- data/doc/Users guide Standalone.html +0 -2092
- data/doc/Users guide Standalone.idmap.txt +0 -137
- data/doc/Users guide Standalone.txt +0 -81
- data/doc/Users guide.html +0 -1606
- data/doc/Users guide.txt +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -383
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +0 -318
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +0 -214
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +0 -1128
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +0 -928
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +0 -686
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +0 -188
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +0 -873
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +0 -628
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +0 -266
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <boost/container/detail/config_begin.hpp>
|
23
23
|
#include <boost/container/detail/workaround.hpp>
|
24
|
+
#include <boost/move/utility_core.hpp>
|
24
25
|
|
25
26
|
#include <boost/container/detail/type_traits.hpp>
|
26
27
|
#include <cstddef> //std::size_t
|
@@ -42,13 +43,13 @@ class tuple<Head, Tail...>
|
|
42
43
|
typedef tuple<Tail...> inherited;
|
43
44
|
|
44
45
|
public:
|
45
|
-
tuple()
|
46
|
+
tuple()
|
47
|
+
: inherited(), m_head()
|
48
|
+
{}
|
46
49
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
typename add_const_reference<Tail>::type... vtail)
|
51
|
-
: inherited(vtail...), m_head(v)
|
50
|
+
template<class U, class ...Args>
|
51
|
+
tuple(U &&u, Args && ...args)
|
52
|
+
: inherited(::boost::forward<Args>(args)...), m_head(::boost::forward<U>(u))
|
52
53
|
{}
|
53
54
|
|
54
55
|
// Construct tuple from another tuple.
|
@@ -77,8 +78,8 @@ class tuple<Head, Tail...>
|
|
77
78
|
|
78
79
|
|
79
80
|
template<typename... Values>
|
80
|
-
tuple<Values&&...>
|
81
|
-
{ return tuple<Values&&...>(values...); }
|
81
|
+
tuple<Values&&...> forward_as_tuple(Values&&... values)
|
82
|
+
{ return tuple<Values&&...>(::boost::forward<Values>(values)...); }
|
82
83
|
|
83
84
|
template<int I, typename Tuple>
|
84
85
|
struct tuple_element;
|
@@ -135,21 +136,25 @@ typename get_impl<I, tuple<Values...> >::const_type get(const tuple<Values...>&
|
|
135
136
|
// in a function call.
|
136
137
|
////////////////////////////////////////////////////
|
137
138
|
|
138
|
-
template<
|
139
|
-
struct index_tuple{};
|
139
|
+
template<std::size_t...> struct index_tuple{ typedef index_tuple type; };
|
140
140
|
|
141
|
-
template<
|
142
|
-
struct build_number_seq;
|
141
|
+
template<class S1, class S2> struct concat_index_tuple;
|
143
142
|
|
144
|
-
template<std::size_t
|
145
|
-
struct
|
146
|
-
|
147
|
-
{};
|
143
|
+
template<std::size_t... I1, std::size_t... I2>
|
144
|
+
struct concat_index_tuple<index_tuple<I1...>, index_tuple<I2...>>
|
145
|
+
: index_tuple<I1..., (sizeof...(I1)+I2)...>{};
|
148
146
|
|
149
|
-
template<
|
150
|
-
|
151
|
-
|
147
|
+
template<std::size_t N> struct build_number_seq;
|
148
|
+
|
149
|
+
template<std::size_t N>
|
150
|
+
struct build_number_seq
|
151
|
+
: concat_index_tuple<typename build_number_seq<N/2>::type
|
152
|
+
,typename build_number_seq<N - N/2 >::type
|
153
|
+
>::type
|
154
|
+
{};
|
152
155
|
|
156
|
+
template<> struct build_number_seq<0> : index_tuple<>{};
|
157
|
+
template<> struct build_number_seq<1> : index_tuple<0>{};
|
153
158
|
|
154
159
|
}}} //namespace boost { namespace container { namespace container_detail {
|
155
160
|
|
@@ -29,12 +29,34 @@
|
|
29
29
|
#define BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST
|
30
30
|
#endif
|
31
31
|
|
32
|
+
#if defined(BOOST_GCC_VERSION)
|
33
|
+
# if (BOOST_GCC_VERSION < 40700) || !defined(BOOST_GCC_CXX11)
|
34
|
+
# define BOOST_CONTAINER_NO_CXX11_DELEGATING_CONSTRUCTORS
|
35
|
+
# endif
|
36
|
+
#elif defined(BOOST_MSVC)
|
37
|
+
# if _MSC_FULL_VER < 180020827
|
38
|
+
# define BOOST_CONTAINER_NO_CXX11_DELEGATING_CONSTRUCTORS
|
39
|
+
# endif
|
40
|
+
#elif defined(BOOST_CLANG)
|
41
|
+
# if !__has_feature(cxx_delegating_constructors)
|
42
|
+
# define BOOST_CONTAINER_NO_CXX11_DELEGATING_CONSTRUCTORS
|
43
|
+
# endif
|
44
|
+
#endif
|
45
|
+
|
32
46
|
#if !defined(BOOST_FALLTHOUGH)
|
33
47
|
#define BOOST_CONTAINER_FALLTHOUGH
|
34
48
|
#else
|
35
49
|
#define BOOST_CONTAINER_FALLTHOUGH BOOST_FALLTHOUGH;
|
36
50
|
#endif
|
37
51
|
|
52
|
+
#if defined(BOOST_MSVC) && (_MSC_VER < 1400)
|
53
|
+
#define BOOST_CONTAINER_TEMPLATED_CONVERSION_OPERATOR_BROKEN
|
54
|
+
#endif
|
55
|
+
|
56
|
+
#if !defined(BOOST_NO_CXX11_HDR_TUPLE) || (defined(BOOST_MSVC) && (BOOST_MSVC == 1700 || BOOST_MSVC == 1600))
|
57
|
+
#define BOOST_CONTAINER_PAIR_TEST_HAS_HEADER_TUPLE
|
58
|
+
#endif
|
59
|
+
|
38
60
|
//Macros for documentation purposes. For code, expands to the argument
|
39
61
|
#define BOOST_CONTAINER_IMPDEF(TYPE) TYPE
|
40
62
|
#define BOOST_CONTAINER_SEEDOC(TYPE) TYPE
|
@@ -76,4 +98,20 @@
|
|
76
98
|
#define BOOST_CONTAINER_DECL
|
77
99
|
#endif /* DYN_LINK */
|
78
100
|
|
101
|
+
//#define BOOST_CONTAINER_DISABLE_FORCEINLINE
|
102
|
+
|
103
|
+
#if defined(BOOST_CONTAINER_DISABLE_FORCEINLINE)
|
104
|
+
#define BOOST_CONTAINER_FORCEINLINE inline
|
105
|
+
#elif defined(BOOST_CONTAINER_FORCEINLINE_IS_BOOST_FORCELINE)
|
106
|
+
#define BOOST_CONTAINER_FORCEINLINE BOOST_FORCEINLINE
|
107
|
+
#elif defined(BOOST_MSVC) && defined(_DEBUG)
|
108
|
+
//"__forceinline" and MSVC seems to have some bugs in debug mode
|
109
|
+
#define BOOST_CONTAINER_FORCEINLINE inline
|
110
|
+
#elif defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ < 5)))
|
111
|
+
//Older GCCs have problems with forceinline
|
112
|
+
#define BOOST_CONTAINER_FORCEINLINE inline
|
113
|
+
#else
|
114
|
+
#define BOOST_CONTAINER_FORCEINLINE BOOST_FORCEINLINE
|
115
|
+
#endif
|
116
|
+
|
79
117
|
#endif //#ifndef BOOST_CONTAINER_DETAIL_WORKAROUND_HPP
|
@@ -53,14 +53,17 @@ namespace container {
|
|
53
53
|
|
54
54
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
55
55
|
|
56
|
+
template <class Key, class T, class Compare, class Allocator>
|
57
|
+
class flat_multimap;
|
58
|
+
|
56
59
|
namespace container_detail{
|
57
60
|
|
58
61
|
template<class D, class S>
|
59
|
-
static D &force(const S &s)
|
62
|
+
BOOST_CONTAINER_FORCEINLINE static D &force(const S &s)
|
60
63
|
{ return *const_cast<D*>((reinterpret_cast<const D*>(&s))); }
|
61
64
|
|
62
65
|
template<class D, class S>
|
63
|
-
static D force_copy(S s)
|
66
|
+
BOOST_CONTAINER_FORCEINLINE static D force_copy(S s)
|
64
67
|
{
|
65
68
|
D *vp = reinterpret_cast<D *>(&s);
|
66
69
|
return D(*vp);
|
@@ -110,16 +113,16 @@ class flat_map
|
|
110
113
|
private:
|
111
114
|
BOOST_COPYABLE_AND_MOVABLE(flat_map)
|
112
115
|
//This is the tree that we should store if pair was movable
|
113
|
-
typedef container_detail::flat_tree<
|
116
|
+
typedef container_detail::flat_tree<
|
114
117
|
std::pair<Key, T>,
|
115
|
-
container_detail::select1st<
|
118
|
+
container_detail::select1st<Key>,
|
116
119
|
Compare,
|
117
120
|
Allocator> tree_t;
|
118
121
|
|
119
122
|
//This is the real tree stored here. It's based on a movable pair
|
120
|
-
typedef container_detail::flat_tree<
|
123
|
+
typedef container_detail::flat_tree<
|
121
124
|
container_detail::pair<Key, T>,
|
122
|
-
container_detail::select1st<
|
125
|
+
container_detail::select1st<Key>,
|
123
126
|
Compare,
|
124
127
|
typename allocator_traits<Allocator>::template portable_rebind_alloc
|
125
128
|
<container_detail::pair<Key, T> >::type> impl_tree_t;
|
@@ -131,7 +134,7 @@ class flat_map
|
|
131
134
|
typedef typename impl_tree_t::allocator_type impl_allocator_type;
|
132
135
|
typedef container_detail::flat_tree_value_compare
|
133
136
|
< Compare
|
134
|
-
, container_detail::select1st<
|
137
|
+
, container_detail::select1st<Key>
|
135
138
|
, std::pair<Key, T> > value_compare_impl;
|
136
139
|
typedef typename container_detail::get_flat_tree_iterators
|
137
140
|
<typename allocator_traits<Allocator>::pointer>::iterator iterator_impl;
|
@@ -143,6 +146,13 @@ class flat_map
|
|
143
146
|
<typename allocator_traits<Allocator>::pointer>::const_reverse_iterator const_reverse_iterator_impl;
|
144
147
|
public:
|
145
148
|
typedef typename impl_tree_t::stored_allocator_type impl_stored_allocator_type;
|
149
|
+
|
150
|
+
impl_tree_t &tree()
|
151
|
+
{ return m_flat_tree; }
|
152
|
+
|
153
|
+
const impl_tree_t &tree() const
|
154
|
+
{ return m_flat_tree; }
|
155
|
+
|
146
156
|
private:
|
147
157
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
148
158
|
|
@@ -183,10 +193,11 @@ class flat_map
|
|
183
193
|
//! <b>Effects</b>: Default constructs an empty flat_map.
|
184
194
|
//!
|
185
195
|
//! <b>Complexity</b>: Constant.
|
186
|
-
flat_map()
|
196
|
+
flat_map() BOOST_NOEXCEPT_IF(container_detail::is_nothrow_default_constructible<Allocator>::value &&
|
197
|
+
container_detail::is_nothrow_default_constructible<Compare>::value)
|
187
198
|
: m_flat_tree()
|
188
199
|
{
|
189
|
-
//
|
200
|
+
//value_type must be std::pair<Key, T>
|
190
201
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
191
202
|
}
|
192
203
|
|
@@ -197,7 +208,7 @@ class flat_map
|
|
197
208
|
explicit flat_map(const Compare& comp, const allocator_type& a = allocator_type())
|
198
209
|
: m_flat_tree(comp, container_detail::force<impl_allocator_type>(a))
|
199
210
|
{
|
200
|
-
//
|
211
|
+
//value_type must be std::pair<Key, T>
|
201
212
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
202
213
|
}
|
203
214
|
|
@@ -207,7 +218,7 @@ class flat_map
|
|
207
218
|
explicit flat_map(const allocator_type& a)
|
208
219
|
: m_flat_tree(container_detail::force<impl_allocator_type>(a))
|
209
220
|
{
|
210
|
-
//
|
221
|
+
//value_type must be std::pair<Key, T>
|
211
222
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
212
223
|
}
|
213
224
|
|
@@ -221,7 +232,7 @@ class flat_map
|
|
221
232
|
const allocator_type& a = allocator_type())
|
222
233
|
: m_flat_tree(true, first, last, comp, container_detail::force<impl_allocator_type>(a))
|
223
234
|
{
|
224
|
-
//
|
235
|
+
//value_type must be std::pair<Key, T>
|
225
236
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
226
237
|
}
|
227
238
|
|
@@ -234,7 +245,7 @@ class flat_map
|
|
234
245
|
flat_map(InputIterator first, InputIterator last, const allocator_type& a)
|
235
246
|
: m_flat_tree(true, first, last, Compare(), container_detail::force<impl_allocator_type>(a))
|
236
247
|
{
|
237
|
-
//
|
248
|
+
//value_type must be std::pair<Key, T>
|
238
249
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
239
250
|
}
|
240
251
|
|
@@ -251,9 +262,9 @@ class flat_map
|
|
251
262
|
template <class InputIterator>
|
252
263
|
flat_map( ordered_unique_range_t, InputIterator first, InputIterator last
|
253
264
|
, const Compare& comp = Compare(), const allocator_type& a = allocator_type())
|
254
|
-
: m_flat_tree(
|
265
|
+
: m_flat_tree(ordered_unique_range, first, last, comp, a)
|
255
266
|
{
|
256
|
-
//
|
267
|
+
//value_type must be std::pair<Key, T>
|
257
268
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
258
269
|
}
|
259
270
|
|
@@ -267,7 +278,7 @@ class flat_map
|
|
267
278
|
const allocator_type& a = allocator_type())
|
268
279
|
: m_flat_tree(true, il.begin(), il.end(), comp, container_detail::force<impl_allocator_type>(a))
|
269
280
|
{
|
270
|
-
//
|
281
|
+
//value_type must be std::pair<Key, T>
|
271
282
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
272
283
|
}
|
273
284
|
|
@@ -279,7 +290,7 @@ class flat_map
|
|
279
290
|
flat_map(std::initializer_list<value_type> il, const allocator_type& a)
|
280
291
|
: m_flat_tree(true, il.begin(), il.end(), Compare(), container_detail::force<impl_allocator_type>(a))
|
281
292
|
{
|
282
|
-
//
|
293
|
+
//value_type must be std::pair<Key, T>
|
283
294
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
284
295
|
}
|
285
296
|
|
@@ -295,9 +306,9 @@ class flat_map
|
|
295
306
|
//! <b>Note</b>: Non-standard extension.
|
296
307
|
flat_map(ordered_unique_range_t, std::initializer_list<value_type> il, const Compare& comp = Compare(),
|
297
308
|
const allocator_type& a = allocator_type())
|
298
|
-
: m_flat_tree(
|
309
|
+
: m_flat_tree(ordered_unique_range, il.begin(), il.end(), comp, a)
|
299
310
|
{
|
300
|
-
//
|
311
|
+
//value_type must be std::pair<Key, T>
|
301
312
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
302
313
|
}
|
303
314
|
#endif
|
@@ -308,7 +319,7 @@ class flat_map
|
|
308
319
|
flat_map(const flat_map& x)
|
309
320
|
: m_flat_tree(x.m_flat_tree)
|
310
321
|
{
|
311
|
-
//
|
322
|
+
//value_type must be std::pair<Key, T>
|
312
323
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
313
324
|
}
|
314
325
|
|
@@ -319,9 +330,10 @@ class flat_map
|
|
319
330
|
//!
|
320
331
|
//! <b>Postcondition</b>: x is emptied.
|
321
332
|
flat_map(BOOST_RV_REF(flat_map) x)
|
333
|
+
BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
|
322
334
|
: m_flat_tree(boost::move(x.m_flat_tree))
|
323
335
|
{
|
324
|
-
//
|
336
|
+
//value_type must be std::pair<Key, T>
|
325
337
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
326
338
|
}
|
327
339
|
|
@@ -331,7 +343,7 @@ class flat_map
|
|
331
343
|
flat_map(const flat_map& x, const allocator_type &a)
|
332
344
|
: m_flat_tree(x.m_flat_tree, a)
|
333
345
|
{
|
334
|
-
//
|
346
|
+
//value_type must be std::pair<Key, T>
|
335
347
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
336
348
|
}
|
337
349
|
|
@@ -342,7 +354,7 @@ class flat_map
|
|
342
354
|
flat_map(BOOST_RV_REF(flat_map) x, const allocator_type &a)
|
343
355
|
: m_flat_tree(boost::move(x.m_flat_tree), a)
|
344
356
|
{
|
345
|
-
//
|
357
|
+
//value_type must be std::pair<Key, T>
|
346
358
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
347
359
|
}
|
348
360
|
|
@@ -362,8 +374,9 @@ class flat_map
|
|
362
374
|
//! propagate_on_container_move_assignment is true or
|
363
375
|
//! this->get>allocator() == x.get_allocator(). Linear otherwise.
|
364
376
|
flat_map& operator=(BOOST_RV_REF(flat_map) x)
|
365
|
-
BOOST_NOEXCEPT_IF(
|
366
|
-
|
377
|
+
BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
|
378
|
+
allocator_traits_type::is_always_equal::value) &&
|
379
|
+
boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
|
367
380
|
{ m_flat_tree = boost::move(x.m_flat_tree); return *this; }
|
368
381
|
|
369
382
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
@@ -601,6 +614,96 @@ class flat_map
|
|
601
614
|
BOOST_MOVE_CONVERSION_AWARE_CATCH( operator[] , key_type, mapped_type&, this->priv_subscript)
|
602
615
|
#endif
|
603
616
|
|
617
|
+
//! Effects: If a key equivalent to k already exists in the container, assigns forward<M>(obj)
|
618
|
+
//! to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value
|
619
|
+
//! as if by insert, constructing it from value_type(k, forward<M>(obj)).
|
620
|
+
//!
|
621
|
+
//! No iterators or references are invalidated. If the insertion is successful, pointers and references
|
622
|
+
//! to the element obtained while it is held in the node handle are invalidated, and pointers and
|
623
|
+
//! references obtained to that element before it was extracted become valid.
|
624
|
+
//!
|
625
|
+
//! Returns: The bool component is true if the insertion took place and false if the assignment
|
626
|
+
//! took place. The iterator component is pointing at the element that was inserted or updated.
|
627
|
+
//!
|
628
|
+
//! Complexity: Logarithmic in the size of the container.
|
629
|
+
template <class M>
|
630
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> insert_or_assign(const key_type& k, BOOST_FWD_REF(M) obj)
|
631
|
+
{
|
632
|
+
return container_detail::force_copy< std::pair<iterator, bool> >
|
633
|
+
(this->m_flat_tree.insert_or_assign
|
634
|
+
( impl_const_iterator(), k, ::boost::forward<M>(obj))
|
635
|
+
);
|
636
|
+
}
|
637
|
+
|
638
|
+
//! Effects: If a key equivalent to k already exists in the container, assigns forward<M>(obj)
|
639
|
+
//! to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value
|
640
|
+
//! as if by insert, constructing it from value_type(k, move(obj)).
|
641
|
+
//!
|
642
|
+
//! No iterators or references are invalidated. If the insertion is successful, pointers and references
|
643
|
+
//! to the element obtained while it is held in the node handle are invalidated, and pointers and
|
644
|
+
//! references obtained to that element before it was extracted become valid.
|
645
|
+
//!
|
646
|
+
//! Returns: The bool component is true if the insertion took place and false if the assignment
|
647
|
+
//! took place. The iterator component is pointing at the element that was inserted or updated.
|
648
|
+
//!
|
649
|
+
//! Complexity: Logarithmic in the size of the container.
|
650
|
+
template <class M>
|
651
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> insert_or_assign(BOOST_RV_REF(key_type) k, BOOST_FWD_REF(M) obj)
|
652
|
+
{
|
653
|
+
return container_detail::force_copy< std::pair<iterator, bool> >
|
654
|
+
(this->m_flat_tree.insert_or_assign
|
655
|
+
( impl_const_iterator(), ::boost::move(k), ::boost::forward<M>(obj))
|
656
|
+
);
|
657
|
+
}
|
658
|
+
|
659
|
+
//! Effects: If a key equivalent to k already exists in the container, assigns forward<M>(obj)
|
660
|
+
//! to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value
|
661
|
+
//! as if by insert, constructing it from value_type(k, forward<M>(obj)) and the new element
|
662
|
+
//! to the container as close as possible to the position just before hint.
|
663
|
+
//!
|
664
|
+
//! No iterators or references are invalidated. If the insertion is successful, pointers and references
|
665
|
+
//! to the element obtained while it is held in the node handle are invalidated, and pointers and
|
666
|
+
//! references obtained to that element before it was extracted become valid.
|
667
|
+
//!
|
668
|
+
//! Returns: The bool component is true if the insertion took place and false if the assignment
|
669
|
+
//! took place. The iterator component is pointing at the element that was inserted or updated.
|
670
|
+
//!
|
671
|
+
//! Complexity: Logarithmic in the size of the container in general, but amortized constant if
|
672
|
+
//! the new element is inserted just before hint.
|
673
|
+
template <class M>
|
674
|
+
BOOST_CONTAINER_FORCEINLINE iterator insert_or_assign(const_iterator hint, const key_type& k, BOOST_FWD_REF(M) obj)
|
675
|
+
{
|
676
|
+
return container_detail::force_copy< std::pair<iterator, bool> >
|
677
|
+
(this->m_flat_tree.insert_or_assign
|
678
|
+
( container_detail::force_copy<impl_const_iterator>(hint)
|
679
|
+
, k, ::boost::forward<M>(obj))
|
680
|
+
);
|
681
|
+
}
|
682
|
+
|
683
|
+
//! Effects: If a key equivalent to k already exists in the container, assigns forward<M>(obj)
|
684
|
+
//! to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value
|
685
|
+
//! as if by insert, constructing it from value_type(k, move(obj)) and the new element
|
686
|
+
//! to the container as close as possible to the position just before hint.
|
687
|
+
//!
|
688
|
+
//! No iterators or references are invalidated. If the insertion is successful, pointers and references
|
689
|
+
//! to the element obtained while it is held in the node handle are invalidated, and pointers and
|
690
|
+
//! references obtained to that element before it was extracted become valid.
|
691
|
+
//!
|
692
|
+
//! Returns: The bool component is true if the insertion took place and false if the assignment
|
693
|
+
//! took place. The iterator component is pointing at the element that was inserted or updated.
|
694
|
+
//!
|
695
|
+
//! Complexity: Logarithmic in the size of the container in general, but amortized constant if
|
696
|
+
//! the new element is inserted just before hint.
|
697
|
+
template <class M>
|
698
|
+
BOOST_CONTAINER_FORCEINLINE iterator insert_or_assign(const_iterator hint, BOOST_RV_REF(key_type) k, BOOST_FWD_REF(M) obj)
|
699
|
+
{
|
700
|
+
return container_detail::force_copy< std::pair<iterator, bool> >
|
701
|
+
(this->m_flat_tree.insert_or_assign
|
702
|
+
( container_detail::force_copy<impl_const_iterator>(hint)
|
703
|
+
, ::boost::move(k), ::boost::forward<M>(obj))
|
704
|
+
);
|
705
|
+
}
|
706
|
+
|
604
707
|
//! @copydoc ::boost::container::flat_set::nth(size_type)
|
605
708
|
iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
606
709
|
{ return container_detail::force_copy<iterator>(m_flat_tree.nth(n)); }
|
@@ -689,6 +792,79 @@ class flat_map
|
|
689
792
|
, boost::forward<Args>(args)...));
|
690
793
|
}
|
691
794
|
|
795
|
+
//! <b>Requires</b>: value_type shall be EmplaceConstructible into map from piecewise_construct,
|
796
|
+
//! forward_as_tuple(k), forward_as_tuple(forward<Args>(args)...).
|
797
|
+
//!
|
798
|
+
//! <b>Effects</b>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise
|
799
|
+
//! inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(k),
|
800
|
+
//! forward_as_tuple(forward<Args>(args)...).
|
801
|
+
//!
|
802
|
+
//! <b>Returns</b>: The bool component of the returned pair is true if and only if the
|
803
|
+
//! insertion took place. The returned iterator points to the map element whose key is equivalent to k.
|
804
|
+
//!
|
805
|
+
//! <b>Complexity</b>: Logarithmic.
|
806
|
+
template <class... Args>
|
807
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> try_emplace(const key_type& k, BOOST_FWD_REF(Args)... args)
|
808
|
+
{
|
809
|
+
return container_detail::force_copy< std::pair<iterator, bool> >(
|
810
|
+
m_flat_tree.try_emplace(impl_const_iterator(), k, boost::forward<Args>(args)...));
|
811
|
+
}
|
812
|
+
|
813
|
+
//! <b>Requires</b>: value_type shall be EmplaceConstructible into map from piecewise_construct,
|
814
|
+
//! forward_as_tuple(k), forward_as_tuple(forward<Args>(args)...).
|
815
|
+
//!
|
816
|
+
//! <b>Effects</b>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise
|
817
|
+
//! inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(k),
|
818
|
+
//! forward_as_tuple(forward<Args>(args)...).
|
819
|
+
//!
|
820
|
+
//! <b>Returns</b>: The returned iterator points to the map element whose key is equivalent to k.
|
821
|
+
//!
|
822
|
+
//! <b>Complexity</b>: Logarithmic in general, but amortized constant if value
|
823
|
+
//! is inserted right before p.
|
824
|
+
template <class... Args>
|
825
|
+
BOOST_CONTAINER_FORCEINLINE iterator try_emplace(const_iterator hint, const key_type &k, BOOST_FWD_REF(Args)... args)
|
826
|
+
{
|
827
|
+
return container_detail::force_copy<iterator>(m_flat_tree.try_emplace
|
828
|
+
(container_detail::force_copy<impl_const_iterator>(hint), k, boost::forward<Args>(args)...).first);
|
829
|
+
}
|
830
|
+
|
831
|
+
//! <b>Requires</b>: value_type shall be EmplaceConstructible into map from piecewise_construct,
|
832
|
+
//! forward_as_tuple(move(k)), forward_as_tuple(forward<Args>(args)...).
|
833
|
+
//!
|
834
|
+
//! <b>Effects</b>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise
|
835
|
+
//! inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(move(k)),
|
836
|
+
//! forward_as_tuple(forward<Args>(args)...).
|
837
|
+
//!
|
838
|
+
//! <b>Returns</b>: The bool component of the returned pair is true if and only if the
|
839
|
+
//! insertion took place. The returned iterator points to the map element whose key is equivalent to k.
|
840
|
+
//!
|
841
|
+
//! <b>Complexity</b>: Logarithmic.
|
842
|
+
template <class... Args>
|
843
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> try_emplace(BOOST_RV_REF(key_type) k, BOOST_FWD_REF(Args)... args)
|
844
|
+
{
|
845
|
+
return container_detail::force_copy< std::pair<iterator, bool> >
|
846
|
+
(m_flat_tree.try_emplace(impl_const_iterator(), boost::move(k), boost::forward<Args>(args)...));
|
847
|
+
}
|
848
|
+
|
849
|
+
//! <b>Requires</b>: value_type shall be EmplaceConstructible into map from piecewise_construct,
|
850
|
+
//! forward_as_tuple(move(k)), forward_as_tuple(forward<Args>(args)...).
|
851
|
+
//!
|
852
|
+
//! <b>Effects</b>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise
|
853
|
+
//! inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(move(k)),
|
854
|
+
//! forward_as_tuple(forward<Args>(args)...).
|
855
|
+
//!
|
856
|
+
//! <b>Returns</b>: The returned iterator points to the map element whose key is equivalent to k.
|
857
|
+
//!
|
858
|
+
//! <b>Complexity</b>: Logarithmic in general, but amortized constant if value
|
859
|
+
//! is inserted right before p.
|
860
|
+
template <class... Args>
|
861
|
+
BOOST_CONTAINER_FORCEINLINE iterator try_emplace(const_iterator hint, BOOST_RV_REF(key_type) k, BOOST_FWD_REF(Args)... args)
|
862
|
+
{
|
863
|
+
return container_detail::force_copy<iterator>
|
864
|
+
(m_flat_tree.try_emplace(container_detail::force_copy
|
865
|
+
<impl_const_iterator>(hint), boost::move(k), boost::forward<Args>(args)...).first);
|
866
|
+
}
|
867
|
+
|
692
868
|
#else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
693
869
|
|
694
870
|
#define BOOST_CONTAINER_FLAT_MAP_EMPLACE_CODE(N) \
|
@@ -705,6 +881,29 @@ class flat_map
|
|
705
881
|
return container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_unique\
|
706
882
|
(container_detail::force_copy<impl_const_iterator>(hint) BOOST_MOVE_I##N BOOST_MOVE_FWD##N));\
|
707
883
|
}\
|
884
|
+
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
885
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> try_emplace(const key_type& k BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
886
|
+
{\
|
887
|
+
return container_detail::force_copy< std::pair<iterator, bool> >\
|
888
|
+
(m_flat_tree.try_emplace(impl_const_iterator(), k BOOST_MOVE_I##N BOOST_MOVE_FWD##N));\
|
889
|
+
}\
|
890
|
+
\
|
891
|
+
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
892
|
+
BOOST_CONTAINER_FORCEINLINE iterator try_emplace(const_iterator hint, const key_type &k BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
893
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.try_emplace\
|
894
|
+
(container_detail::force_copy<impl_const_iterator>(hint), k BOOST_MOVE_I##N BOOST_MOVE_FWD##N).first); }\
|
895
|
+
\
|
896
|
+
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
897
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> try_emplace(BOOST_RV_REF(key_type) k BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
898
|
+
{\
|
899
|
+
return container_detail::force_copy< std::pair<iterator, bool> >\
|
900
|
+
(m_flat_tree.try_emplace(impl_const_iterator(), boost::move(k) BOOST_MOVE_I##N BOOST_MOVE_FWD##N));\
|
901
|
+
}\
|
902
|
+
\
|
903
|
+
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
904
|
+
BOOST_CONTAINER_FORCEINLINE iterator try_emplace(const_iterator hint, BOOST_RV_REF(key_type) k BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
905
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.try_emplace\
|
906
|
+
(container_detail::force_copy<impl_const_iterator>(hint), boost::move(k) BOOST_MOVE_I##N BOOST_MOVE_FWD##N).first); }\
|
708
907
|
//
|
709
908
|
BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_FLAT_MAP_EMPLACE_CODE)
|
710
909
|
#undef BOOST_CONTAINER_FLAT_MAP_EMPLACE_CODE
|
@@ -867,6 +1066,39 @@ class flat_map
|
|
867
1066
|
{ m_flat_tree.insert_unique(ordered_unique_range, il.begin(), il.end()); }
|
868
1067
|
#endif
|
869
1068
|
|
1069
|
+
//! <b>Requires</b>: this->get_allocator() == source.get_allocator().
|
1070
|
+
//!
|
1071
|
+
//! <b>Effects</b>: Attempts to extract each element in source and insert it into a using
|
1072
|
+
//! the comparison object of *this. If there is an element in a with key equivalent to the
|
1073
|
+
//! key of an element from source, then that element is not extracted from source.
|
1074
|
+
//!
|
1075
|
+
//! <b>Postcondition</b>: Pointers and references to the transferred elements of source refer
|
1076
|
+
//! to those same elements but as members of *this. Iterators referring to the transferred
|
1077
|
+
//! elements will continue to refer to their elements, but they now behave as iterators into *this,
|
1078
|
+
//! not into source.
|
1079
|
+
//!
|
1080
|
+
//! <b>Throws</b>: Nothing unless the comparison object throws.
|
1081
|
+
//!
|
1082
|
+
//! <b>Complexity</b>: N log(a.size() + N) (N has the value source.size())
|
1083
|
+
template<class C2>
|
1084
|
+
BOOST_CONTAINER_FORCEINLINE void merge(flat_map<Key, T, C2, Allocator>& source)
|
1085
|
+
{ m_flat_tree.merge_unique(source.tree()); }
|
1086
|
+
|
1087
|
+
//! @copydoc ::boost::container::flat_map::merge(flat_map<Key, T, C2, Allocator>&)
|
1088
|
+
template<class C2>
|
1089
|
+
BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_map<Key, T, C2, Allocator> BOOST_RV_REF_END source)
|
1090
|
+
{ return this->merge(static_cast<flat_map<Key, T, C2, Allocator>&>(source)); }
|
1091
|
+
|
1092
|
+
//! @copydoc ::boost::container::flat_map::merge(flat_map<Key, T, C2, Allocator>&)
|
1093
|
+
template<class C2>
|
1094
|
+
BOOST_CONTAINER_FORCEINLINE void merge(flat_multimap<Key, T, C2, Allocator>& source)
|
1095
|
+
{ m_flat_tree.merge_unique(source.tree()); }
|
1096
|
+
|
1097
|
+
//! @copydoc ::boost::container::flat_map::merge(flat_map<Key, T, C2, Allocator>&)
|
1098
|
+
template<class C2>
|
1099
|
+
BOOST_CONTAINER_FORCEINLINE void merge(BOOST_RV_REF_BEG flat_multimap<Key, T, C2, Allocator> BOOST_RV_REF_END source)
|
1100
|
+
{ return this->merge(static_cast<flat_multimap<Key, T, C2, Allocator>&>(source)); }
|
1101
|
+
|
870
1102
|
//! <b>Effects</b>: Erases the element pointed to by p.
|
871
1103
|
//!
|
872
1104
|
//! <b>Returns</b>: Returns an iterator pointing to the element immediately
|
@@ -1137,15 +1369,15 @@ class flat_multimap
|
|
1137
1369
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
1138
1370
|
private:
|
1139
1371
|
BOOST_COPYABLE_AND_MOVABLE(flat_multimap)
|
1140
|
-
typedef container_detail::flat_tree<
|
1372
|
+
typedef container_detail::flat_tree<
|
1141
1373
|
std::pair<Key, T>,
|
1142
|
-
container_detail::select1st<
|
1374
|
+
container_detail::select1st<Key>,
|
1143
1375
|
Compare,
|
1144
1376
|
Allocator> tree_t;
|
1145
1377
|
//This is the real tree stored here. It's based on a movable pair
|
1146
|
-
typedef container_detail::flat_tree<
|
1378
|
+
typedef container_detail::flat_tree<
|
1147
1379
|
container_detail::pair<Key, T>,
|
1148
|
-
container_detail::select1st<
|
1380
|
+
container_detail::select1st<Key>,
|
1149
1381
|
Compare,
|
1150
1382
|
typename allocator_traits<Allocator>::template portable_rebind_alloc
|
1151
1383
|
<container_detail::pair<Key, T> >::type> impl_tree_t;
|
@@ -1157,7 +1389,7 @@ class flat_multimap
|
|
1157
1389
|
typedef typename impl_tree_t::allocator_type impl_allocator_type;
|
1158
1390
|
typedef container_detail::flat_tree_value_compare
|
1159
1391
|
< Compare
|
1160
|
-
, container_detail::select1st<
|
1392
|
+
, container_detail::select1st<Key>
|
1161
1393
|
, std::pair<Key, T> > value_compare_impl;
|
1162
1394
|
typedef typename container_detail::get_flat_tree_iterators
|
1163
1395
|
<typename allocator_traits<Allocator>::pointer>::iterator iterator_impl;
|
@@ -1169,6 +1401,13 @@ class flat_multimap
|
|
1169
1401
|
<typename allocator_traits<Allocator>::pointer>::const_reverse_iterator const_reverse_iterator_impl;
|
1170
1402
|
public:
|
1171
1403
|
typedef typename impl_tree_t::stored_allocator_type impl_stored_allocator_type;
|
1404
|
+
|
1405
|
+
impl_tree_t &tree()
|
1406
|
+
{ return m_flat_tree; }
|
1407
|
+
|
1408
|
+
const impl_tree_t &tree() const
|
1409
|
+
{ return m_flat_tree; }
|
1410
|
+
|
1172
1411
|
private:
|
1173
1412
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
1174
1413
|
|
@@ -1208,10 +1447,11 @@ class flat_multimap
|
|
1208
1447
|
//! <b>Effects</b>: Default constructs an empty flat_map.
|
1209
1448
|
//!
|
1210
1449
|
//! <b>Complexity</b>: Constant.
|
1211
|
-
flat_multimap()
|
1450
|
+
flat_multimap() BOOST_NOEXCEPT_IF(container_detail::is_nothrow_default_constructible<Allocator>::value &&
|
1451
|
+
container_detail::is_nothrow_default_constructible<Compare>::value)
|
1212
1452
|
: m_flat_tree()
|
1213
1453
|
{
|
1214
|
-
//
|
1454
|
+
//value_type must be std::pair<Key, T>
|
1215
1455
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1216
1456
|
}
|
1217
1457
|
|
@@ -1223,7 +1463,7 @@ class flat_multimap
|
|
1223
1463
|
const allocator_type& a = allocator_type())
|
1224
1464
|
: m_flat_tree(comp, container_detail::force<impl_allocator_type>(a))
|
1225
1465
|
{
|
1226
|
-
//
|
1466
|
+
//value_type must be std::pair<Key, T>
|
1227
1467
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1228
1468
|
}
|
1229
1469
|
|
@@ -1233,7 +1473,7 @@ class flat_multimap
|
|
1233
1473
|
explicit flat_multimap(const allocator_type& a)
|
1234
1474
|
: m_flat_tree(container_detail::force<impl_allocator_type>(a))
|
1235
1475
|
{
|
1236
|
-
//
|
1476
|
+
//value_type must be std::pair<Key, T>
|
1237
1477
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1238
1478
|
}
|
1239
1479
|
|
@@ -1248,7 +1488,7 @@ class flat_multimap
|
|
1248
1488
|
const allocator_type& a = allocator_type())
|
1249
1489
|
: m_flat_tree(false, first, last, comp, container_detail::force<impl_allocator_type>(a))
|
1250
1490
|
{
|
1251
|
-
//
|
1491
|
+
//value_type must be std::pair<Key, T>
|
1252
1492
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1253
1493
|
}
|
1254
1494
|
|
@@ -1261,7 +1501,7 @@ class flat_multimap
|
|
1261
1501
|
flat_multimap(InputIterator first, InputIterator last, const allocator_type& a)
|
1262
1502
|
: m_flat_tree(false, first, last, Compare(), container_detail::force<impl_allocator_type>(a))
|
1263
1503
|
{
|
1264
|
-
//
|
1504
|
+
//value_type must be std::pair<Key, T>
|
1265
1505
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1266
1506
|
}
|
1267
1507
|
|
@@ -1280,7 +1520,7 @@ class flat_multimap
|
|
1280
1520
|
const allocator_type& a = allocator_type())
|
1281
1521
|
: m_flat_tree(ordered_range, first, last, comp, a)
|
1282
1522
|
{
|
1283
|
-
//
|
1523
|
+
//value_type must be std::pair<Key, T>
|
1284
1524
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1285
1525
|
}
|
1286
1526
|
|
@@ -1293,7 +1533,7 @@ class flat_multimap
|
|
1293
1533
|
flat_multimap(std::initializer_list<value_type> il, const Compare& comp = Compare(), const allocator_type& a = allocator_type())
|
1294
1534
|
: m_flat_tree(false, il.begin(), il.end(), comp, container_detail::force<impl_allocator_type>(a))
|
1295
1535
|
{
|
1296
|
-
//
|
1536
|
+
//value_type must be std::pair<Key, T>
|
1297
1537
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1298
1538
|
}
|
1299
1539
|
|
@@ -1305,7 +1545,7 @@ class flat_multimap
|
|
1305
1545
|
flat_multimap(std::initializer_list<value_type> il, const allocator_type& a)
|
1306
1546
|
: m_flat_tree(false, il.begin(), il.end(), Compare(), container_detail::force<impl_allocator_type>(a))
|
1307
1547
|
{
|
1308
|
-
//
|
1548
|
+
//value_type must be std::pair<Key, T>
|
1309
1549
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1310
1550
|
}
|
1311
1551
|
|
@@ -1322,7 +1562,7 @@ class flat_multimap
|
|
1322
1562
|
const allocator_type& a = allocator_type())
|
1323
1563
|
: m_flat_tree(ordered_range, il.begin(), il.end(), comp, a)
|
1324
1564
|
{
|
1325
|
-
//
|
1565
|
+
//value_type must be std::pair<Key, T>
|
1326
1566
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1327
1567
|
}
|
1328
1568
|
#endif
|
@@ -1333,7 +1573,7 @@ class flat_multimap
|
|
1333
1573
|
flat_multimap(const flat_multimap& x)
|
1334
1574
|
: m_flat_tree(x.m_flat_tree)
|
1335
1575
|
{
|
1336
|
-
//
|
1576
|
+
//value_type must be std::pair<Key, T>
|
1337
1577
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1338
1578
|
}
|
1339
1579
|
|
@@ -1343,9 +1583,10 @@ class flat_multimap
|
|
1343
1583
|
//!
|
1344
1584
|
//! <b>Postcondition</b>: x is emptied.
|
1345
1585
|
flat_multimap(BOOST_RV_REF(flat_multimap) x)
|
1586
|
+
BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
|
1346
1587
|
: m_flat_tree(boost::move(x.m_flat_tree))
|
1347
1588
|
{
|
1348
|
-
//
|
1589
|
+
//value_type must be std::pair<Key, T>
|
1349
1590
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1350
1591
|
}
|
1351
1592
|
|
@@ -1355,7 +1596,7 @@ class flat_multimap
|
|
1355
1596
|
flat_multimap(const flat_multimap& x, const allocator_type &a)
|
1356
1597
|
: m_flat_tree(x.m_flat_tree, a)
|
1357
1598
|
{
|
1358
|
-
//
|
1599
|
+
//value_type must be std::pair<Key, T>
|
1359
1600
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1360
1601
|
}
|
1361
1602
|
|
@@ -1366,7 +1607,7 @@ class flat_multimap
|
|
1366
1607
|
flat_multimap(BOOST_RV_REF(flat_multimap) x, const allocator_type &a)
|
1367
1608
|
: m_flat_tree(boost::move(x.m_flat_tree), a)
|
1368
1609
|
{
|
1369
|
-
//
|
1610
|
+
//value_type must be std::pair<Key, T>
|
1370
1611
|
BOOST_STATIC_ASSERT((container_detail::is_same<std::pair<Key, T>, typename Allocator::value_type>::value));
|
1371
1612
|
}
|
1372
1613
|
|
@@ -1380,8 +1621,9 @@ class flat_multimap
|
|
1380
1621
|
//!
|
1381
1622
|
//! <b>Complexity</b>: Constant.
|
1382
1623
|
flat_multimap& operator=(BOOST_RV_REF(flat_multimap) x)
|
1383
|
-
BOOST_NOEXCEPT_IF(
|
1384
|
-
|
1624
|
+
BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
|
1625
|
+
allocator_traits_type::is_always_equal::value) &&
|
1626
|
+
boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
|
1385
1627
|
{ m_flat_tree = boost::move(x.m_flat_tree); return *this; }
|
1386
1628
|
|
1387
1629
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
@@ -1801,6 +2043,38 @@ class flat_multimap
|
|
1801
2043
|
{ m_flat_tree.insert_equal(ordered_range, il.begin(), il.end()); }
|
1802
2044
|
#endif
|
1803
2045
|
|
2046
|
+
//! <b>Requires</b>: this->get_allocator() == source.get_allocator().
|
2047
|
+
//!
|
2048
|
+
//! <b>Effects</b>: Extracts each element in source and insert it into a using
|
2049
|
+
//! the comparison object of *this.
|
2050
|
+
//!
|
2051
|
+
//! <b>Postcondition</b>: Pointers and references to the transferred elements of source refer
|
2052
|
+
//! to those same elements but as members of *this. Iterators referring to the transferred
|
2053
|
+
//! elements will continue to refer to their elements, but they now behave as iterators into *this,
|
2054
|
+
//! not into source.
|
2055
|
+
//!
|
2056
|
+
//! <b>Throws</b>: Nothing unless the comparison object throws.
|
2057
|
+
//!
|
2058
|
+
//! <b>Complexity</b>: N log(a.size() + N) (N has the value source.size())
|
2059
|
+
template<class C2>
|
2060
|
+
void merge(flat_multimap<Key, T, C2, Allocator>& source)
|
2061
|
+
{ m_flat_tree.merge_equal(source.tree()); }
|
2062
|
+
|
2063
|
+
//! @copydoc ::boost::container::flat_multimap::merge(flat_multimap<Key, T, C2, Allocator>&)
|
2064
|
+
template<class C2>
|
2065
|
+
void merge(BOOST_RV_REF_BEG flat_multimap<Key, T, C2, Allocator> BOOST_RV_REF_END source)
|
2066
|
+
{ return this->merge(static_cast<flat_multimap<Key, T, C2, Allocator>&>(source)); }
|
2067
|
+
|
2068
|
+
//! @copydoc ::boost::container::flat_multimap::merge(flat_multimap<Key, T, C2, Allocator>&)
|
2069
|
+
template<class C2>
|
2070
|
+
void merge(flat_map<Key, T, C2, Allocator>& source)
|
2071
|
+
{ m_flat_tree.merge_equal(source.tree()); }
|
2072
|
+
|
2073
|
+
//! @copydoc ::boost::container::flat_multimap::merge(flat_multimap<Key, T, C2, Allocator>&)
|
2074
|
+
template<class C2>
|
2075
|
+
void merge(BOOST_RV_REF_BEG flat_map<Key, T, C2, Allocator> BOOST_RV_REF_END source)
|
2076
|
+
{ return this->merge(static_cast<flat_map<Key, T, C2, Allocator>&>(source)); }
|
2077
|
+
|
1804
2078
|
//! <b>Effects</b>: Erases the element pointed to by p.
|
1805
2079
|
//!
|
1806
2080
|
//! <b>Returns</b>: Returns an iterator pointing to the element immediately
|