passenger 5.3.3 → 5.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +8 -0
- data/build/support/cxx_dependency_map.rb +151 -83
- data/dev/configkit-schemas/index.json +3 -3
- data/src/agent/Core/AdminPanelConnector.h +5 -3
- data/src/agent/Core/ApplicationPool/Common.h +1 -2
- data/src/agent/Core/ApplicationPool/Context.h +1 -2
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller.h +2 -1
- data/src/agent/Core/Controller/Config.h +6 -5
- data/src/agent/Core/Controller/Hooks.cpp +11 -0
- data/src/agent/Core/Controller/SendRequest.cpp +7 -7
- data/src/agent/Core/CoreMain.cpp +0 -2
- data/src/agent/Core/SpawningKit/Context.h +1 -3
- data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +17 -38
- data/src/agent/Core/SpawningKit/PipeWatcher.h +5 -3
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +13 -5
- data/src/agent/Shared/ApiServerUtils.h +2 -2
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -18
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +20 -20
- data/src/apache2_module/Config.cpp +7 -6
- data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Exceptions.h +0 -1
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +3 -2
- data/src/cxx_supportlib/ResourceLocator.h +3 -21
- data/src/cxx_supportlib/SafeLibev.h +6 -6
- data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -3
- data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpServer.h +27 -15
- data/src/cxx_supportlib/ServerKit/Server.h +2 -2
- data/src/cxx_supportlib/SystemTools/README.md +1 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +222 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.h +151 -0
- data/src/cxx_supportlib/Utils.cpp +1 -113
- data/src/cxx_supportlib/Utils.h +1 -29
- data/src/cxx_supportlib/Utils/MessagePassing.h +3 -3
- data/src/cxx_supportlib/WatchdogLauncher.h +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +31 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +149 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +140 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +145 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +75 -41
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +139 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +98 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +42 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +45 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +349 -109
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +959 -108
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +198 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +424 -284
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +116 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +99 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +235 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +613 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +1139 -1216
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +26 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +61 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +462 -226
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +20 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +404 -77
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +212 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +398 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +287 -165
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +65 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +27 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +41 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{function.hpp → functional.hpp} +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +158 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +90 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +117 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +24 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +34 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +152 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +80 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +19 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +93 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +43 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +54 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/{task_io_service.ipp → scheduler.ipp} +167 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +46 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +36 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +39 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +43 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +129 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +15 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +241 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +36 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +17 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +29 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +26 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +37 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +20 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +25 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +99 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +96 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +6 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +38 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +30 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service.hpp → scheduler.hpp} +57 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_operation.hpp → scheduler_operation.hpp} +19 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_thread_info.hpp → scheduler_thread_info.hpp} +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +37 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +54 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +45 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +29 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +29 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +74 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +413 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +343 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +172 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +228 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +11 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +86 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +92 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +549 -119
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +388 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +7 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +347 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +176 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +341 -379
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +173 -343
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +559 -206
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +254 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +855 -94
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +358 -449
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +165 -418
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +386 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +6 -743
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +79 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +111 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +164 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +104 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +185 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +821 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +23 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +31 -99
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +313 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +5 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +16 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +76 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +85 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +2 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +218 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +263 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +3 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +48 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +23 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +138 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +646 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +17 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +326 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +63 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +328 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1148 -247
- data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +736 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +422 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +32 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +114 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +85 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +89 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +33 -62
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +27 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +22 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +40 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +8 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +86 -102
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +90 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +209 -175
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +4 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +234 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +199 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +70 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +62 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +22 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +14 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +346 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +26 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +333 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +344 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +31 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +328 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +29 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +321 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +50 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +688 -220
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +25 -21
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +1 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +1 -36
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +108 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +189 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +238 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +1111 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +840 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +1656 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +402 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +1301 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +8 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +548 -126
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +134 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +36 -44
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +524 -96
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +27 -59
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +104 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +268 -340
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +22 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +55 -80
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +88 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +30 -103
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/string_ops.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +36 -36
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +0 -10
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +28 -30
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +26 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/diab.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +33 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +28 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +8 -142
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +37 -9
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{posix_features.hpp → detail/posix_features.hpp} +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_compiler_config.hpp → detail/select_compiler_config.hpp} +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_platform_config.hpp → detail/select_platform_config.hpp} +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_stdlib_config.hpp → detail/select_stdlib_config.hpp} +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{suffix.hpp → detail/suffix.hpp} +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/helper_macros.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/aix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/beos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cray.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/hpux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/irix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/qnxnto.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/symbian.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +155 -91
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/zos.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/pragma_message.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +21 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +279 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +58 -58
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +7 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +57 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +10 -10
- 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 +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +258 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +119 -134
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +55 -55
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +714 -282
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +4 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +37 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +41 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +69 -16
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair_key_mapped_of_value.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +180 -116
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -572
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +497 -248
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +326 -246
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +122 -78
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +285 -110
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +35 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +24 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +194 -142
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +395 -421
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/float_functions.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/hash_float.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/limits.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/extensions.hpp +112 -16
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash.hpp +195 -7
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +53 -44
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +80 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +233 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +26 -16
- data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +20 -34
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +8 -94
- data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +1 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +52 -52
- data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +14 -27
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +36 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +10 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +18 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +65 -20
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +32 -23
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +31 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +2 -264
- data/src/cxx_supportlib/vendor-modified/boost/enable_shared_from_this.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +38 -21
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +13 -47
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +508 -390
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +7 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +108 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +147 -64
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +36 -92
- data/src/cxx_supportlib/vendor-modified/boost/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +57 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +40 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +563 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +324 -1071
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/is_sorted.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +59 -143
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +334 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/unique.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +1 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/{intrusive → move}/detail/pointer_element.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +19 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/get_tag.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +85 -55
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/conversion_traits.hpp +0 -7
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +4 -13
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +26 -7
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +17 -21
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +499 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +126 -21
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +56 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +37 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/scoped_array.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/scoped_ptr.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/shared_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/shared_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +333 -656
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +15 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +21 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +11 -12
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +15 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +135 -90
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +140 -111
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +297 -49
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +118 -183
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_redef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_undef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +62 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/log.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +478 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +51 -85
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +320 -92
- data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +187 -112
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +137 -164
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +67 -37
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +65 -33
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +84 -158
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +143 -35
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_heap_alloc.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_only.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +579 -589
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +71 -14
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +370 -102
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +1177 -572
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +95 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +20 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +16 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_list_constructible.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv_ref.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -85
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +24 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +18 -12
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4018 -4052
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +57 -97
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +56 -95
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +2150 -1777
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -38
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1630 -1420
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -37
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +14 -17
- data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +44 -20
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/weak_ptr.hpp +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +8 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +7 -1
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +4 -4
- metadata +201 -47
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +0 -96
- data/src/cxx_supportlib/MessageClient.h +0 -309
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +0 -230
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +0 -156
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +0 -436
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +0 -176
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +0 -396
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +0 -526
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +0 -573
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +0 -503
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex_assert.hpp +0 -724
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +0 -155
- data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +0 -43
|
@@ -17,45 +17,48 @@
|
|
|
17
17
|
#include <memory>
|
|
18
18
|
|
|
19
19
|
namespace boost {
|
|
20
|
-
namespace unordered {
|
|
21
|
-
template <class K, class T, class H = boost::hash<K>,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class unordered_map;
|
|
25
|
-
|
|
26
|
-
template <class K, class T, class H, class P, class A>
|
|
27
|
-
inline bool operator==(
|
|
28
|
-
|
|
29
|
-
template <class K, class T, class H, class P, class A>
|
|
30
|
-
inline bool operator!=(
|
|
31
|
-
|
|
32
|
-
template <class K, class T, class H, class P, class A>
|
|
33
|
-
inline void swap(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
20
|
+
namespace unordered {
|
|
21
|
+
template <class K, class T, class H = boost::hash<K>,
|
|
22
|
+
class P = std::equal_to<K>,
|
|
23
|
+
class A = std::allocator<std::pair<const K, T> > >
|
|
24
|
+
class unordered_map;
|
|
25
|
+
|
|
26
|
+
template <class K, class T, class H, class P, class A>
|
|
27
|
+
inline bool operator==(
|
|
28
|
+
unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&);
|
|
29
|
+
template <class K, class T, class H, class P, class A>
|
|
30
|
+
inline bool operator!=(
|
|
31
|
+
unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&);
|
|
32
|
+
template <class K, class T, class H, class P, class A>
|
|
33
|
+
inline void swap(
|
|
34
|
+
unordered_map<K, T, H, P, A>& m1, unordered_map<K, T, H, P, A>& m2)
|
|
35
|
+
BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)));
|
|
36
|
+
|
|
37
|
+
template <class K, class T, class H = boost::hash<K>,
|
|
38
|
+
class P = std::equal_to<K>,
|
|
39
|
+
class A = std::allocator<std::pair<const K, T> > >
|
|
40
|
+
class unordered_multimap;
|
|
41
|
+
|
|
42
|
+
template <class K, class T, class H, class P, class A>
|
|
43
|
+
inline bool operator==(unordered_multimap<K, T, H, P, A> const&,
|
|
44
|
+
unordered_multimap<K, T, H, P, A> const&);
|
|
45
|
+
template <class K, class T, class H, class P, class A>
|
|
46
|
+
inline bool operator!=(unordered_multimap<K, T, H, P, A> const&,
|
|
47
|
+
unordered_multimap<K, T, H, P, A> const&);
|
|
48
|
+
template <class K, class T, class H, class P, class A>
|
|
49
|
+
inline void swap(unordered_multimap<K, T, H, P, A>& m1,
|
|
50
|
+
unordered_multimap<K, T, H, P, A>& m2)
|
|
51
|
+
BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)));
|
|
52
|
+
|
|
53
|
+
template <class N, class K, class T, class A> class node_handle_map;
|
|
54
|
+
template <class N, class K, class T, class A> struct insert_return_type_map;
|
|
55
|
+
}
|
|
53
56
|
|
|
54
|
-
using boost::unordered::unordered_map;
|
|
55
|
-
using boost::unordered::unordered_multimap;
|
|
56
|
-
using boost::unordered::swap;
|
|
57
|
-
using boost::unordered::operator==;
|
|
58
|
-
using boost::unordered::operator!=;
|
|
57
|
+
using boost::unordered::unordered_map;
|
|
58
|
+
using boost::unordered::unordered_multimap;
|
|
59
|
+
using boost::unordered::swap;
|
|
60
|
+
using boost::unordered::operator==;
|
|
61
|
+
using boost::unordered::operator!=;
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
#endif
|
|
@@ -25,1863 +25,2073 @@
|
|
|
25
25
|
|
|
26
26
|
#if defined(BOOST_MSVC)
|
|
27
27
|
#pragma warning(push)
|
|
28
|
+
// conditional expression is constant
|
|
29
|
+
#pragma warning(disable : 4127)
|
|
28
30
|
#if BOOST_MSVC >= 1400
|
|
29
|
-
|
|
30
|
-
//
|
|
31
|
-
|
|
31
|
+
// the inline specifier cannot be used when a friend declaration refers to a
|
|
32
|
+
// specialization of a function template
|
|
33
|
+
#pragma warning(disable : 4396)
|
|
32
34
|
#endif
|
|
33
35
|
#endif
|
|
34
36
|
|
|
35
37
|
namespace boost {
|
|
36
|
-
namespace unordered {
|
|
37
|
-
template <class T, class H, class P, class A> class unordered_set
|
|
38
|
-
{
|
|
38
|
+
namespace unordered {
|
|
39
|
+
template <class T, class H, class P, class A> class unordered_set
|
|
40
|
+
{
|
|
39
41
|
#if defined(BOOST_UNORDERED_USE_MOVE)
|
|
40
|
-
|
|
42
|
+
BOOST_COPYABLE_AND_MOVABLE(unordered_set)
|
|
41
43
|
#endif
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
template <typename, typename, typename, typename>
|
|
45
|
+
friend class unordered_multiset;
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
public:
|
|
48
|
+
typedef T key_type;
|
|
49
|
+
typedef T value_type;
|
|
50
|
+
typedef H hasher;
|
|
51
|
+
typedef P key_equal;
|
|
52
|
+
typedef A allocator_type;
|
|
51
53
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
private:
|
|
55
|
+
typedef boost::unordered::detail::set<A, T, H, P> types;
|
|
56
|
+
typedef typename types::value_allocator_traits value_allocator_traits;
|
|
57
|
+
typedef typename types::table table;
|
|
58
|
+
typedef typename table::node_pointer node_pointer;
|
|
59
|
+
typedef typename table::link_pointer link_pointer;
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
public:
|
|
62
|
+
typedef typename value_allocator_traits::pointer pointer;
|
|
63
|
+
typedef typename value_allocator_traits::const_pointer const_pointer;
|
|
60
64
|
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
typedef value_type& reference;
|
|
66
|
+
typedef value_type const& const_reference;
|
|
63
67
|
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
typedef std::size_t size_type;
|
|
69
|
+
typedef std::ptrdiff_t difference_type;
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
typedef typename table::iterator iterator;
|
|
72
|
+
typedef typename table::c_iterator const_iterator;
|
|
73
|
+
typedef typename table::l_iterator local_iterator;
|
|
74
|
+
typedef typename table::cl_iterator const_local_iterator;
|
|
75
|
+
typedef typename types::node_type node_type;
|
|
76
|
+
typedef typename types::insert_return_type insert_return_type;
|
|
73
77
|
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
private:
|
|
79
|
+
table table_;
|
|
76
80
|
|
|
77
|
-
|
|
78
|
-
|
|
81
|
+
public:
|
|
82
|
+
// constructors
|
|
79
83
|
|
|
80
|
-
|
|
84
|
+
unordered_set();
|
|
81
85
|
|
|
82
|
-
|
|
86
|
+
explicit unordered_set(size_type, const hasher& = hasher(),
|
|
83
87
|
const key_equal& = key_equal(),
|
|
84
88
|
const allocator_type& = allocator_type());
|
|
85
89
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
90
|
+
template <class InputIt>
|
|
91
|
+
unordered_set(InputIt, InputIt,
|
|
92
|
+
size_type = boost::unordered::detail::default_bucket_count,
|
|
93
|
+
const hasher& = hasher(), const key_equal& = key_equal(),
|
|
94
|
+
const allocator_type& = allocator_type());
|
|
89
95
|
|
|
90
|
-
|
|
96
|
+
unordered_set(unordered_set const&);
|
|
91
97
|
|
|
92
|
-
|
|
98
|
+
#if defined(BOOST_UNORDERED_USE_MOVE) || \
|
|
99
|
+
!defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
100
|
+
unordered_set(BOOST_RV_REF(unordered_set) other)
|
|
101
|
+
BOOST_NOEXCEPT_IF(table::nothrow_move_constructible)
|
|
102
|
+
: table_(other.table_, boost::unordered::detail::move_tag())
|
|
103
|
+
{
|
|
104
|
+
// The move is done in table_
|
|
105
|
+
}
|
|
106
|
+
#endif
|
|
93
107
|
|
|
94
|
-
|
|
95
|
-
unordered_set(InputIt, InputIt, size_type, const hasher& = hasher(),
|
|
96
|
-
const key_equal& = key_equal());
|
|
108
|
+
explicit unordered_set(allocator_type const&);
|
|
97
109
|
|
|
98
|
-
|
|
99
|
-
unordered_set(InputIt, InputIt, size_type, const hasher&, const key_equal&,
|
|
100
|
-
const allocator_type&);
|
|
110
|
+
unordered_set(unordered_set const&, allocator_type const&);
|
|
101
111
|
|
|
102
|
-
|
|
103
|
-
unordered_set(
|
|
104
|
-
InputIt, InputIt, size_type, const hasher&, const allocator_type&);
|
|
112
|
+
unordered_set(BOOST_RV_REF(unordered_set), allocator_type const&);
|
|
105
113
|
|
|
106
|
-
|
|
107
|
-
|
|
114
|
+
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
115
|
+
unordered_set(std::initializer_list<value_type>,
|
|
116
|
+
size_type = boost::unordered::detail::default_bucket_count,
|
|
117
|
+
const hasher& = hasher(), const key_equal& l = key_equal(),
|
|
118
|
+
const allocator_type& = allocator_type());
|
|
119
|
+
#endif
|
|
108
120
|
|
|
109
|
-
|
|
121
|
+
explicit unordered_set(size_type, const allocator_type&);
|
|
110
122
|
|
|
111
|
-
|
|
123
|
+
explicit unordered_set(size_type, const hasher&, const allocator_type&);
|
|
112
124
|
|
|
113
|
-
|
|
114
|
-
|
|
125
|
+
template <class InputIt>
|
|
126
|
+
unordered_set(InputIt, InputIt, size_type, const allocator_type&);
|
|
115
127
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
: table_(other.table_, boost::unordered::detail::move_tag())
|
|
120
|
-
{
|
|
121
|
-
}
|
|
122
|
-
#elif !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
123
|
-
unordered_set(unordered_set&& other)
|
|
124
|
-
BOOST_NOEXCEPT_IF(table::nothrow_move_constructible)
|
|
125
|
-
: table_(other.table_, boost::unordered::detail::move_tag())
|
|
126
|
-
{
|
|
127
|
-
}
|
|
128
|
-
#endif
|
|
128
|
+
template <class InputIt>
|
|
129
|
+
unordered_set(
|
|
130
|
+
InputIt, InputIt, size_type, const hasher&, const allocator_type&);
|
|
129
131
|
|
|
130
132
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
131
|
-
|
|
132
|
-
size_type = boost::unordered::detail::default_bucket_count,
|
|
133
|
-
const hasher& = hasher(), const key_equal& l = key_equal(),
|
|
134
|
-
const allocator_type& = allocator_type());
|
|
135
|
-
unordered_set(std::initializer_list<value_type>, size_type, const hasher&,
|
|
136
|
-
const allocator_type&);
|
|
137
|
-
unordered_set(
|
|
133
|
+
unordered_set(
|
|
138
134
|
std::initializer_list<value_type>, size_type, const allocator_type&);
|
|
135
|
+
|
|
136
|
+
unordered_set(std::initializer_list<value_type>, size_type, const hasher&,
|
|
137
|
+
const allocator_type&);
|
|
139
138
|
#endif
|
|
140
139
|
|
|
141
|
-
|
|
140
|
+
// Destructor
|
|
142
141
|
|
|
143
|
-
|
|
142
|
+
~unordered_set() BOOST_NOEXCEPT;
|
|
144
143
|
|
|
145
144
|
// Assign
|
|
146
145
|
|
|
147
146
|
#if defined(BOOST_UNORDERED_USE_MOVE)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
table_.assign(x.table_);
|
|
147
|
+
unordered_set& operator=(BOOST_COPY_ASSIGN_REF(unordered_set) x)
|
|
148
|
+
{
|
|
149
|
+
table_.assign(x.table_, boost::unordered::detail::true_type());
|
|
151
150
|
return *this;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
unordered_set& operator=(BOOST_RV_REF(unordered_set) x)
|
|
154
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
155
|
+
boost::is_nothrow_move_assignable<H>::value&&
|
|
156
|
+
boost::is_nothrow_move_assignable<P>::value)
|
|
157
|
+
{
|
|
158
|
+
table_.move_assign(x.table_, boost::unordered::detail::true_type());
|
|
157
159
|
return *this;
|
|
158
|
-
|
|
160
|
+
}
|
|
159
161
|
#else
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
table_.assign(x.table_);
|
|
162
|
+
unordered_set& operator=(unordered_set const& x)
|
|
163
|
+
{
|
|
164
|
+
table_.assign(x.table_, boost::unordered::detail::true_type());
|
|
163
165
|
return *this;
|
|
164
|
-
|
|
166
|
+
}
|
|
165
167
|
|
|
166
168
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
169
|
+
unordered_set& operator=(unordered_set&& x)
|
|
170
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
171
|
+
boost::is_nothrow_move_assignable<H>::value&&
|
|
172
|
+
boost::is_nothrow_move_assignable<P>::value)
|
|
173
|
+
{
|
|
174
|
+
table_.move_assign(x.table_, boost::unordered::detail::true_type());
|
|
170
175
|
return *this;
|
|
171
|
-
|
|
176
|
+
}
|
|
172
177
|
#endif
|
|
173
178
|
#endif
|
|
174
179
|
|
|
175
180
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
176
|
-
|
|
181
|
+
unordered_set& operator=(std::initializer_list<value_type>);
|
|
177
182
|
#endif
|
|
178
183
|
|
|
179
|
-
|
|
180
|
-
|
|
184
|
+
allocator_type get_allocator() const BOOST_NOEXCEPT
|
|
185
|
+
{
|
|
181
186
|
return table_.node_alloc();
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
// size and capacity
|
|
185
|
-
|
|
186
|
-
bool empty() const BOOST_NOEXCEPT { return table_.size_ == 0; }
|
|
187
|
-
|
|
188
|
-
size_type size() const BOOST_NOEXCEPT { return table_.size_; }
|
|
189
|
-
|
|
190
|
-
size_type max_size() const BOOST_NOEXCEPT;
|
|
187
|
+
}
|
|
191
188
|
|
|
192
|
-
|
|
189
|
+
// iterators
|
|
193
190
|
|
|
194
|
-
|
|
191
|
+
iterator begin() BOOST_NOEXCEPT { return iterator(table_.begin()); }
|
|
195
192
|
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
const_iterator begin() const BOOST_NOEXCEPT
|
|
194
|
+
{
|
|
198
195
|
return const_iterator(table_.begin());
|
|
199
|
-
|
|
196
|
+
}
|
|
200
197
|
|
|
201
|
-
|
|
198
|
+
iterator end() BOOST_NOEXCEPT { return iterator(); }
|
|
202
199
|
|
|
203
|
-
|
|
200
|
+
const_iterator end() const BOOST_NOEXCEPT { return const_iterator(); }
|
|
204
201
|
|
|
205
|
-
|
|
206
|
-
|
|
202
|
+
const_iterator cbegin() const BOOST_NOEXCEPT
|
|
203
|
+
{
|
|
207
204
|
return const_iterator(table_.begin());
|
|
208
|
-
|
|
205
|
+
}
|
|
209
206
|
|
|
210
|
-
|
|
207
|
+
const_iterator cend() const BOOST_NOEXCEPT { return const_iterator(); }
|
|
211
208
|
|
|
212
|
-
|
|
209
|
+
// size and capacity
|
|
213
210
|
|
|
214
|
-
|
|
215
|
-
{
|
|
216
|
-
return node_type(
|
|
217
|
-
table_.extract_by_iterator(position), table_.node_alloc());
|
|
218
|
-
}
|
|
211
|
+
bool empty() const BOOST_NOEXCEPT { return table_.size_ == 0; }
|
|
219
212
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
213
|
+
size_type size() const BOOST_NOEXCEPT { return table_.size_; }
|
|
214
|
+
|
|
215
|
+
size_type max_size() const BOOST_NOEXCEPT;
|
|
224
216
|
|
|
225
217
|
// emplace
|
|
226
218
|
|
|
227
219
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
228
|
-
template <class... Args>
|
|
229
|
-
std::pair<iterator, bool> emplace(BOOST_FWD_REF(Args)... args)
|
|
230
|
-
{
|
|
231
|
-
return table_.emplace(boost::forward<Args>(args)...);
|
|
232
|
-
}
|
|
233
220
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
return table_.
|
|
238
|
-
|
|
221
|
+
template <class... Args>
|
|
222
|
+
std::pair<iterator, bool> emplace(BOOST_FWD_REF(Args)... args)
|
|
223
|
+
{
|
|
224
|
+
return table_.emplace_unique(
|
|
225
|
+
table::extractor::extract(boost::forward<Args>(args)...),
|
|
226
|
+
boost::forward<Args>(args)...);
|
|
227
|
+
}
|
|
228
|
+
|
|
239
229
|
#else
|
|
240
230
|
|
|
241
|
-
#if !
|
|
231
|
+
#if !BOOST_UNORDERED_SUN_WORKAROUNDS1
|
|
242
232
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
233
|
+
// 0 argument emplace requires special treatment in case
|
|
234
|
+
// the container is instantiated with a value type that
|
|
235
|
+
// doesn't have a default constructor.
|
|
246
236
|
|
|
247
|
-
|
|
237
|
+
std::pair<iterator, bool> emplace(
|
|
248
238
|
boost::unordered::detail::empty_emplace =
|
|
249
|
-
|
|
239
|
+
boost::unordered::detail::empty_emplace(),
|
|
250
240
|
value_type v = value_type())
|
|
251
|
-
|
|
241
|
+
{
|
|
252
242
|
return this->emplace(boost::move(v));
|
|
253
|
-
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
#endif
|
|
246
|
+
|
|
247
|
+
template <typename A0>
|
|
248
|
+
std::pair<iterator, bool> emplace(BOOST_FWD_REF(A0) a0)
|
|
249
|
+
{
|
|
250
|
+
return table_.emplace_unique(
|
|
251
|
+
table::extractor::extract(boost::forward<A0>(a0)),
|
|
252
|
+
boost::unordered::detail::create_emplace_args(
|
|
253
|
+
boost::forward<A0>(a0)));
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
template <typename A0, typename A1>
|
|
257
|
+
std::pair<iterator, bool> emplace(
|
|
258
|
+
BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
|
|
259
|
+
{
|
|
260
|
+
return table_.emplace_unique(
|
|
261
|
+
table::extractor::extract(
|
|
262
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)),
|
|
263
|
+
boost::unordered::detail::create_emplace_args(
|
|
264
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)));
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
template <typename A0, typename A1, typename A2>
|
|
268
|
+
std::pair<iterator, bool> emplace(
|
|
269
|
+
BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
|
|
270
|
+
{
|
|
271
|
+
return table_.emplace_unique(
|
|
272
|
+
table::extractor::extract(
|
|
273
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)),
|
|
274
|
+
boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
|
|
275
|
+
boost::forward<A1>(a1), boost::forward<A2>(a2)));
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
#endif
|
|
279
|
+
|
|
280
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
281
|
+
|
|
282
|
+
template <class... Args>
|
|
283
|
+
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(Args)... args)
|
|
284
|
+
{
|
|
285
|
+
return table_.emplace_hint_unique(hint,
|
|
286
|
+
table::extractor::extract(boost::forward<Args>(args)...),
|
|
287
|
+
boost::forward<Args>(args)...);
|
|
288
|
+
}
|
|
254
289
|
|
|
255
|
-
|
|
290
|
+
#else
|
|
291
|
+
|
|
292
|
+
#if !BOOST_UNORDERED_SUN_WORKAROUNDS1
|
|
293
|
+
|
|
294
|
+
iterator emplace_hint(const_iterator hint,
|
|
256
295
|
boost::unordered::detail::empty_emplace =
|
|
257
|
-
|
|
296
|
+
boost::unordered::detail::empty_emplace(),
|
|
258
297
|
value_type v = value_type())
|
|
259
|
-
|
|
298
|
+
{
|
|
260
299
|
return this->emplace_hint(hint, boost::move(v));
|
|
261
|
-
|
|
300
|
+
}
|
|
262
301
|
|
|
263
302
|
#endif
|
|
264
303
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
return table_.
|
|
304
|
+
template <typename A0>
|
|
305
|
+
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0)
|
|
306
|
+
{
|
|
307
|
+
return table_.emplace_hint_unique(hint,
|
|
308
|
+
table::extractor::extract(boost::forward<A0>(a0)),
|
|
309
|
+
boost::unordered::detail::create_emplace_args(
|
|
269
310
|
boost::forward<A0>(a0)));
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
template <typename A0>
|
|
273
|
-
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0)
|
|
274
|
-
{
|
|
275
|
-
return table_.emplace_hint(
|
|
276
|
-
hint, boost::unordered::detail::create_emplace_args(
|
|
277
|
-
boost::forward<A0>(a0)));
|
|
278
|
-
}
|
|
311
|
+
}
|
|
279
312
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
|
|
283
|
-
|
|
284
|
-
return table_.
|
|
313
|
+
template <typename A0, typename A1>
|
|
314
|
+
iterator emplace_hint(
|
|
315
|
+
const_iterator hint, BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
|
|
316
|
+
{
|
|
317
|
+
return table_.emplace_hint_unique(hint,
|
|
318
|
+
table::extractor::extract(
|
|
319
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)),
|
|
320
|
+
boost::unordered::detail::create_emplace_args(
|
|
285
321
|
boost::forward<A0>(a0), boost::forward<A1>(a1)));
|
|
286
|
-
|
|
322
|
+
}
|
|
287
323
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
return table_.
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
324
|
+
template <typename A0, typename A1, typename A2>
|
|
325
|
+
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0,
|
|
326
|
+
BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
|
|
327
|
+
{
|
|
328
|
+
return table_.emplace_hint_unique(hint,
|
|
329
|
+
table::extractor::extract(
|
|
330
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)),
|
|
331
|
+
boost::unordered::detail::create_emplace_args(boost::forward<A0>(a0),
|
|
332
|
+
boost::forward<A1>(a1), boost::forward<A2>(a2)));
|
|
333
|
+
}
|
|
296
334
|
|
|
297
|
-
|
|
298
|
-
std::pair<iterator, bool> emplace(
|
|
299
|
-
BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
|
|
300
|
-
{
|
|
301
|
-
return table_.emplace(boost::unordered::detail::create_emplace_args(
|
|
302
|
-
boost::forward<A0>(a0), boost::forward<A1>(a1),
|
|
303
|
-
boost::forward<A2>(a2)));
|
|
304
|
-
}
|
|
335
|
+
#endif
|
|
305
336
|
|
|
306
|
-
|
|
307
|
-
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0,
|
|
308
|
-
BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
|
|
309
|
-
{
|
|
310
|
-
return table_.emplace_hint(
|
|
311
|
-
hint, boost::unordered::detail::create_emplace_args(
|
|
312
|
-
boost::forward<A0>(a0), boost::forward<A1>(a1),
|
|
313
|
-
boost::forward<A2>(a2)));
|
|
314
|
-
}
|
|
337
|
+
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
315
338
|
|
|
316
339
|
#define BOOST_UNORDERED_EMPLACE(z, n, _) \
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
340
|
+
template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
341
|
+
std::pair<iterator, bool> emplace( \
|
|
342
|
+
BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
|
|
343
|
+
{ \
|
|
344
|
+
return table_.emplace_unique( \
|
|
345
|
+
table::extractor::extract( \
|
|
346
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)), \
|
|
347
|
+
boost::unordered::detail::create_emplace_args( \
|
|
348
|
+
BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
|
|
349
|
+
} \
|
|
324
350
|
\
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
351
|
+
template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
352
|
+
iterator emplace_hint( \
|
|
353
|
+
const_iterator hint, BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
|
|
354
|
+
{ \
|
|
355
|
+
return table_.emplace_hint_unique(hint, \
|
|
356
|
+
table::extractor::extract( \
|
|
357
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)), \
|
|
358
|
+
boost::unordered::detail::create_emplace_args( \
|
|
359
|
+
BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))); \
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
BOOST_UNORDERED_EMPLACE(1, 4, _)
|
|
363
|
+
BOOST_UNORDERED_EMPLACE(1, 5, _)
|
|
364
|
+
BOOST_UNORDERED_EMPLACE(1, 6, _)
|
|
365
|
+
BOOST_UNORDERED_EMPLACE(1, 7, _)
|
|
366
|
+
BOOST_UNORDERED_EMPLACE(1, 8, _)
|
|
367
|
+
BOOST_UNORDERED_EMPLACE(1, 9, _)
|
|
368
|
+
BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
|
|
369
|
+
BOOST_UNORDERED_EMPLACE, _)
|
|
336
370
|
|
|
337
371
|
#undef BOOST_UNORDERED_EMPLACE
|
|
338
372
|
|
|
339
373
|
#endif
|
|
340
374
|
|
|
341
|
-
|
|
342
|
-
|
|
375
|
+
std::pair<iterator, bool> insert(value_type const& x)
|
|
376
|
+
{
|
|
343
377
|
return this->emplace(x);
|
|
344
|
-
|
|
378
|
+
}
|
|
345
379
|
|
|
346
|
-
|
|
347
|
-
|
|
380
|
+
std::pair<iterator, bool> insert(BOOST_UNORDERED_RV_REF(value_type) x)
|
|
381
|
+
{
|
|
348
382
|
return this->emplace(boost::move(x));
|
|
349
|
-
|
|
383
|
+
}
|
|
350
384
|
|
|
351
|
-
|
|
352
|
-
|
|
385
|
+
iterator insert(const_iterator hint, value_type const& x)
|
|
386
|
+
{
|
|
353
387
|
return this->emplace_hint(hint, x);
|
|
354
|
-
|
|
388
|
+
}
|
|
355
389
|
|
|
356
|
-
|
|
357
|
-
|
|
390
|
+
iterator insert(const_iterator hint, BOOST_UNORDERED_RV_REF(value_type) x)
|
|
391
|
+
{
|
|
358
392
|
return this->emplace_hint(hint, boost::move(x));
|
|
359
|
-
|
|
393
|
+
}
|
|
360
394
|
|
|
361
|
-
|
|
395
|
+
template <class InputIt> void insert(InputIt, InputIt);
|
|
362
396
|
|
|
363
397
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
364
|
-
|
|
398
|
+
void insert(std::initializer_list<value_type>);
|
|
365
399
|
#endif
|
|
366
400
|
|
|
367
|
-
|
|
368
|
-
|
|
401
|
+
// extract
|
|
402
|
+
|
|
403
|
+
node_type extract(const_iterator position)
|
|
404
|
+
{
|
|
405
|
+
return node_type(
|
|
406
|
+
table_.extract_by_iterator_unique(position), table_.node_alloc());
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
node_type extract(const key_type& k)
|
|
410
|
+
{
|
|
411
|
+
return node_type(table_.extract_by_key(k), table_.node_alloc());
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
insert_return_type insert(BOOST_RV_REF(node_type) np)
|
|
415
|
+
{
|
|
369
416
|
insert_return_type result;
|
|
370
|
-
table_.
|
|
417
|
+
table_.move_insert_node_type_unique(np, result);
|
|
371
418
|
return boost::move(result);
|
|
372
|
-
|
|
419
|
+
}
|
|
373
420
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
return table_.
|
|
377
|
-
|
|
421
|
+
iterator insert(const_iterator hint, BOOST_RV_REF(node_type) np)
|
|
422
|
+
{
|
|
423
|
+
return table_.move_insert_node_type_with_hint_unique(hint, np);
|
|
424
|
+
}
|
|
378
425
|
|
|
379
|
-
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
426
|
+
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
|
|
427
|
+
(BOOST_COMP_GNUC && BOOST_COMP_GNUC < BOOST_VERSION_NUMBER(4, 6, 0))
|
|
428
|
+
private:
|
|
429
|
+
// Note: Use r-value node_type to insert.
|
|
430
|
+
insert_return_type insert(node_type&);
|
|
431
|
+
iterator insert(const_iterator, node_type& np);
|
|
384
432
|
|
|
385
|
-
|
|
433
|
+
public:
|
|
386
434
|
#endif
|
|
387
435
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
436
|
+
iterator erase(const_iterator);
|
|
437
|
+
size_type erase(const key_type&);
|
|
438
|
+
iterator erase(const_iterator, const_iterator);
|
|
439
|
+
BOOST_UNORDERED_DEPRECATED("Use erase instead")
|
|
440
|
+
void quick_erase(const_iterator it) { erase(it); }
|
|
441
|
+
BOOST_UNORDERED_DEPRECATED("Use erase instead")
|
|
442
|
+
void erase_return_void(const_iterator it) { erase(it); }
|
|
393
443
|
|
|
394
|
-
|
|
395
|
-
|
|
444
|
+
void swap(unordered_set&)
|
|
445
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
446
|
+
boost::is_nothrow_swappable<H>::value&&
|
|
447
|
+
boost::is_nothrow_swappable<P>::value);
|
|
448
|
+
void clear() BOOST_NOEXCEPT { table_.clear_impl(); }
|
|
396
449
|
|
|
397
|
-
|
|
398
|
-
|
|
450
|
+
template <typename H2, typename P2>
|
|
451
|
+
void merge(boost::unordered_set<T, H2, P2, A>& source);
|
|
399
452
|
|
|
400
453
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
401
|
-
|
|
402
|
-
|
|
454
|
+
template <typename H2, typename P2>
|
|
455
|
+
void merge(boost::unordered_set<T, H2, P2, A>&& source);
|
|
403
456
|
#endif
|
|
404
457
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
void merge(boost::unordered_multiset<T, H2, P2, A>& source);
|
|
458
|
+
template <typename H2, typename P2>
|
|
459
|
+
void merge(boost::unordered_multiset<T, H2, P2, A>& source);
|
|
408
460
|
|
|
409
461
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
#endif
|
|
462
|
+
template <typename H2, typename P2>
|
|
463
|
+
void merge(boost::unordered_multiset<T, H2, P2, A>&& source);
|
|
413
464
|
#endif
|
|
414
465
|
|
|
415
|
-
|
|
466
|
+
// observers
|
|
416
467
|
|
|
417
|
-
|
|
418
|
-
|
|
468
|
+
hasher hash_function() const;
|
|
469
|
+
key_equal key_eq() const;
|
|
419
470
|
|
|
420
|
-
|
|
471
|
+
// lookup
|
|
421
472
|
|
|
422
|
-
|
|
473
|
+
const_iterator find(const key_type&) const;
|
|
423
474
|
|
|
424
|
-
|
|
475
|
+
template <class CompatibleKey, class CompatibleHash,
|
|
425
476
|
class CompatiblePredicate>
|
|
426
|
-
|
|
477
|
+
const_iterator find(CompatibleKey const&, CompatibleHash const&,
|
|
427
478
|
CompatiblePredicate const&) const;
|
|
428
479
|
|
|
429
|
-
|
|
480
|
+
size_type count(const key_type&) const;
|
|
430
481
|
|
|
431
|
-
|
|
482
|
+
std::pair<const_iterator, const_iterator> equal_range(
|
|
432
483
|
const key_type&) const;
|
|
433
484
|
|
|
434
|
-
|
|
485
|
+
// bucket interface
|
|
435
486
|
|
|
436
|
-
|
|
437
|
-
|
|
487
|
+
size_type bucket_count() const BOOST_NOEXCEPT
|
|
488
|
+
{
|
|
438
489
|
return table_.bucket_count_;
|
|
439
|
-
|
|
490
|
+
}
|
|
440
491
|
|
|
441
|
-
|
|
442
|
-
|
|
492
|
+
size_type max_bucket_count() const BOOST_NOEXCEPT
|
|
493
|
+
{
|
|
443
494
|
return table_.max_bucket_count();
|
|
444
|
-
|
|
495
|
+
}
|
|
445
496
|
|
|
446
|
-
|
|
497
|
+
size_type bucket_size(size_type) const;
|
|
447
498
|
|
|
448
|
-
|
|
449
|
-
|
|
499
|
+
size_type bucket(const key_type& k) const
|
|
500
|
+
{
|
|
450
501
|
return table_.hash_to_bucket(table_.hash(k));
|
|
451
|
-
|
|
502
|
+
}
|
|
452
503
|
|
|
453
|
-
|
|
454
|
-
|
|
504
|
+
local_iterator begin(size_type n)
|
|
505
|
+
{
|
|
455
506
|
return local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
456
|
-
|
|
507
|
+
}
|
|
457
508
|
|
|
458
|
-
|
|
459
|
-
|
|
509
|
+
const_local_iterator begin(size_type n) const
|
|
510
|
+
{
|
|
460
511
|
return const_local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
461
|
-
|
|
512
|
+
}
|
|
462
513
|
|
|
463
|
-
|
|
514
|
+
local_iterator end(size_type) { return local_iterator(); }
|
|
464
515
|
|
|
465
|
-
|
|
516
|
+
const_local_iterator end(size_type) const
|
|
517
|
+
{
|
|
518
|
+
return const_local_iterator();
|
|
519
|
+
}
|
|
466
520
|
|
|
467
|
-
|
|
468
|
-
|
|
521
|
+
const_local_iterator cbegin(size_type n) const
|
|
522
|
+
{
|
|
469
523
|
return const_local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
470
|
-
|
|
524
|
+
}
|
|
471
525
|
|
|
472
|
-
|
|
473
|
-
|
|
526
|
+
const_local_iterator cend(size_type) const
|
|
527
|
+
{
|
|
474
528
|
return const_local_iterator();
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
// hash policy
|
|
529
|
+
}
|
|
478
530
|
|
|
479
|
-
|
|
531
|
+
// hash policy
|
|
480
532
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
533
|
+
float load_factor() const BOOST_NOEXCEPT;
|
|
534
|
+
float max_load_factor() const BOOST_NOEXCEPT { return table_.mlf_; }
|
|
535
|
+
void max_load_factor(float) BOOST_NOEXCEPT;
|
|
536
|
+
void rehash(size_type);
|
|
537
|
+
void reserve(size_type);
|
|
485
538
|
|
|
486
539
|
#if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582)
|
|
487
|
-
|
|
540
|
+
friend bool operator==
|
|
488
541
|
<T, H, P, A>(unordered_set const&, unordered_set const&);
|
|
489
|
-
|
|
542
|
+
friend bool operator!=
|
|
490
543
|
<T, H, P, A>(unordered_set const&, unordered_set const&);
|
|
491
544
|
#endif
|
|
492
|
-
}; // class template unordered_set
|
|
545
|
+
}; // class template unordered_set
|
|
546
|
+
|
|
547
|
+
#if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES
|
|
548
|
+
|
|
549
|
+
template <class InputIterator,
|
|
550
|
+
class Hash =
|
|
551
|
+
boost::hash<typename std::iterator_traits<InputIterator>::value_type>,
|
|
552
|
+
class Pred =
|
|
553
|
+
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
554
|
+
class Allocator = std::allocator<
|
|
555
|
+
typename std::iterator_traits<InputIterator>::value_type> >
|
|
556
|
+
unordered_set(InputIterator, InputIterator,
|
|
557
|
+
std::size_t = boost::unordered::detail::default_bucket_count,
|
|
558
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
559
|
+
->unordered_set<typename std::iterator_traits<InputIterator>::value_type,
|
|
560
|
+
Hash, Pred, Allocator>;
|
|
561
|
+
|
|
562
|
+
template <class T, class Hash = boost::hash<T>,
|
|
563
|
+
class Pred = std::equal_to<T>, class Allocator = std::allocator<T> >
|
|
564
|
+
unordered_set(std::initializer_list<T>,
|
|
565
|
+
std::size_t = boost::unordered::detail::default_bucket_count,
|
|
566
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
567
|
+
->unordered_set<T, Hash, Pred, Allocator>;
|
|
568
|
+
|
|
569
|
+
template <class InputIterator, class Allocator>
|
|
570
|
+
unordered_set(InputIterator, InputIterator, std::size_t, Allocator)
|
|
571
|
+
->unordered_set<typename std::iterator_traits<InputIterator>::value_type,
|
|
572
|
+
boost::hash<typename std::iterator_traits<InputIterator>::value_type>,
|
|
573
|
+
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
574
|
+
Allocator>;
|
|
575
|
+
|
|
576
|
+
template <class InputIterator, class Hash, class Allocator>
|
|
577
|
+
unordered_set(InputIterator, InputIterator, std::size_t, Hash, Allocator)
|
|
578
|
+
->unordered_set<typename std::iterator_traits<InputIterator>::value_type,
|
|
579
|
+
Hash,
|
|
580
|
+
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
581
|
+
Allocator>;
|
|
582
|
+
|
|
583
|
+
template <class T, class Allocator>
|
|
584
|
+
unordered_set(std::initializer_list<T>, std::size_t, Allocator)
|
|
585
|
+
->unordered_set<T, boost::hash<T>, std::equal_to<T>, Allocator>;
|
|
586
|
+
|
|
587
|
+
template <class T, class Hash, class Allocator>
|
|
588
|
+
unordered_set(std::initializer_list<T>, std::size_t, Hash, Allocator)
|
|
589
|
+
->unordered_set<T, Hash, std::equal_to<T>, Allocator>;
|
|
590
|
+
|
|
591
|
+
#endif
|
|
493
592
|
|
|
494
|
-
template <class T, class H, class P, class A> class unordered_multiset
|
|
495
|
-
{
|
|
593
|
+
template <class T, class H, class P, class A> class unordered_multiset
|
|
594
|
+
{
|
|
496
595
|
#if defined(BOOST_UNORDERED_USE_MOVE)
|
|
497
|
-
|
|
596
|
+
BOOST_COPYABLE_AND_MOVABLE(unordered_multiset)
|
|
498
597
|
#endif
|
|
499
|
-
|
|
500
|
-
|
|
598
|
+
template <typename, typename, typename, typename>
|
|
599
|
+
friend class unordered_set;
|
|
501
600
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
601
|
+
public:
|
|
602
|
+
typedef T key_type;
|
|
603
|
+
typedef T value_type;
|
|
604
|
+
typedef H hasher;
|
|
605
|
+
typedef P key_equal;
|
|
606
|
+
typedef A allocator_type;
|
|
508
607
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
608
|
+
private:
|
|
609
|
+
typedef boost::unordered::detail::set<A, T, H, P> types;
|
|
610
|
+
typedef typename types::value_allocator_traits value_allocator_traits;
|
|
611
|
+
typedef typename types::table table;
|
|
612
|
+
typedef typename table::node_pointer node_pointer;
|
|
613
|
+
typedef typename table::link_pointer link_pointer;
|
|
513
614
|
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
615
|
+
public:
|
|
616
|
+
typedef typename value_allocator_traits::pointer pointer;
|
|
617
|
+
typedef typename value_allocator_traits::const_pointer const_pointer;
|
|
517
618
|
|
|
518
|
-
|
|
519
|
-
|
|
619
|
+
typedef value_type& reference;
|
|
620
|
+
typedef value_type const& const_reference;
|
|
520
621
|
|
|
521
|
-
|
|
522
|
-
|
|
622
|
+
typedef std::size_t size_type;
|
|
623
|
+
typedef std::ptrdiff_t difference_type;
|
|
523
624
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
625
|
+
typedef typename table::iterator iterator;
|
|
626
|
+
typedef typename table::c_iterator const_iterator;
|
|
627
|
+
typedef typename table::l_iterator local_iterator;
|
|
628
|
+
typedef typename table::cl_iterator const_local_iterator;
|
|
629
|
+
typedef typename types::node_type node_type;
|
|
529
630
|
|
|
530
|
-
|
|
531
|
-
|
|
631
|
+
private:
|
|
632
|
+
table table_;
|
|
532
633
|
|
|
533
|
-
|
|
534
|
-
|
|
634
|
+
public:
|
|
635
|
+
// constructors
|
|
535
636
|
|
|
536
|
-
|
|
637
|
+
unordered_multiset();
|
|
537
638
|
|
|
538
|
-
|
|
639
|
+
explicit unordered_multiset(size_type, const hasher& = hasher(),
|
|
539
640
|
const key_equal& = key_equal(),
|
|
540
641
|
const allocator_type& = allocator_type());
|
|
541
642
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
643
|
+
template <class InputIt>
|
|
644
|
+
unordered_multiset(InputIt, InputIt,
|
|
645
|
+
size_type = boost::unordered::detail::default_bucket_count,
|
|
646
|
+
const hasher& = hasher(), const key_equal& = key_equal(),
|
|
647
|
+
const allocator_type& = allocator_type());
|
|
546
648
|
|
|
547
|
-
|
|
649
|
+
unordered_multiset(unordered_multiset const&);
|
|
548
650
|
|
|
549
|
-
|
|
651
|
+
#if defined(BOOST_UNORDERED_USE_MOVE) || \
|
|
652
|
+
!defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
653
|
+
unordered_multiset(BOOST_RV_REF(unordered_multiset) other)
|
|
654
|
+
BOOST_NOEXCEPT_IF(table::nothrow_move_constructible)
|
|
655
|
+
: table_(other.table_, boost::unordered::detail::move_tag())
|
|
656
|
+
{
|
|
657
|
+
// The move is done in table_
|
|
658
|
+
}
|
|
659
|
+
#endif
|
|
550
660
|
|
|
551
|
-
|
|
552
|
-
unordered_multiset(InputIt, InputIt, size_type, const hasher& = hasher(),
|
|
553
|
-
const key_equal& = key_equal());
|
|
661
|
+
explicit unordered_multiset(allocator_type const&);
|
|
554
662
|
|
|
555
|
-
|
|
556
|
-
unordered_multiset(InputIt, InputIt, size_type, const hasher&,
|
|
557
|
-
const key_equal&, const allocator_type&);
|
|
663
|
+
unordered_multiset(unordered_multiset const&, allocator_type const&);
|
|
558
664
|
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
InputIt, InputIt, size_type, const hasher&, const allocator_type&);
|
|
665
|
+
unordered_multiset(
|
|
666
|
+
BOOST_RV_REF(unordered_multiset), allocator_type const&);
|
|
562
667
|
|
|
563
|
-
|
|
564
|
-
|
|
668
|
+
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
669
|
+
unordered_multiset(std::initializer_list<value_type>,
|
|
670
|
+
size_type = boost::unordered::detail::default_bucket_count,
|
|
671
|
+
const hasher& = hasher(), const key_equal& l = key_equal(),
|
|
672
|
+
const allocator_type& = allocator_type());
|
|
673
|
+
#endif
|
|
565
674
|
|
|
566
|
-
|
|
675
|
+
explicit unordered_multiset(size_type, const allocator_type&);
|
|
567
676
|
|
|
568
|
-
|
|
677
|
+
explicit unordered_multiset(
|
|
678
|
+
size_type, const hasher&, const allocator_type&);
|
|
569
679
|
|
|
570
|
-
|
|
571
|
-
|
|
680
|
+
template <class InputIt>
|
|
681
|
+
unordered_multiset(InputIt, InputIt, size_type, const allocator_type&);
|
|
572
682
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
: table_(other.table_, boost::unordered::detail::move_tag())
|
|
577
|
-
{
|
|
578
|
-
}
|
|
579
|
-
#elif !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
580
|
-
unordered_multiset(unordered_multiset&& other)
|
|
581
|
-
BOOST_NOEXCEPT_IF(table::nothrow_move_constructible)
|
|
582
|
-
: table_(other.table_, boost::unordered::detail::move_tag())
|
|
583
|
-
{
|
|
584
|
-
}
|
|
585
|
-
#endif
|
|
683
|
+
template <class InputIt>
|
|
684
|
+
unordered_multiset(
|
|
685
|
+
InputIt, InputIt, size_type, const hasher&, const allocator_type&);
|
|
586
686
|
|
|
587
687
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
588
|
-
|
|
589
|
-
size_type = boost::unordered::detail::default_bucket_count,
|
|
590
|
-
const hasher& = hasher(), const key_equal& l = key_equal(),
|
|
591
|
-
const allocator_type& = allocator_type());
|
|
592
|
-
unordered_multiset(std::initializer_list<value_type>, size_type,
|
|
593
|
-
const hasher&, const allocator_type&);
|
|
594
|
-
unordered_multiset(
|
|
688
|
+
unordered_multiset(
|
|
595
689
|
std::initializer_list<value_type>, size_type, const allocator_type&);
|
|
690
|
+
|
|
691
|
+
unordered_multiset(std::initializer_list<value_type>, size_type,
|
|
692
|
+
const hasher&, const allocator_type&);
|
|
596
693
|
#endif
|
|
597
694
|
|
|
598
|
-
|
|
695
|
+
// Destructor
|
|
599
696
|
|
|
600
|
-
|
|
697
|
+
~unordered_multiset() BOOST_NOEXCEPT;
|
|
601
698
|
|
|
602
699
|
// Assign
|
|
603
700
|
|
|
604
701
|
#if defined(BOOST_UNORDERED_USE_MOVE)
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
table_.assign(x.table_);
|
|
702
|
+
unordered_multiset& operator=(BOOST_COPY_ASSIGN_REF(unordered_multiset) x)
|
|
703
|
+
{
|
|
704
|
+
table_.assign(x.table_, boost::unordered::detail::false_type());
|
|
608
705
|
return *this;
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
unordered_multiset& operator=(BOOST_RV_REF(unordered_multiset) x)
|
|
709
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
710
|
+
boost::is_nothrow_move_assignable<H>::value&&
|
|
711
|
+
boost::is_nothrow_move_assignable<P>::value)
|
|
712
|
+
{
|
|
713
|
+
table_.move_assign(x.table_, boost::unordered::detail::false_type());
|
|
614
714
|
return *this;
|
|
615
|
-
|
|
715
|
+
}
|
|
616
716
|
#else
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
table_.assign(x.table_);
|
|
717
|
+
unordered_multiset& operator=(unordered_multiset const& x)
|
|
718
|
+
{
|
|
719
|
+
table_.assign(x.table_, boost::unordered::detail::false_type());
|
|
620
720
|
return *this;
|
|
621
|
-
|
|
721
|
+
}
|
|
622
722
|
|
|
623
723
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
724
|
+
unordered_multiset& operator=(unordered_multiset&& x)
|
|
725
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
726
|
+
boost::is_nothrow_move_assignable<H>::value&&
|
|
727
|
+
boost::is_nothrow_move_assignable<P>::value)
|
|
728
|
+
{
|
|
729
|
+
table_.move_assign(x.table_, boost::unordered::detail::false_type());
|
|
627
730
|
return *this;
|
|
628
|
-
|
|
731
|
+
}
|
|
629
732
|
#endif
|
|
630
733
|
#endif
|
|
631
734
|
|
|
632
735
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
633
|
-
|
|
736
|
+
unordered_multiset& operator=(std::initializer_list<value_type>);
|
|
634
737
|
#endif
|
|
635
738
|
|
|
636
|
-
|
|
637
|
-
|
|
739
|
+
allocator_type get_allocator() const BOOST_NOEXCEPT
|
|
740
|
+
{
|
|
638
741
|
return table_.node_alloc();
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
// size and capacity
|
|
642
|
-
|
|
643
|
-
bool empty() const BOOST_NOEXCEPT { return table_.size_ == 0; }
|
|
742
|
+
}
|
|
644
743
|
|
|
645
|
-
|
|
744
|
+
// iterators
|
|
646
745
|
|
|
647
|
-
|
|
746
|
+
iterator begin() BOOST_NOEXCEPT { return iterator(table_.begin()); }
|
|
648
747
|
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
iterator begin() BOOST_NOEXCEPT { return iterator(table_.begin()); }
|
|
652
|
-
|
|
653
|
-
const_iterator begin() const BOOST_NOEXCEPT
|
|
654
|
-
{
|
|
748
|
+
const_iterator begin() const BOOST_NOEXCEPT
|
|
749
|
+
{
|
|
655
750
|
return const_iterator(table_.begin());
|
|
656
|
-
|
|
751
|
+
}
|
|
657
752
|
|
|
658
|
-
|
|
753
|
+
iterator end() BOOST_NOEXCEPT { return iterator(); }
|
|
659
754
|
|
|
660
|
-
|
|
755
|
+
const_iterator end() const BOOST_NOEXCEPT { return const_iterator(); }
|
|
661
756
|
|
|
662
|
-
|
|
663
|
-
|
|
757
|
+
const_iterator cbegin() const BOOST_NOEXCEPT
|
|
758
|
+
{
|
|
664
759
|
return const_iterator(table_.begin());
|
|
665
|
-
|
|
760
|
+
}
|
|
666
761
|
|
|
667
|
-
|
|
762
|
+
const_iterator cend() const BOOST_NOEXCEPT { return const_iterator(); }
|
|
668
763
|
|
|
669
|
-
|
|
764
|
+
// size and capacity
|
|
670
765
|
|
|
671
|
-
|
|
672
|
-
{
|
|
673
|
-
return node_type(
|
|
674
|
-
table_.extract_by_iterator(position), table_.node_alloc());
|
|
675
|
-
}
|
|
766
|
+
bool empty() const BOOST_NOEXCEPT { return table_.size_ == 0; }
|
|
676
767
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
}
|
|
768
|
+
size_type size() const BOOST_NOEXCEPT { return table_.size_; }
|
|
769
|
+
|
|
770
|
+
size_type max_size() const BOOST_NOEXCEPT;
|
|
681
771
|
|
|
682
772
|
// emplace
|
|
683
773
|
|
|
684
774
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
685
|
-
template <class... Args> iterator emplace(BOOST_FWD_REF(Args)... args)
|
|
686
|
-
{
|
|
687
|
-
return table_.emplace(boost::forward<Args>(args)...);
|
|
688
|
-
}
|
|
689
775
|
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
776
|
+
template <class... Args> iterator emplace(BOOST_FWD_REF(Args)... args)
|
|
777
|
+
{
|
|
778
|
+
return iterator(table_.emplace_equiv(
|
|
779
|
+
boost::unordered::detail::func::construct_node_from_args(
|
|
780
|
+
table_.node_alloc(), boost::forward<Args>(args)...)));
|
|
781
|
+
}
|
|
782
|
+
|
|
695
783
|
#else
|
|
696
784
|
|
|
697
|
-
#if !
|
|
785
|
+
#if !BOOST_UNORDERED_SUN_WORKAROUNDS1
|
|
698
786
|
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
787
|
+
// 0 argument emplace requires special treatment in case
|
|
788
|
+
// the container is instantiated with a value type that
|
|
789
|
+
// doesn't have a default constructor.
|
|
702
790
|
|
|
703
|
-
|
|
791
|
+
iterator emplace(boost::unordered::detail::empty_emplace =
|
|
704
792
|
boost::unordered::detail::empty_emplace(),
|
|
705
793
|
value_type v = value_type())
|
|
706
|
-
|
|
794
|
+
{
|
|
707
795
|
return this->emplace(boost::move(v));
|
|
708
|
-
|
|
796
|
+
}
|
|
709
797
|
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
798
|
+
#endif
|
|
799
|
+
|
|
800
|
+
template <typename A0> iterator emplace(BOOST_FWD_REF(A0) a0)
|
|
801
|
+
{
|
|
802
|
+
return iterator(table_.emplace_equiv(
|
|
803
|
+
boost::unordered::detail::func::construct_node_from_args(
|
|
804
|
+
table_.node_alloc(), boost::unordered::detail::create_emplace_args(
|
|
805
|
+
boost::forward<A0>(a0)))));
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
template <typename A0, typename A1>
|
|
809
|
+
iterator emplace(BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
|
|
810
|
+
{
|
|
811
|
+
return iterator(table_.emplace_equiv(
|
|
812
|
+
boost::unordered::detail::func::construct_node_from_args(
|
|
813
|
+
table_.node_alloc(),
|
|
814
|
+
boost::unordered::detail::create_emplace_args(
|
|
815
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)))));
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
template <typename A0, typename A1, typename A2>
|
|
819
|
+
iterator emplace(
|
|
820
|
+
BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
|
|
821
|
+
{
|
|
822
|
+
return iterator(table_.emplace_equiv(
|
|
823
|
+
boost::unordered::detail::func::construct_node_from_args(
|
|
824
|
+
table_.node_alloc(),
|
|
825
|
+
boost::unordered::detail::create_emplace_args(
|
|
826
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1),
|
|
827
|
+
boost::forward<A2>(a2)))));
|
|
828
|
+
}
|
|
717
829
|
|
|
718
830
|
#endif
|
|
719
831
|
|
|
720
|
-
|
|
721
|
-
{
|
|
722
|
-
return table_.emplace(boost::unordered::detail::create_emplace_args(
|
|
723
|
-
boost::forward<A0>(a0)));
|
|
724
|
-
}
|
|
832
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
725
833
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
return table_.
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
834
|
+
template <class... Args>
|
|
835
|
+
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(Args)... args)
|
|
836
|
+
{
|
|
837
|
+
return iterator(table_.emplace_hint_equiv(
|
|
838
|
+
hint, boost::unordered::detail::func::construct_node_from_args(
|
|
839
|
+
table_.node_alloc(), boost::forward<Args>(args)...)));
|
|
840
|
+
}
|
|
733
841
|
|
|
734
|
-
|
|
735
|
-
iterator emplace(BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
|
|
736
|
-
{
|
|
737
|
-
return table_.emplace(boost::unordered::detail::create_emplace_args(
|
|
738
|
-
boost::forward<A0>(a0), boost::forward<A1>(a1)));
|
|
739
|
-
}
|
|
842
|
+
#else
|
|
740
843
|
|
|
741
|
-
|
|
742
|
-
iterator emplace_hint(
|
|
743
|
-
const_iterator hint, BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
|
|
744
|
-
{
|
|
745
|
-
return table_.emplace_hint(
|
|
746
|
-
hint, boost::unordered::detail::create_emplace_args(
|
|
747
|
-
boost::forward<A0>(a0), boost::forward<A1>(a1)));
|
|
748
|
-
}
|
|
844
|
+
#if !BOOST_UNORDERED_SUN_WORKAROUNDS1
|
|
749
845
|
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
846
|
+
iterator emplace_hint(const_iterator hint,
|
|
847
|
+
boost::unordered::detail::empty_emplace =
|
|
848
|
+
boost::unordered::detail::empty_emplace(),
|
|
849
|
+
value_type v = value_type())
|
|
850
|
+
{
|
|
851
|
+
return this->emplace_hint(hint, boost::move(v));
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
#endif
|
|
758
855
|
|
|
759
|
-
|
|
760
|
-
|
|
856
|
+
template <typename A0>
|
|
857
|
+
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0)
|
|
858
|
+
{
|
|
859
|
+
return iterator(table_.emplace_hint_equiv(hint,
|
|
860
|
+
boost::unordered::detail::func::construct_node_from_args(
|
|
861
|
+
table_.node_alloc(), boost::unordered::detail::create_emplace_args(
|
|
862
|
+
boost::forward<A0>(a0)))));
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
template <typename A0, typename A1>
|
|
866
|
+
iterator emplace_hint(
|
|
867
|
+
const_iterator hint, BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1)
|
|
868
|
+
{
|
|
869
|
+
return iterator(table_.emplace_hint_equiv(
|
|
870
|
+
hint, boost::unordered::detail::func::construct_node_from_args(
|
|
871
|
+
table_.node_alloc(),
|
|
872
|
+
boost::unordered::detail::create_emplace_args(
|
|
873
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1)))));
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
template <typename A0, typename A1, typename A2>
|
|
877
|
+
iterator emplace_hint(const_iterator hint, BOOST_FWD_REF(A0) a0,
|
|
761
878
|
BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
|
|
762
|
-
|
|
763
|
-
return table_.
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
879
|
+
{
|
|
880
|
+
return iterator(table_.emplace_hint_equiv(
|
|
881
|
+
hint, boost::unordered::detail::func::construct_node_from_args(
|
|
882
|
+
table_.node_alloc(),
|
|
883
|
+
boost::unordered::detail::create_emplace_args(
|
|
884
|
+
boost::forward<A0>(a0), boost::forward<A1>(a1),
|
|
885
|
+
boost::forward<A2>(a2)))));
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
#endif
|
|
889
|
+
|
|
890
|
+
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
768
891
|
|
|
769
892
|
#define BOOST_UNORDERED_EMPLACE(z, n, _) \
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
893
|
+
template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
894
|
+
iterator emplace(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
|
|
895
|
+
{ \
|
|
896
|
+
return iterator(table_.emplace_equiv( \
|
|
897
|
+
boost::unordered::detail::func::construct_node_from_args( \
|
|
898
|
+
table_.node_alloc(), \
|
|
899
|
+
boost::unordered::detail::create_emplace_args( \
|
|
900
|
+
BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))))); \
|
|
901
|
+
} \
|
|
776
902
|
\
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
903
|
+
template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
904
|
+
iterator emplace_hint( \
|
|
905
|
+
const_iterator hint, BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, a)) \
|
|
906
|
+
{ \
|
|
907
|
+
return iterator(table_.emplace_hint_equiv( \
|
|
908
|
+
hint, boost::unordered::detail::func::construct_node_from_args( \
|
|
909
|
+
table_.node_alloc(), \
|
|
910
|
+
boost::unordered::detail::create_emplace_args( \
|
|
911
|
+
BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_CALL_FORWARD, a))))); \
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
BOOST_UNORDERED_EMPLACE(1, 4, _)
|
|
915
|
+
BOOST_UNORDERED_EMPLACE(1, 5, _)
|
|
916
|
+
BOOST_UNORDERED_EMPLACE(1, 6, _)
|
|
917
|
+
BOOST_UNORDERED_EMPLACE(1, 7, _)
|
|
918
|
+
BOOST_UNORDERED_EMPLACE(1, 8, _)
|
|
919
|
+
BOOST_UNORDERED_EMPLACE(1, 9, _)
|
|
920
|
+
BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
|
|
921
|
+
BOOST_UNORDERED_EMPLACE, _)
|
|
788
922
|
|
|
789
923
|
#undef BOOST_UNORDERED_EMPLACE
|
|
790
924
|
|
|
791
925
|
#endif
|
|
792
926
|
|
|
793
|
-
|
|
927
|
+
iterator insert(value_type const& x) { return this->emplace(x); }
|
|
794
928
|
|
|
795
|
-
|
|
796
|
-
|
|
929
|
+
iterator insert(BOOST_UNORDERED_RV_REF(value_type) x)
|
|
930
|
+
{
|
|
797
931
|
return this->emplace(boost::move(x));
|
|
798
|
-
|
|
932
|
+
}
|
|
799
933
|
|
|
800
|
-
|
|
801
|
-
|
|
934
|
+
iterator insert(const_iterator hint, value_type const& x)
|
|
935
|
+
{
|
|
802
936
|
return this->emplace_hint(hint, x);
|
|
803
|
-
|
|
937
|
+
}
|
|
804
938
|
|
|
805
|
-
|
|
806
|
-
|
|
939
|
+
iterator insert(const_iterator hint, BOOST_UNORDERED_RV_REF(value_type) x)
|
|
940
|
+
{
|
|
807
941
|
return this->emplace_hint(hint, boost::move(x));
|
|
808
|
-
|
|
942
|
+
}
|
|
809
943
|
|
|
810
|
-
|
|
944
|
+
template <class InputIt> void insert(InputIt, InputIt);
|
|
811
945
|
|
|
812
946
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
813
|
-
|
|
947
|
+
void insert(std::initializer_list<value_type>);
|
|
814
948
|
#endif
|
|
815
949
|
|
|
816
|
-
|
|
817
|
-
{
|
|
818
|
-
return table_.move_insert_node_type(np);
|
|
819
|
-
}
|
|
820
|
-
|
|
821
|
-
iterator insert(const_iterator hint, BOOST_RV_REF(node_type) np)
|
|
822
|
-
{
|
|
823
|
-
return table_.move_insert_node_type_with_hint(hint, np);
|
|
824
|
-
}
|
|
950
|
+
// extract
|
|
825
951
|
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
952
|
+
node_type extract(const_iterator position)
|
|
953
|
+
{
|
|
954
|
+
return node_type(
|
|
955
|
+
table_.extract_by_iterator_equiv(position), table_.node_alloc());
|
|
956
|
+
}
|
|
831
957
|
|
|
832
|
-
|
|
958
|
+
node_type extract(const key_type& k)
|
|
959
|
+
{
|
|
960
|
+
return node_type(table_.extract_by_key(k), table_.node_alloc());
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
iterator insert(BOOST_RV_REF(node_type) np)
|
|
964
|
+
{
|
|
965
|
+
return table_.move_insert_node_type_equiv(np);
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
iterator insert(const_iterator hint, BOOST_RV_REF(node_type) np)
|
|
969
|
+
{
|
|
970
|
+
return table_.move_insert_node_type_with_hint_equiv(hint, np);
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
|
|
974
|
+
(BOOST_COMP_GNUC && BOOST_COMP_GNUC < BOOST_VERSION_NUMBER(4, 6, 0))
|
|
975
|
+
private:
|
|
976
|
+
// Note: Use r-value node_type to insert.
|
|
977
|
+
iterator insert(node_type&);
|
|
978
|
+
iterator insert(const_iterator, node_type& np);
|
|
979
|
+
|
|
980
|
+
public:
|
|
833
981
|
#endif
|
|
834
982
|
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
983
|
+
iterator erase(const_iterator);
|
|
984
|
+
size_type erase(const key_type&);
|
|
985
|
+
iterator erase(const_iterator, const_iterator);
|
|
986
|
+
BOOST_UNORDERED_DEPRECATED("Use erase instead")
|
|
987
|
+
void quick_erase(const_iterator it) { erase(it); }
|
|
988
|
+
BOOST_UNORDERED_DEPRECATED("Use erase instead")
|
|
989
|
+
void erase_return_void(const_iterator it) { erase(it); }
|
|
840
990
|
|
|
841
|
-
|
|
842
|
-
|
|
991
|
+
void swap(unordered_multiset&)
|
|
992
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
993
|
+
boost::is_nothrow_swappable<H>::value&&
|
|
994
|
+
boost::is_nothrow_swappable<P>::value);
|
|
995
|
+
void clear() BOOST_NOEXCEPT { table_.clear_impl(); }
|
|
843
996
|
|
|
844
|
-
|
|
845
|
-
|
|
997
|
+
template <typename H2, typename P2>
|
|
998
|
+
void merge(boost::unordered_multiset<T, H2, P2, A>& source);
|
|
846
999
|
|
|
847
1000
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
848
|
-
|
|
849
|
-
|
|
1001
|
+
template <typename H2, typename P2>
|
|
1002
|
+
void merge(boost::unordered_multiset<T, H2, P2, A>&& source);
|
|
850
1003
|
#endif
|
|
851
1004
|
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
void merge(boost::unordered_set<T, H2, P2, A>& source);
|
|
1005
|
+
template <typename H2, typename P2>
|
|
1006
|
+
void merge(boost::unordered_set<T, H2, P2, A>& source);
|
|
855
1007
|
|
|
856
1008
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
#endif
|
|
1009
|
+
template <typename H2, typename P2>
|
|
1010
|
+
void merge(boost::unordered_set<T, H2, P2, A>&& source);
|
|
860
1011
|
#endif
|
|
861
1012
|
|
|
862
|
-
|
|
1013
|
+
// observers
|
|
863
1014
|
|
|
864
|
-
|
|
865
|
-
|
|
1015
|
+
hasher hash_function() const;
|
|
1016
|
+
key_equal key_eq() const;
|
|
866
1017
|
|
|
867
|
-
|
|
1018
|
+
// lookup
|
|
868
1019
|
|
|
869
|
-
|
|
1020
|
+
const_iterator find(const key_type&) const;
|
|
870
1021
|
|
|
871
|
-
|
|
1022
|
+
template <class CompatibleKey, class CompatibleHash,
|
|
872
1023
|
class CompatiblePredicate>
|
|
873
|
-
|
|
1024
|
+
const_iterator find(CompatibleKey const&, CompatibleHash const&,
|
|
874
1025
|
CompatiblePredicate const&) const;
|
|
875
1026
|
|
|
876
|
-
|
|
1027
|
+
size_type count(const key_type&) const;
|
|
877
1028
|
|
|
878
|
-
|
|
1029
|
+
std::pair<const_iterator, const_iterator> equal_range(
|
|
879
1030
|
const key_type&) const;
|
|
880
1031
|
|
|
881
|
-
|
|
1032
|
+
// bucket interface
|
|
882
1033
|
|
|
883
|
-
|
|
884
|
-
|
|
1034
|
+
size_type bucket_count() const BOOST_NOEXCEPT
|
|
1035
|
+
{
|
|
885
1036
|
return table_.bucket_count_;
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
size_type max_bucket_count() const BOOST_NOEXCEPT
|
|
1040
|
+
{
|
|
1041
|
+
return table_.max_bucket_count();
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
size_type bucket_size(size_type) const;
|
|
1045
|
+
|
|
1046
|
+
size_type bucket(const key_type& k) const
|
|
1047
|
+
{
|
|
1048
|
+
return table_.hash_to_bucket(table_.hash(k));
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
local_iterator begin(size_type n)
|
|
1052
|
+
{
|
|
1053
|
+
return local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
const_local_iterator begin(size_type n) const
|
|
1057
|
+
{
|
|
1058
|
+
return const_local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
local_iterator end(size_type) { return local_iterator(); }
|
|
1062
|
+
|
|
1063
|
+
const_local_iterator end(size_type) const
|
|
1064
|
+
{
|
|
1065
|
+
return const_local_iterator();
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
const_local_iterator cbegin(size_type n) const
|
|
1069
|
+
{
|
|
1070
|
+
return const_local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
const_local_iterator cend(size_type) const
|
|
1074
|
+
{
|
|
1075
|
+
return const_local_iterator();
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
// hash policy
|
|
1079
|
+
|
|
1080
|
+
float load_factor() const BOOST_NOEXCEPT;
|
|
1081
|
+
float max_load_factor() const BOOST_NOEXCEPT { return table_.mlf_; }
|
|
1082
|
+
void max_load_factor(float) BOOST_NOEXCEPT;
|
|
1083
|
+
void rehash(size_type);
|
|
1084
|
+
void reserve(size_type);
|
|
1085
|
+
|
|
1086
|
+
#if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582)
|
|
1087
|
+
friend bool operator==
|
|
1088
|
+
<T, H, P, A>(unordered_multiset const&, unordered_multiset const&);
|
|
1089
|
+
friend bool operator!=
|
|
1090
|
+
<T, H, P, A>(unordered_multiset const&, unordered_multiset const&);
|
|
1091
|
+
#endif
|
|
1092
|
+
}; // class template unordered_multiset
|
|
1093
|
+
|
|
1094
|
+
#if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES
|
|
1095
|
+
|
|
1096
|
+
template <class InputIterator,
|
|
1097
|
+
class Hash =
|
|
1098
|
+
boost::hash<typename std::iterator_traits<InputIterator>::value_type>,
|
|
1099
|
+
class Pred =
|
|
1100
|
+
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
1101
|
+
class Allocator = std::allocator<
|
|
1102
|
+
typename std::iterator_traits<InputIterator>::value_type> >
|
|
1103
|
+
unordered_multiset(InputIterator, InputIterator,
|
|
1104
|
+
std::size_t = boost::unordered::detail::default_bucket_count,
|
|
1105
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
1106
|
+
->unordered_multiset<
|
|
1107
|
+
typename std::iterator_traits<InputIterator>::value_type, Hash, Pred,
|
|
1108
|
+
Allocator>;
|
|
1109
|
+
|
|
1110
|
+
template <class T, class Hash = boost::hash<T>,
|
|
1111
|
+
class Pred = std::equal_to<T>, class Allocator = std::allocator<T> >
|
|
1112
|
+
unordered_multiset(std::initializer_list<T>,
|
|
1113
|
+
std::size_t = boost::unordered::detail::default_bucket_count,
|
|
1114
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
1115
|
+
->unordered_multiset<T, Hash, Pred, Allocator>;
|
|
1116
|
+
|
|
1117
|
+
template <class InputIterator, class Allocator>
|
|
1118
|
+
unordered_multiset(InputIterator, InputIterator, std::size_t, Allocator)
|
|
1119
|
+
->unordered_multiset<
|
|
1120
|
+
typename std::iterator_traits<InputIterator>::value_type,
|
|
1121
|
+
boost::hash<typename std::iterator_traits<InputIterator>::value_type>,
|
|
1122
|
+
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
1123
|
+
Allocator>;
|
|
1124
|
+
|
|
1125
|
+
template <class InputIterator, class Hash, class Allocator>
|
|
1126
|
+
unordered_multiset(
|
|
1127
|
+
InputIterator, InputIterator, std::size_t, Hash, Allocator)
|
|
1128
|
+
->unordered_multiset<
|
|
1129
|
+
typename std::iterator_traits<InputIterator>::value_type, Hash,
|
|
1130
|
+
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
1131
|
+
Allocator>;
|
|
1132
|
+
|
|
1133
|
+
template <class T, class Allocator>
|
|
1134
|
+
unordered_multiset(std::initializer_list<T>, std::size_t, Allocator)
|
|
1135
|
+
->unordered_multiset<T, boost::hash<T>, std::equal_to<T>, Allocator>;
|
|
1136
|
+
|
|
1137
|
+
template <class T, class Hash, class Allocator>
|
|
1138
|
+
unordered_multiset(std::initializer_list<T>, std::size_t, Hash, Allocator)
|
|
1139
|
+
->unordered_multiset<T, Hash, std::equal_to<T>, Allocator>;
|
|
1140
|
+
|
|
1141
|
+
#endif
|
|
1142
|
+
|
|
1143
|
+
////////////////////////////////////////////////////////////////////////////
|
|
1144
|
+
template <class T, class H, class P, class A>
|
|
1145
|
+
unordered_set<T, H, P, A>::unordered_set()
|
|
1146
|
+
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
1147
|
+
key_equal(), allocator_type())
|
|
1148
|
+
{
|
|
886
1149
|
}
|
|
887
1150
|
|
|
888
|
-
|
|
1151
|
+
template <class T, class H, class P, class A>
|
|
1152
|
+
unordered_set<T, H, P, A>::unordered_set(size_type n, const hasher& hf,
|
|
1153
|
+
const key_equal& eql, const allocator_type& a)
|
|
1154
|
+
: table_(n, hf, eql, a)
|
|
889
1155
|
{
|
|
890
|
-
return table_.max_bucket_count();
|
|
891
1156
|
}
|
|
892
1157
|
|
|
893
|
-
|
|
1158
|
+
template <class T, class H, class P, class A>
|
|
1159
|
+
template <class InputIt>
|
|
1160
|
+
unordered_set<T, H, P, A>::unordered_set(InputIt f, InputIt l, size_type n,
|
|
1161
|
+
const hasher& hf, const key_equal& eql, const allocator_type& a)
|
|
1162
|
+
: table_(boost::unordered::detail::initial_size(f, l, n), hf, eql, a)
|
|
1163
|
+
{
|
|
1164
|
+
this->insert(f, l);
|
|
1165
|
+
}
|
|
894
1166
|
|
|
895
|
-
|
|
1167
|
+
template <class T, class H, class P, class A>
|
|
1168
|
+
unordered_set<T, H, P, A>::unordered_set(unordered_set const& other)
|
|
1169
|
+
: table_(other.table_,
|
|
1170
|
+
unordered_set::value_allocator_traits::
|
|
1171
|
+
select_on_container_copy_construction(other.get_allocator()))
|
|
896
1172
|
{
|
|
897
|
-
|
|
1173
|
+
if (other.table_.size_) {
|
|
1174
|
+
table_.copy_buckets(
|
|
1175
|
+
other.table_, boost::unordered::detail::true_type());
|
|
1176
|
+
}
|
|
898
1177
|
}
|
|
899
1178
|
|
|
900
|
-
|
|
1179
|
+
template <class T, class H, class P, class A>
|
|
1180
|
+
unordered_set<T, H, P, A>::unordered_set(allocator_type const& a)
|
|
1181
|
+
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
1182
|
+
key_equal(), a)
|
|
901
1183
|
{
|
|
902
|
-
return local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
903
1184
|
}
|
|
904
1185
|
|
|
905
|
-
|
|
1186
|
+
template <class T, class H, class P, class A>
|
|
1187
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1188
|
+
unordered_set const& other, allocator_type const& a)
|
|
1189
|
+
: table_(other.table_, a)
|
|
906
1190
|
{
|
|
907
|
-
|
|
1191
|
+
if (other.table_.size_) {
|
|
1192
|
+
table_.copy_buckets(
|
|
1193
|
+
other.table_, boost::unordered::detail::true_type());
|
|
1194
|
+
}
|
|
908
1195
|
}
|
|
909
1196
|
|
|
910
|
-
|
|
1197
|
+
template <class T, class H, class P, class A>
|
|
1198
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1199
|
+
BOOST_RV_REF(unordered_set) other, allocator_type const& a)
|
|
1200
|
+
: table_(other.table_, a, boost::unordered::detail::move_tag())
|
|
1201
|
+
{
|
|
1202
|
+
table_.move_construct_buckets(other.table_);
|
|
1203
|
+
}
|
|
911
1204
|
|
|
912
|
-
|
|
1205
|
+
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
913
1206
|
|
|
914
|
-
|
|
1207
|
+
template <class T, class H, class P, class A>
|
|
1208
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1209
|
+
std::initializer_list<value_type> list, size_type n, const hasher& hf,
|
|
1210
|
+
const key_equal& eql, const allocator_type& a)
|
|
1211
|
+
: table_(
|
|
1212
|
+
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1213
|
+
hf, eql, a)
|
|
1214
|
+
{
|
|
1215
|
+
this->insert(list.begin(), list.end());
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
#endif
|
|
1219
|
+
|
|
1220
|
+
template <class T, class H, class P, class A>
|
|
1221
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1222
|
+
size_type n, const allocator_type& a)
|
|
1223
|
+
: table_(n, hasher(), key_equal(), a)
|
|
915
1224
|
{
|
|
916
|
-
return const_local_iterator(table_.begin(n), n, table_.bucket_count_);
|
|
917
1225
|
}
|
|
918
1226
|
|
|
919
|
-
|
|
1227
|
+
template <class T, class H, class P, class A>
|
|
1228
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1229
|
+
size_type n, const hasher& hf, const allocator_type& a)
|
|
1230
|
+
: table_(n, hf, key_equal(), a)
|
|
920
1231
|
{
|
|
921
|
-
return const_local_iterator();
|
|
922
1232
|
}
|
|
923
1233
|
|
|
924
|
-
|
|
1234
|
+
template <class T, class H, class P, class A>
|
|
1235
|
+
template <class InputIt>
|
|
1236
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1237
|
+
InputIt f, InputIt l, size_type n, const allocator_type& a)
|
|
1238
|
+
: table_(boost::unordered::detail::initial_size(f, l, n), hasher(),
|
|
1239
|
+
key_equal(), a)
|
|
1240
|
+
{
|
|
1241
|
+
this->insert(f, l);
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
template <class T, class H, class P, class A>
|
|
1245
|
+
template <class InputIt>
|
|
1246
|
+
unordered_set<T, H, P, A>::unordered_set(InputIt f, InputIt l, size_type n,
|
|
1247
|
+
const hasher& hf, const allocator_type& a)
|
|
1248
|
+
: table_(
|
|
1249
|
+
boost::unordered::detail::initial_size(f, l, n), hf, key_equal(), a)
|
|
1250
|
+
{
|
|
1251
|
+
this->insert(f, l);
|
|
1252
|
+
}
|
|
925
1253
|
|
|
926
|
-
|
|
1254
|
+
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
927
1255
|
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
1256
|
+
template <class T, class H, class P, class A>
|
|
1257
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1258
|
+
std::initializer_list<value_type> list, size_type n,
|
|
1259
|
+
const allocator_type& a)
|
|
1260
|
+
: table_(
|
|
1261
|
+
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1262
|
+
hasher(), key_equal(), a)
|
|
1263
|
+
{
|
|
1264
|
+
this->insert(list.begin(), list.end());
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
template <class T, class H, class P, class A>
|
|
1268
|
+
unordered_set<T, H, P, A>::unordered_set(
|
|
1269
|
+
std::initializer_list<value_type> list, size_type n, const hasher& hf,
|
|
1270
|
+
const allocator_type& a)
|
|
1271
|
+
: table_(
|
|
1272
|
+
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1273
|
+
hf, key_equal(), a)
|
|
1274
|
+
{
|
|
1275
|
+
this->insert(list.begin(), list.end());
|
|
1276
|
+
}
|
|
932
1277
|
|
|
933
|
-
#if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582)
|
|
934
|
-
friend bool operator==
|
|
935
|
-
<T, H, P, A>(unordered_multiset const&, unordered_multiset const&);
|
|
936
|
-
friend bool operator!=
|
|
937
|
-
<T, H, P, A>(unordered_multiset const&, unordered_multiset const&);
|
|
938
1278
|
#endif
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
unordered_set<T, H, P, A>::unordered_set()
|
|
945
|
-
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
946
|
-
key_equal(), allocator_type())
|
|
947
|
-
{
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
template <class T, class H, class P, class A>
|
|
951
|
-
unordered_set<T, H, P, A>::unordered_set(size_type n, const hasher& hf,
|
|
952
|
-
const key_equal& eql, const allocator_type& a)
|
|
953
|
-
: table_(n, hf, eql, a)
|
|
954
|
-
{
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
template <class T, class H, class P, class A>
|
|
958
|
-
unordered_set<T, H, P, A>::unordered_set(size_type n, const allocator_type& a)
|
|
959
|
-
: table_(n, hasher(), key_equal(), a)
|
|
960
|
-
{
|
|
961
|
-
}
|
|
962
|
-
|
|
963
|
-
template <class T, class H, class P, class A>
|
|
964
|
-
unordered_set<T, H, P, A>::unordered_set(
|
|
965
|
-
size_type n, const hasher& hf, const allocator_type& a)
|
|
966
|
-
: table_(n, hf, key_equal(), a)
|
|
967
|
-
{
|
|
968
|
-
}
|
|
969
|
-
|
|
970
|
-
template <class T, class H, class P, class A>
|
|
971
|
-
unordered_set<T, H, P, A>::unordered_set(allocator_type const& a)
|
|
972
|
-
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
973
|
-
key_equal(), a)
|
|
974
|
-
{
|
|
975
|
-
}
|
|
976
|
-
|
|
977
|
-
template <class T, class H, class P, class A>
|
|
978
|
-
unordered_set<T, H, P, A>::unordered_set(
|
|
979
|
-
unordered_set const& other, allocator_type const& a)
|
|
980
|
-
: table_(other.table_, a)
|
|
981
|
-
{
|
|
982
|
-
}
|
|
983
|
-
|
|
984
|
-
template <class T, class H, class P, class A>
|
|
985
|
-
template <class InputIt>
|
|
986
|
-
unordered_set<T, H, P, A>::unordered_set(InputIt f, InputIt l)
|
|
987
|
-
: table_(boost::unordered::detail::initial_size(f, l), hasher(),
|
|
988
|
-
key_equal(), allocator_type())
|
|
989
|
-
{
|
|
990
|
-
table_.insert_range(f, l);
|
|
991
|
-
}
|
|
992
|
-
|
|
993
|
-
template <class T, class H, class P, class A>
|
|
994
|
-
template <class InputIt>
|
|
995
|
-
unordered_set<T, H, P, A>::unordered_set(
|
|
996
|
-
InputIt f, InputIt l, size_type n, const hasher& hf, const key_equal& eql)
|
|
997
|
-
: table_(boost::unordered::detail::initial_size(f, l, n), hf, eql,
|
|
998
|
-
allocator_type())
|
|
999
|
-
{
|
|
1000
|
-
table_.insert_range(f, l);
|
|
1001
|
-
}
|
|
1002
|
-
|
|
1003
|
-
template <class T, class H, class P, class A>
|
|
1004
|
-
template <class InputIt>
|
|
1005
|
-
unordered_set<T, H, P, A>::unordered_set(InputIt f, InputIt l, size_type n,
|
|
1006
|
-
const hasher& hf, const key_equal& eql, const allocator_type& a)
|
|
1007
|
-
: table_(boost::unordered::detail::initial_size(f, l, n), hf, eql, a)
|
|
1008
|
-
{
|
|
1009
|
-
table_.insert_range(f, l);
|
|
1010
|
-
}
|
|
1011
|
-
|
|
1012
|
-
template <class T, class H, class P, class A>
|
|
1013
|
-
template <class InputIt>
|
|
1014
|
-
unordered_set<T, H, P, A>::unordered_set(InputIt f, InputIt l, size_type n,
|
|
1015
|
-
const hasher& hf, const allocator_type& a)
|
|
1016
|
-
: table_(
|
|
1017
|
-
boost::unordered::detail::initial_size(f, l, n), hf, key_equal(), a)
|
|
1018
|
-
{
|
|
1019
|
-
table_.insert_range(f, l);
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
|
-
template <class T, class H, class P, class A>
|
|
1023
|
-
template <class InputIt>
|
|
1024
|
-
unordered_set<T, H, P, A>::unordered_set(
|
|
1025
|
-
InputIt f, InputIt l, size_type n, const allocator_type& a)
|
|
1026
|
-
: table_(boost::unordered::detail::initial_size(f, l, n), hasher(),
|
|
1027
|
-
key_equal(), a)
|
|
1028
|
-
{
|
|
1029
|
-
table_.insert_range(f, l);
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
|
-
template <class T, class H, class P, class A>
|
|
1033
|
-
unordered_set<T, H, P, A>::~unordered_set() BOOST_NOEXCEPT
|
|
1034
|
-
{
|
|
1035
|
-
}
|
|
1036
|
-
|
|
1037
|
-
template <class T, class H, class P, class A>
|
|
1038
|
-
unordered_set<T, H, P, A>::unordered_set(unordered_set const& other)
|
|
1039
|
-
: table_(other.table_)
|
|
1040
|
-
{
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
|
-
template <class T, class H, class P, class A>
|
|
1044
|
-
unordered_set<T, H, P, A>::unordered_set(
|
|
1045
|
-
BOOST_RV_REF(unordered_set) other, allocator_type const& a)
|
|
1046
|
-
: table_(other.table_, a, boost::unordered::detail::move_tag())
|
|
1047
|
-
{
|
|
1048
|
-
}
|
|
1279
|
+
|
|
1280
|
+
template <class T, class H, class P, class A>
|
|
1281
|
+
unordered_set<T, H, P, A>::~unordered_set() BOOST_NOEXCEPT
|
|
1282
|
+
{
|
|
1283
|
+
}
|
|
1049
1284
|
|
|
1050
1285
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
1051
1286
|
|
|
1052
|
-
template <class T, class H, class P, class A>
|
|
1053
|
-
unordered_set<T, H, P, A
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
table_.insert_range(list.begin(), list.end());
|
|
1061
|
-
}
|
|
1062
|
-
|
|
1063
|
-
template <class T, class H, class P, class A>
|
|
1064
|
-
unordered_set<T, H, P, A>::unordered_set(std::initializer_list<value_type> list,
|
|
1065
|
-
size_type n, const hasher& hf, const allocator_type& a)
|
|
1066
|
-
: table_(
|
|
1067
|
-
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1068
|
-
hf, key_equal(), a)
|
|
1069
|
-
{
|
|
1070
|
-
table_.insert_range(list.begin(), list.end());
|
|
1071
|
-
}
|
|
1072
|
-
|
|
1073
|
-
template <class T, class H, class P, class A>
|
|
1074
|
-
unordered_set<T, H, P, A>::unordered_set(std::initializer_list<value_type> list,
|
|
1075
|
-
size_type n, const allocator_type& a)
|
|
1076
|
-
: table_(
|
|
1077
|
-
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1078
|
-
hasher(), key_equal(), a)
|
|
1079
|
-
{
|
|
1080
|
-
table_.insert_range(list.begin(), list.end());
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1083
|
-
template <class T, class H, class P, class A>
|
|
1084
|
-
unordered_set<T, H, P, A>& unordered_set<T, H, P, A>::operator=(
|
|
1085
|
-
std::initializer_list<value_type> list)
|
|
1086
|
-
{
|
|
1087
|
-
table_.clear();
|
|
1088
|
-
table_.insert_range(list.begin(), list.end());
|
|
1089
|
-
return *this;
|
|
1090
|
-
}
|
|
1287
|
+
template <class T, class H, class P, class A>
|
|
1288
|
+
unordered_set<T, H, P, A>& unordered_set<T, H, P, A>::operator=(
|
|
1289
|
+
std::initializer_list<value_type> list)
|
|
1290
|
+
{
|
|
1291
|
+
this->clear();
|
|
1292
|
+
this->insert(list.begin(), list.end());
|
|
1293
|
+
return *this;
|
|
1294
|
+
}
|
|
1091
1295
|
|
|
1092
1296
|
#endif
|
|
1093
1297
|
|
|
1094
|
-
// size and capacity
|
|
1298
|
+
// size and capacity
|
|
1095
1299
|
|
|
1096
|
-
template <class T, class H, class P, class A>
|
|
1097
|
-
std::size_t unordered_set<T, H, P, A>::max_size() const BOOST_NOEXCEPT
|
|
1098
|
-
{
|
|
1099
|
-
|
|
1100
|
-
}
|
|
1300
|
+
template <class T, class H, class P, class A>
|
|
1301
|
+
std::size_t unordered_set<T, H, P, A>::max_size() const BOOST_NOEXCEPT
|
|
1302
|
+
{
|
|
1303
|
+
using namespace std;
|
|
1101
1304
|
|
|
1102
|
-
//
|
|
1305
|
+
// size < mlf_ * count
|
|
1306
|
+
return boost::unordered::detail::double_to_size(
|
|
1307
|
+
ceil(static_cast<double>(table_.mlf_) *
|
|
1308
|
+
static_cast<double>(table_.max_bucket_count()))) -
|
|
1309
|
+
1;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
// modifiers
|
|
1103
1313
|
|
|
1104
|
-
template <class T, class H, class P, class A>
|
|
1105
|
-
template <class InputIt>
|
|
1106
|
-
void unordered_set<T, H, P, A>::insert(InputIt first, InputIt last)
|
|
1107
|
-
{
|
|
1108
|
-
|
|
1109
|
-
|
|
1314
|
+
template <class T, class H, class P, class A>
|
|
1315
|
+
template <class InputIt>
|
|
1316
|
+
void unordered_set<T, H, P, A>::insert(InputIt first, InputIt last)
|
|
1317
|
+
{
|
|
1318
|
+
if (first != last) {
|
|
1319
|
+
table_.insert_range_unique(
|
|
1320
|
+
table::extractor::extract(*first), first, last);
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1110
1323
|
|
|
1111
1324
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
1112
|
-
template <class T, class H, class P, class A>
|
|
1113
|
-
void unordered_set<T, H, P, A>::insert(
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1325
|
+
template <class T, class H, class P, class A>
|
|
1326
|
+
void unordered_set<T, H, P, A>::insert(
|
|
1327
|
+
std::initializer_list<value_type> list)
|
|
1328
|
+
{
|
|
1329
|
+
this->insert(list.begin(), list.end());
|
|
1330
|
+
}
|
|
1117
1331
|
#endif
|
|
1118
1332
|
|
|
1119
|
-
template <class T, class H, class P, class A>
|
|
1120
|
-
typename unordered_set<T, H, P, A>::iterator
|
|
1121
|
-
const_iterator position)
|
|
1122
|
-
{
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1333
|
+
template <class T, class H, class P, class A>
|
|
1334
|
+
typename unordered_set<T, H, P, A>::iterator
|
|
1335
|
+
unordered_set<T, H, P, A>::erase(const_iterator position)
|
|
1336
|
+
{
|
|
1337
|
+
node_pointer node = table::get_node(position);
|
|
1338
|
+
BOOST_ASSERT(node);
|
|
1339
|
+
node_pointer next = table::next_node(node);
|
|
1340
|
+
table_.erase_nodes_unique(node, next);
|
|
1341
|
+
return iterator(next);
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
template <class T, class H, class P, class A>
|
|
1345
|
+
typename unordered_set<T, H, P, A>::size_type
|
|
1346
|
+
unordered_set<T, H, P, A>::erase(const key_type& k)
|
|
1347
|
+
{
|
|
1348
|
+
return table_.erase_key_unique(k);
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
template <class T, class H, class P, class A>
|
|
1352
|
+
typename unordered_set<T, H, P, A>::iterator
|
|
1353
|
+
unordered_set<T, H, P, A>::erase(const_iterator first, const_iterator last)
|
|
1354
|
+
{
|
|
1355
|
+
node_pointer last_node = table::get_node(last);
|
|
1356
|
+
if (first == last)
|
|
1357
|
+
return iterator(last_node);
|
|
1358
|
+
table_.erase_nodes_unique(table::get_node(first), last_node);
|
|
1359
|
+
return iterator(last_node);
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
template <class T, class H, class P, class A>
|
|
1363
|
+
void unordered_set<T, H, P, A>::swap(unordered_set& other)
|
|
1364
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
1365
|
+
boost::is_nothrow_swappable<H>::value&&
|
|
1366
|
+
boost::is_nothrow_swappable<P>::value)
|
|
1367
|
+
{
|
|
1368
|
+
table_.swap(other.table_);
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
// observers
|
|
1372
|
+
|
|
1373
|
+
template <class T, class H, class P, class A>
|
|
1374
|
+
typename unordered_set<T, H, P, A>::hasher
|
|
1375
|
+
unordered_set<T, H, P, A>::hash_function() const
|
|
1376
|
+
{
|
|
1377
|
+
return table_.hash_function();
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
template <class T, class H, class P, class A>
|
|
1381
|
+
typename unordered_set<T, H, P, A>::key_equal
|
|
1382
|
+
unordered_set<T, H, P, A>::key_eq() const
|
|
1383
|
+
{
|
|
1384
|
+
return table_.key_eq();
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
template <class T, class H, class P, class A>
|
|
1388
|
+
template <typename H2, typename P2>
|
|
1389
|
+
void unordered_set<T, H, P, A>::merge(
|
|
1390
|
+
boost::unordered_set<T, H2, P2, A>& source)
|
|
1391
|
+
{
|
|
1392
|
+
table_.merge_unique(source.table_);
|
|
1393
|
+
}
|
|
1175
1394
|
|
|
1176
1395
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
1177
|
-
template <class T, class H, class P, class A>
|
|
1178
|
-
template <typename H2, typename P2>
|
|
1179
|
-
void unordered_set<T, H, P, A>::merge(
|
|
1180
|
-
|
|
1181
|
-
{
|
|
1182
|
-
|
|
1183
|
-
}
|
|
1396
|
+
template <class T, class H, class P, class A>
|
|
1397
|
+
template <typename H2, typename P2>
|
|
1398
|
+
void unordered_set<T, H, P, A>::merge(
|
|
1399
|
+
boost::unordered_set<T, H2, P2, A>&& source)
|
|
1400
|
+
{
|
|
1401
|
+
table_.merge_unique(source.table_);
|
|
1402
|
+
}
|
|
1184
1403
|
#endif
|
|
1185
1404
|
|
|
1186
|
-
|
|
1187
|
-
template <
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
}
|
|
1405
|
+
template <class T, class H, class P, class A>
|
|
1406
|
+
template <typename H2, typename P2>
|
|
1407
|
+
void unordered_set<T, H, P, A>::merge(
|
|
1408
|
+
boost::unordered_multiset<T, H2, P2, A>& source)
|
|
1409
|
+
{
|
|
1410
|
+
table_.merge_unique(source.table_);
|
|
1411
|
+
}
|
|
1194
1412
|
|
|
1195
1413
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
1196
|
-
template <class T, class H, class P, class A>
|
|
1197
|
-
template <typename H2, typename P2>
|
|
1198
|
-
void unordered_set<T, H, P, A>::merge(
|
|
1199
|
-
|
|
1200
|
-
{
|
|
1201
|
-
|
|
1202
|
-
}
|
|
1203
|
-
#endif
|
|
1414
|
+
template <class T, class H, class P, class A>
|
|
1415
|
+
template <typename H2, typename P2>
|
|
1416
|
+
void unordered_set<T, H, P, A>::merge(
|
|
1417
|
+
boost::unordered_multiset<T, H2, P2, A>&& source)
|
|
1418
|
+
{
|
|
1419
|
+
table_.merge_unique(source.table_);
|
|
1420
|
+
}
|
|
1204
1421
|
#endif
|
|
1205
1422
|
|
|
1206
|
-
// lookup
|
|
1207
|
-
|
|
1208
|
-
template <class T, class H, class P, class A>
|
|
1209
|
-
typename unordered_set<T, H, P, A>::const_iterator
|
|
1210
|
-
unordered_set<T, H, P, A>::find(const key_type& k) const
|
|
1211
|
-
{
|
|
1212
|
-
|
|
1213
|
-
}
|
|
1214
|
-
|
|
1215
|
-
template <class T, class H, class P, class A>
|
|
1216
|
-
template <class CompatibleKey, class CompatibleHash,
|
|
1217
|
-
|
|
1218
|
-
unordered_set<T, H, P, A>::
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
unordered_set<T, H, P, A>::
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
}
|
|
1259
|
-
|
|
1260
|
-
template <class T, class H, class P, class A>
|
|
1261
|
-
void unordered_set<T, H, P, A>::
|
|
1262
|
-
{
|
|
1263
|
-
|
|
1264
|
-
}
|
|
1265
|
-
|
|
1266
|
-
template <class T, class H, class P, class A>
|
|
1267
|
-
void unordered_set<T, H, P, A>::
|
|
1268
|
-
{
|
|
1269
|
-
|
|
1270
|
-
}
|
|
1271
|
-
|
|
1272
|
-
template <class T, class H, class P, class A>
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1423
|
+
// lookup
|
|
1424
|
+
|
|
1425
|
+
template <class T, class H, class P, class A>
|
|
1426
|
+
typename unordered_set<T, H, P, A>::const_iterator
|
|
1427
|
+
unordered_set<T, H, P, A>::find(const key_type& k) const
|
|
1428
|
+
{
|
|
1429
|
+
return const_iterator(table_.find_node(k));
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
template <class T, class H, class P, class A>
|
|
1433
|
+
template <class CompatibleKey, class CompatibleHash,
|
|
1434
|
+
class CompatiblePredicate>
|
|
1435
|
+
typename unordered_set<T, H, P, A>::const_iterator
|
|
1436
|
+
unordered_set<T, H, P, A>::find(CompatibleKey const& k,
|
|
1437
|
+
CompatibleHash const& hash, CompatiblePredicate const& eq) const
|
|
1438
|
+
{
|
|
1439
|
+
return const_iterator(
|
|
1440
|
+
table_.find_node_impl(table::policy::apply_hash(hash, k), k, eq));
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
template <class T, class H, class P, class A>
|
|
1444
|
+
typename unordered_set<T, H, P, A>::size_type
|
|
1445
|
+
unordered_set<T, H, P, A>::count(const key_type& k) const
|
|
1446
|
+
{
|
|
1447
|
+
return table_.find_node(k) ? 1 : 0;
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
template <class T, class H, class P, class A>
|
|
1451
|
+
std::pair<typename unordered_set<T, H, P, A>::const_iterator,
|
|
1452
|
+
typename unordered_set<T, H, P, A>::const_iterator>
|
|
1453
|
+
unordered_set<T, H, P, A>::equal_range(const key_type& k) const
|
|
1454
|
+
{
|
|
1455
|
+
node_pointer n = table_.find_node(k);
|
|
1456
|
+
return std::make_pair(
|
|
1457
|
+
const_iterator(n), const_iterator(n ? table::next_node(n) : n));
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
template <class T, class H, class P, class A>
|
|
1461
|
+
typename unordered_set<T, H, P, A>::size_type
|
|
1462
|
+
unordered_set<T, H, P, A>::bucket_size(size_type n) const
|
|
1463
|
+
{
|
|
1464
|
+
return table_.bucket_size(n);
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
// hash policy
|
|
1468
|
+
|
|
1469
|
+
template <class T, class H, class P, class A>
|
|
1470
|
+
float unordered_set<T, H, P, A>::load_factor() const BOOST_NOEXCEPT
|
|
1471
|
+
{
|
|
1472
|
+
BOOST_ASSERT(table_.bucket_count_ != 0);
|
|
1473
|
+
return static_cast<float>(table_.size_) /
|
|
1474
|
+
static_cast<float>(table_.bucket_count_);
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
template <class T, class H, class P, class A>
|
|
1478
|
+
void unordered_set<T, H, P, A>::max_load_factor(float m) BOOST_NOEXCEPT
|
|
1479
|
+
{
|
|
1480
|
+
table_.max_load_factor(m);
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
template <class T, class H, class P, class A>
|
|
1484
|
+
void unordered_set<T, H, P, A>::rehash(size_type n)
|
|
1485
|
+
{
|
|
1486
|
+
table_.rehash(n);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
template <class T, class H, class P, class A>
|
|
1490
|
+
void unordered_set<T, H, P, A>::reserve(size_type n)
|
|
1491
|
+
{
|
|
1492
|
+
table_.rehash(static_cast<std::size_t>(
|
|
1493
|
+
std::ceil(static_cast<double>(n) / table_.mlf_)));
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
template <class T, class H, class P, class A>
|
|
1497
|
+
inline bool operator==(
|
|
1498
|
+
unordered_set<T, H, P, A> const& m1, unordered_set<T, H, P, A> const& m2)
|
|
1278
1499
|
{
|
|
1500
|
+
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1501
|
+
struct dummy
|
|
1502
|
+
{
|
|
1279
1503
|
unordered_set<T, H, P, A> x;
|
|
1280
|
-
|
|
1504
|
+
};
|
|
1281
1505
|
#endif
|
|
1282
|
-
|
|
1283
|
-
}
|
|
1506
|
+
return m1.table_.equals_unique(m2.table_);
|
|
1507
|
+
}
|
|
1284
1508
|
|
|
1285
|
-
template <class T, class H, class P, class A>
|
|
1286
|
-
inline bool operator!=(
|
|
1287
|
-
|
|
1288
|
-
{
|
|
1289
|
-
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1290
|
-
struct dummy
|
|
1509
|
+
template <class T, class H, class P, class A>
|
|
1510
|
+
inline bool operator!=(
|
|
1511
|
+
unordered_set<T, H, P, A> const& m1, unordered_set<T, H, P, A> const& m2)
|
|
1291
1512
|
{
|
|
1513
|
+
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1514
|
+
struct dummy
|
|
1515
|
+
{
|
|
1292
1516
|
unordered_set<T, H, P, A> x;
|
|
1293
|
-
|
|
1517
|
+
};
|
|
1294
1518
|
#endif
|
|
1295
|
-
|
|
1296
|
-
}
|
|
1519
|
+
return !m1.table_.equals_unique(m2.table_);
|
|
1520
|
+
}
|
|
1297
1521
|
|
|
1298
|
-
template <class T, class H, class P, class A>
|
|
1299
|
-
inline void swap(
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
struct dummy
|
|
1522
|
+
template <class T, class H, class P, class A>
|
|
1523
|
+
inline void swap(
|
|
1524
|
+
unordered_set<T, H, P, A>& m1, unordered_set<T, H, P, A>& m2)
|
|
1525
|
+
BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)))
|
|
1303
1526
|
{
|
|
1527
|
+
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1528
|
+
struct dummy
|
|
1529
|
+
{
|
|
1304
1530
|
unordered_set<T, H, P, A> x;
|
|
1305
|
-
|
|
1531
|
+
};
|
|
1532
|
+
#endif
|
|
1533
|
+
m1.swap(m2);
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
////////////////////////////////////////////////////////////////////////////
|
|
1537
|
+
|
|
1538
|
+
template <class T, class H, class P, class A>
|
|
1539
|
+
unordered_multiset<T, H, P, A>::unordered_multiset()
|
|
1540
|
+
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
1541
|
+
key_equal(), allocator_type())
|
|
1542
|
+
{
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
template <class T, class H, class P, class A>
|
|
1546
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(size_type n,
|
|
1547
|
+
const hasher& hf, const key_equal& eql, const allocator_type& a)
|
|
1548
|
+
: table_(n, hf, eql, a)
|
|
1549
|
+
{
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
template <class T, class H, class P, class A>
|
|
1553
|
+
template <class InputIt>
|
|
1554
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(InputIt f, InputIt l,
|
|
1555
|
+
size_type n, const hasher& hf, const key_equal& eql,
|
|
1556
|
+
const allocator_type& a)
|
|
1557
|
+
: table_(boost::unordered::detail::initial_size(f, l, n), hf, eql, a)
|
|
1558
|
+
{
|
|
1559
|
+
this->insert(f, l);
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1562
|
+
template <class T, class H, class P, class A>
|
|
1563
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1564
|
+
unordered_multiset const& other)
|
|
1565
|
+
: table_(other.table_,
|
|
1566
|
+
unordered_multiset::value_allocator_traits::
|
|
1567
|
+
select_on_container_copy_construction(other.get_allocator()))
|
|
1568
|
+
{
|
|
1569
|
+
if (other.table_.size_) {
|
|
1570
|
+
table_.copy_buckets(
|
|
1571
|
+
other.table_, boost::unordered::detail::false_type());
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
template <class T, class H, class P, class A>
|
|
1576
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(allocator_type const& a)
|
|
1577
|
+
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
1578
|
+
key_equal(), a)
|
|
1579
|
+
{
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
template <class T, class H, class P, class A>
|
|
1583
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1584
|
+
unordered_multiset const& other, allocator_type const& a)
|
|
1585
|
+
: table_(other.table_, a)
|
|
1586
|
+
{
|
|
1587
|
+
if (other.table_.size_) {
|
|
1588
|
+
table_.copy_buckets(
|
|
1589
|
+
other.table_, boost::unordered::detail::false_type());
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
template <class T, class H, class P, class A>
|
|
1594
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1595
|
+
BOOST_RV_REF(unordered_multiset) other, allocator_type const& a)
|
|
1596
|
+
: table_(other.table_, a, boost::unordered::detail::move_tag())
|
|
1597
|
+
{
|
|
1598
|
+
table_.move_construct_buckets(other.table_);
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
1602
|
+
|
|
1603
|
+
template <class T, class H, class P, class A>
|
|
1604
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1605
|
+
std::initializer_list<value_type> list, size_type n, const hasher& hf,
|
|
1606
|
+
const key_equal& eql, const allocator_type& a)
|
|
1607
|
+
: table_(
|
|
1608
|
+
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1609
|
+
hf, eql, a)
|
|
1610
|
+
{
|
|
1611
|
+
this->insert(list.begin(), list.end());
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
#endif
|
|
1615
|
+
|
|
1616
|
+
template <class T, class H, class P, class A>
|
|
1617
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1618
|
+
size_type n, const allocator_type& a)
|
|
1619
|
+
: table_(n, hasher(), key_equal(), a)
|
|
1620
|
+
{
|
|
1621
|
+
}
|
|
1622
|
+
|
|
1623
|
+
template <class T, class H, class P, class A>
|
|
1624
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1625
|
+
size_type n, const hasher& hf, const allocator_type& a)
|
|
1626
|
+
: table_(n, hf, key_equal(), a)
|
|
1627
|
+
{
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
template <class T, class H, class P, class A>
|
|
1631
|
+
template <class InputIt>
|
|
1632
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1633
|
+
InputIt f, InputIt l, size_type n, const allocator_type& a)
|
|
1634
|
+
: table_(boost::unordered::detail::initial_size(f, l, n), hasher(),
|
|
1635
|
+
key_equal(), a)
|
|
1636
|
+
{
|
|
1637
|
+
this->insert(f, l);
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1640
|
+
template <class T, class H, class P, class A>
|
|
1641
|
+
template <class InputIt>
|
|
1642
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(InputIt f, InputIt l,
|
|
1643
|
+
size_type n, const hasher& hf, const allocator_type& a)
|
|
1644
|
+
: table_(
|
|
1645
|
+
boost::unordered::detail::initial_size(f, l, n), hf, key_equal(), a)
|
|
1646
|
+
{
|
|
1647
|
+
this->insert(f, l);
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1650
|
+
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
1651
|
+
|
|
1652
|
+
template <class T, class H, class P, class A>
|
|
1653
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1654
|
+
std::initializer_list<value_type> list, size_type n,
|
|
1655
|
+
const allocator_type& a)
|
|
1656
|
+
: table_(
|
|
1657
|
+
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1658
|
+
hasher(), key_equal(), a)
|
|
1659
|
+
{
|
|
1660
|
+
this->insert(list.begin(), list.end());
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
template <class T, class H, class P, class A>
|
|
1664
|
+
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1665
|
+
std::initializer_list<value_type> list, size_type n, const hasher& hf,
|
|
1666
|
+
const allocator_type& a)
|
|
1667
|
+
: table_(
|
|
1668
|
+
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1669
|
+
hf, key_equal(), a)
|
|
1670
|
+
{
|
|
1671
|
+
this->insert(list.begin(), list.end());
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1306
1674
|
#endif
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
template <class T, class H, class P, class A>
|
|
1313
|
-
unordered_multiset<T, H, P, A>::unordered_multiset()
|
|
1314
|
-
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
1315
|
-
key_equal(), allocator_type())
|
|
1316
|
-
{
|
|
1317
|
-
}
|
|
1318
|
-
|
|
1319
|
-
template <class T, class H, class P, class A>
|
|
1320
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(size_type n,
|
|
1321
|
-
const hasher& hf, const key_equal& eql, const allocator_type& a)
|
|
1322
|
-
: table_(n, hf, eql, a)
|
|
1323
|
-
{
|
|
1324
|
-
}
|
|
1325
|
-
|
|
1326
|
-
template <class T, class H, class P, class A>
|
|
1327
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1328
|
-
size_type n, const allocator_type& a)
|
|
1329
|
-
: table_(n, hasher(), key_equal(), a)
|
|
1330
|
-
{
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
|
-
template <class T, class H, class P, class A>
|
|
1334
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1335
|
-
size_type n, const hasher& hf, const allocator_type& a)
|
|
1336
|
-
: table_(n, hf, key_equal(), a)
|
|
1337
|
-
{
|
|
1338
|
-
}
|
|
1339
|
-
|
|
1340
|
-
template <class T, class H, class P, class A>
|
|
1341
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(allocator_type const& a)
|
|
1342
|
-
: table_(boost::unordered::detail::default_bucket_count, hasher(),
|
|
1343
|
-
key_equal(), a)
|
|
1344
|
-
{
|
|
1345
|
-
}
|
|
1346
|
-
|
|
1347
|
-
template <class T, class H, class P, class A>
|
|
1348
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1349
|
-
unordered_multiset const& other, allocator_type const& a)
|
|
1350
|
-
: table_(other.table_, a)
|
|
1351
|
-
{
|
|
1352
|
-
}
|
|
1353
|
-
|
|
1354
|
-
template <class T, class H, class P, class A>
|
|
1355
|
-
template <class InputIt>
|
|
1356
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(InputIt f, InputIt l)
|
|
1357
|
-
: table_(boost::unordered::detail::initial_size(f, l), hasher(),
|
|
1358
|
-
key_equal(), allocator_type())
|
|
1359
|
-
{
|
|
1360
|
-
table_.insert_range(f, l);
|
|
1361
|
-
}
|
|
1362
|
-
|
|
1363
|
-
template <class T, class H, class P, class A>
|
|
1364
|
-
template <class InputIt>
|
|
1365
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1366
|
-
InputIt f, InputIt l, size_type n, const hasher& hf, const key_equal& eql)
|
|
1367
|
-
: table_(boost::unordered::detail::initial_size(f, l, n), hf, eql,
|
|
1368
|
-
allocator_type())
|
|
1369
|
-
{
|
|
1370
|
-
table_.insert_range(f, l);
|
|
1371
|
-
}
|
|
1372
|
-
|
|
1373
|
-
template <class T, class H, class P, class A>
|
|
1374
|
-
template <class InputIt>
|
|
1375
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(InputIt f, InputIt l,
|
|
1376
|
-
size_type n, const hasher& hf, const key_equal& eql,
|
|
1377
|
-
const allocator_type& a)
|
|
1378
|
-
: table_(boost::unordered::detail::initial_size(f, l, n), hf, eql, a)
|
|
1379
|
-
{
|
|
1380
|
-
table_.insert_range(f, l);
|
|
1381
|
-
}
|
|
1382
|
-
|
|
1383
|
-
template <class T, class H, class P, class A>
|
|
1384
|
-
template <class InputIt>
|
|
1385
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(InputIt f, InputIt l,
|
|
1386
|
-
size_type n, const hasher& hf, const allocator_type& a)
|
|
1387
|
-
: table_(
|
|
1388
|
-
boost::unordered::detail::initial_size(f, l, n), hf, key_equal(), a)
|
|
1389
|
-
{
|
|
1390
|
-
table_.insert_range(f, l);
|
|
1391
|
-
}
|
|
1392
|
-
|
|
1393
|
-
template <class T, class H, class P, class A>
|
|
1394
|
-
template <class InputIt>
|
|
1395
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1396
|
-
InputIt f, InputIt l, size_type n, const allocator_type& a)
|
|
1397
|
-
: table_(boost::unordered::detail::initial_size(f, l, n), hasher(),
|
|
1398
|
-
key_equal(), a)
|
|
1399
|
-
{
|
|
1400
|
-
table_.insert_range(f, l);
|
|
1401
|
-
}
|
|
1402
|
-
|
|
1403
|
-
template <class T, class H, class P, class A>
|
|
1404
|
-
unordered_multiset<T, H, P, A>::~unordered_multiset() BOOST_NOEXCEPT
|
|
1405
|
-
{
|
|
1406
|
-
}
|
|
1407
|
-
|
|
1408
|
-
template <class T, class H, class P, class A>
|
|
1409
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1410
|
-
unordered_multiset const& other)
|
|
1411
|
-
: table_(other.table_)
|
|
1412
|
-
{
|
|
1413
|
-
}
|
|
1414
|
-
|
|
1415
|
-
template <class T, class H, class P, class A>
|
|
1416
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1417
|
-
BOOST_RV_REF(unordered_multiset) other, allocator_type const& a)
|
|
1418
|
-
: table_(other.table_, a, boost::unordered::detail::move_tag())
|
|
1419
|
-
{
|
|
1420
|
-
}
|
|
1675
|
+
|
|
1676
|
+
template <class T, class H, class P, class A>
|
|
1677
|
+
unordered_multiset<T, H, P, A>::~unordered_multiset() BOOST_NOEXCEPT
|
|
1678
|
+
{
|
|
1679
|
+
}
|
|
1421
1680
|
|
|
1422
1681
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
1423
1682
|
|
|
1424
|
-
template <class T, class H, class P, class A>
|
|
1425
|
-
unordered_multiset<T, H, P, A>::
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
table_.insert_range(list.begin(), list.end());
|
|
1433
|
-
}
|
|
1434
|
-
|
|
1435
|
-
template <class T, class H, class P, class A>
|
|
1436
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1437
|
-
std::initializer_list<value_type> list, size_type n, const hasher& hf,
|
|
1438
|
-
const allocator_type& a)
|
|
1439
|
-
: table_(
|
|
1440
|
-
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1441
|
-
hf, key_equal(), a)
|
|
1442
|
-
{
|
|
1443
|
-
table_.insert_range(list.begin(), list.end());
|
|
1444
|
-
}
|
|
1445
|
-
|
|
1446
|
-
template <class T, class H, class P, class A>
|
|
1447
|
-
unordered_multiset<T, H, P, A>::unordered_multiset(
|
|
1448
|
-
std::initializer_list<value_type> list, size_type n,
|
|
1449
|
-
const allocator_type& a)
|
|
1450
|
-
: table_(
|
|
1451
|
-
boost::unordered::detail::initial_size(list.begin(), list.end(), n),
|
|
1452
|
-
hasher(), key_equal(), a)
|
|
1453
|
-
{
|
|
1454
|
-
table_.insert_range(list.begin(), list.end());
|
|
1455
|
-
}
|
|
1456
|
-
|
|
1457
|
-
template <class T, class H, class P, class A>
|
|
1458
|
-
unordered_multiset<T, H, P, A>& unordered_multiset<T, H, P, A>::operator=(
|
|
1459
|
-
std::initializer_list<value_type> list)
|
|
1460
|
-
{
|
|
1461
|
-
table_.clear();
|
|
1462
|
-
table_.insert_range(list.begin(), list.end());
|
|
1463
|
-
return *this;
|
|
1464
|
-
}
|
|
1683
|
+
template <class T, class H, class P, class A>
|
|
1684
|
+
unordered_multiset<T, H, P, A>& unordered_multiset<T, H, P, A>::operator=(
|
|
1685
|
+
std::initializer_list<value_type> list)
|
|
1686
|
+
{
|
|
1687
|
+
this->clear();
|
|
1688
|
+
this->insert(list.begin(), list.end());
|
|
1689
|
+
return *this;
|
|
1690
|
+
}
|
|
1465
1691
|
|
|
1466
1692
|
#endif
|
|
1467
1693
|
|
|
1468
|
-
// size and capacity
|
|
1694
|
+
// size and capacity
|
|
1469
1695
|
|
|
1470
|
-
template <class T, class H, class P, class A>
|
|
1471
|
-
std::size_t unordered_multiset<T, H, P, A>::max_size() const BOOST_NOEXCEPT
|
|
1472
|
-
{
|
|
1473
|
-
|
|
1474
|
-
}
|
|
1696
|
+
template <class T, class H, class P, class A>
|
|
1697
|
+
std::size_t unordered_multiset<T, H, P, A>::max_size() const BOOST_NOEXCEPT
|
|
1698
|
+
{
|
|
1699
|
+
using namespace std;
|
|
1475
1700
|
|
|
1476
|
-
//
|
|
1701
|
+
// size < mlf_ * count
|
|
1702
|
+
return boost::unordered::detail::double_to_size(
|
|
1703
|
+
ceil(static_cast<double>(table_.mlf_) *
|
|
1704
|
+
static_cast<double>(table_.max_bucket_count()))) -
|
|
1705
|
+
1;
|
|
1706
|
+
}
|
|
1477
1707
|
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1708
|
+
// modifiers
|
|
1709
|
+
|
|
1710
|
+
template <class T, class H, class P, class A>
|
|
1711
|
+
template <class InputIt>
|
|
1712
|
+
void unordered_multiset<T, H, P, A>::insert(InputIt first, InputIt last)
|
|
1713
|
+
{
|
|
1714
|
+
table_.insert_range_equiv(first, last);
|
|
1715
|
+
}
|
|
1484
1716
|
|
|
1485
1717
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
1486
|
-
template <class T, class H, class P, class A>
|
|
1487
|
-
void unordered_multiset<T, H, P, A>::insert(
|
|
1488
|
-
|
|
1489
|
-
{
|
|
1490
|
-
|
|
1491
|
-
}
|
|
1718
|
+
template <class T, class H, class P, class A>
|
|
1719
|
+
void unordered_multiset<T, H, P, A>::insert(
|
|
1720
|
+
std::initializer_list<value_type> list)
|
|
1721
|
+
{
|
|
1722
|
+
this->insert(list.begin(), list.end());
|
|
1723
|
+
}
|
|
1492
1724
|
#endif
|
|
1493
1725
|
|
|
1494
|
-
template <class T, class H, class P, class A>
|
|
1495
|
-
typename unordered_multiset<T, H, P, A>::iterator
|
|
1496
|
-
unordered_multiset<T, H, P, A>::erase(const_iterator position)
|
|
1497
|
-
{
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1726
|
+
template <class T, class H, class P, class A>
|
|
1727
|
+
typename unordered_multiset<T, H, P, A>::iterator
|
|
1728
|
+
unordered_multiset<T, H, P, A>::erase(const_iterator position)
|
|
1729
|
+
{
|
|
1730
|
+
node_pointer node = table::get_node(position);
|
|
1731
|
+
BOOST_ASSERT(node);
|
|
1732
|
+
node_pointer next = table::next_node(node);
|
|
1733
|
+
table_.erase_nodes_equiv(node, next);
|
|
1734
|
+
return iterator(next);
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
template <class T, class H, class P, class A>
|
|
1738
|
+
typename unordered_multiset<T, H, P, A>::size_type
|
|
1739
|
+
unordered_multiset<T, H, P, A>::erase(const key_type& k)
|
|
1740
|
+
{
|
|
1741
|
+
return table_.erase_key_equiv(k);
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
template <class T, class H, class P, class A>
|
|
1745
|
+
typename unordered_multiset<T, H, P, A>::iterator
|
|
1746
|
+
unordered_multiset<T, H, P, A>::erase(
|
|
1747
|
+
const_iterator first, const_iterator last)
|
|
1748
|
+
{
|
|
1749
|
+
node_pointer last_node = table::get_node(last);
|
|
1750
|
+
if (first == last)
|
|
1751
|
+
return iterator(last_node);
|
|
1752
|
+
table_.erase_nodes_equiv(table::get_node(first), last_node);
|
|
1753
|
+
return iterator(last_node);
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
template <class T, class H, class P, class A>
|
|
1757
|
+
void unordered_multiset<T, H, P, A>::swap(unordered_multiset& other)
|
|
1758
|
+
BOOST_NOEXCEPT_IF(value_allocator_traits::is_always_equal::value&&
|
|
1759
|
+
boost::is_nothrow_swappable<H>::value&&
|
|
1760
|
+
boost::is_nothrow_swappable<P>::value)
|
|
1761
|
+
{
|
|
1762
|
+
table_.swap(other.table_);
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
// observers
|
|
1766
|
+
|
|
1767
|
+
template <class T, class H, class P, class A>
|
|
1768
|
+
typename unordered_multiset<T, H, P, A>::hasher
|
|
1769
|
+
unordered_multiset<T, H, P, A>::hash_function() const
|
|
1770
|
+
{
|
|
1771
|
+
return table_.hash_function();
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
template <class T, class H, class P, class A>
|
|
1775
|
+
typename unordered_multiset<T, H, P, A>::key_equal
|
|
1776
|
+
unordered_multiset<T, H, P, A>::key_eq() const
|
|
1777
|
+
{
|
|
1778
|
+
return table_.key_eq();
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
template <class T, class H, class P, class A>
|
|
1782
|
+
template <typename H2, typename P2>
|
|
1783
|
+
void unordered_multiset<T, H, P, A>::merge(
|
|
1784
|
+
boost::unordered_multiset<T, H2, P2, A>& source)
|
|
1785
|
+
{
|
|
1786
|
+
while (!source.empty()) {
|
|
1549
1787
|
insert(source.extract(source.begin()));
|
|
1788
|
+
}
|
|
1550
1789
|
}
|
|
1551
|
-
}
|
|
1552
1790
|
|
|
1553
1791
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
1554
|
-
template <class T, class H, class P, class A>
|
|
1555
|
-
template <typename H2, typename P2>
|
|
1556
|
-
void unordered_multiset<T, H, P, A>::merge(
|
|
1557
|
-
|
|
1558
|
-
{
|
|
1559
|
-
|
|
1792
|
+
template <class T, class H, class P, class A>
|
|
1793
|
+
template <typename H2, typename P2>
|
|
1794
|
+
void unordered_multiset<T, H, P, A>::merge(
|
|
1795
|
+
boost::unordered_multiset<T, H2, P2, A>&& source)
|
|
1796
|
+
{
|
|
1797
|
+
while (!source.empty()) {
|
|
1560
1798
|
insert(source.extract(source.begin()));
|
|
1799
|
+
}
|
|
1561
1800
|
}
|
|
1562
|
-
}
|
|
1563
1801
|
#endif
|
|
1564
1802
|
|
|
1565
|
-
|
|
1566
|
-
template <
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
{
|
|
1571
|
-
while (!source.empty()) {
|
|
1803
|
+
template <class T, class H, class P, class A>
|
|
1804
|
+
template <typename H2, typename P2>
|
|
1805
|
+
void unordered_multiset<T, H, P, A>::merge(
|
|
1806
|
+
boost::unordered_set<T, H2, P2, A>& source)
|
|
1807
|
+
{
|
|
1808
|
+
while (!source.empty()) {
|
|
1572
1809
|
insert(source.extract(source.begin()));
|
|
1810
|
+
}
|
|
1573
1811
|
}
|
|
1574
|
-
}
|
|
1575
1812
|
|
|
1576
1813
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
1577
|
-
template <class T, class H, class P, class A>
|
|
1578
|
-
template <typename H2, typename P2>
|
|
1579
|
-
void unordered_multiset<T, H, P, A>::merge(
|
|
1580
|
-
|
|
1581
|
-
{
|
|
1582
|
-
|
|
1814
|
+
template <class T, class H, class P, class A>
|
|
1815
|
+
template <typename H2, typename P2>
|
|
1816
|
+
void unordered_multiset<T, H, P, A>::merge(
|
|
1817
|
+
boost::unordered_set<T, H2, P2, A>&& source)
|
|
1818
|
+
{
|
|
1819
|
+
while (!source.empty()) {
|
|
1583
1820
|
insert(source.extract(source.begin()));
|
|
1821
|
+
}
|
|
1584
1822
|
}
|
|
1585
|
-
}
|
|
1586
|
-
#endif
|
|
1587
1823
|
#endif
|
|
1588
1824
|
|
|
1589
|
-
// lookup
|
|
1590
|
-
|
|
1591
|
-
template <class T, class H, class P, class A>
|
|
1592
|
-
typename unordered_multiset<T, H, P, A>::const_iterator
|
|
1593
|
-
unordered_multiset<T, H, P, A>::find(const key_type& k) const
|
|
1594
|
-
{
|
|
1595
|
-
return const_iterator(table_.find_node(k));
|
|
1596
|
-
}
|
|
1597
|
-
|
|
1598
|
-
template <class T, class H, class P, class A>
|
|
1599
|
-
template <class CompatibleKey, class CompatibleHash, class CompatiblePredicate>
|
|
1600
|
-
typename unordered_multiset<T, H, P, A>::const_iterator
|
|
1601
|
-
unordered_multiset<T, H, P, A>::find(CompatibleKey const& k,
|
|
1602
|
-
CompatibleHash const& hash, CompatiblePredicate const& eq) const
|
|
1603
|
-
{
|
|
1604
|
-
return const_iterator(table_.generic_find_node(k, hash, eq));
|
|
1605
|
-
}
|
|
1606
|
-
|
|
1607
|
-
template <class T, class H, class P, class A>
|
|
1608
|
-
typename unordered_multiset<T, H, P, A>::size_type
|
|
1609
|
-
unordered_multiset<T, H, P, A>::count(const key_type& k) const
|
|
1610
|
-
{
|
|
1611
|
-
return table_.count(k);
|
|
1612
|
-
}
|
|
1613
|
-
|
|
1614
|
-
template <class T, class H, class P, class A>
|
|
1615
|
-
std::pair<typename unordered_multiset<T, H, P, A>::const_iterator,
|
|
1616
|
-
typename unordered_multiset<T, H, P, A>::const_iterator>
|
|
1617
|
-
unordered_multiset<T, H, P, A>::equal_range(const key_type& k) const
|
|
1618
|
-
{
|
|
1619
|
-
return table_.equal_range(k);
|
|
1620
|
-
}
|
|
1621
|
-
|
|
1622
|
-
template <class T, class H, class P, class A>
|
|
1623
|
-
typename unordered_multiset<T, H, P, A>::size_type
|
|
1624
|
-
unordered_multiset<T, H, P, A>::bucket_size(size_type n) const
|
|
1625
|
-
{
|
|
1626
|
-
return table_.bucket_size(n);
|
|
1627
|
-
}
|
|
1628
|
-
|
|
1629
|
-
// hash policy
|
|
1630
|
-
|
|
1631
|
-
template <class T, class H, class P, class A>
|
|
1632
|
-
float unordered_multiset<T, H, P, A>::load_factor() const BOOST_NOEXCEPT
|
|
1633
|
-
{
|
|
1634
|
-
return table_.load_factor();
|
|
1635
|
-
}
|
|
1636
|
-
|
|
1637
|
-
template <class T, class H, class P, class A>
|
|
1638
|
-
void unordered_multiset<T, H, P, A>::max_load_factor(float m) BOOST_NOEXCEPT
|
|
1639
|
-
{
|
|
1640
|
-
table_.max_load_factor(m);
|
|
1641
|
-
}
|
|
1642
|
-
|
|
1643
|
-
template <class T, class H, class P, class A>
|
|
1644
|
-
void unordered_multiset<T, H, P, A>::rehash(size_type n)
|
|
1645
|
-
{
|
|
1646
|
-
table_.rehash(n);
|
|
1647
|
-
}
|
|
1648
|
-
|
|
1649
|
-
template <class T, class H, class P, class A>
|
|
1650
|
-
void unordered_multiset<T, H, P, A>::reserve(size_type n)
|
|
1651
|
-
{
|
|
1652
|
-
table_.reserve(n);
|
|
1653
|
-
}
|
|
1654
|
-
|
|
1655
|
-
template <class T, class H, class P, class A>
|
|
1656
|
-
inline bool operator==(unordered_multiset<T, H, P, A> const& m1,
|
|
1657
|
-
unordered_multiset<T, H, P, A> const& m2)
|
|
1658
|
-
{
|
|
1659
|
-
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1660
|
-
struct dummy
|
|
1825
|
+
// lookup
|
|
1826
|
+
|
|
1827
|
+
template <class T, class H, class P, class A>
|
|
1828
|
+
typename unordered_multiset<T, H, P, A>::const_iterator
|
|
1829
|
+
unordered_multiset<T, H, P, A>::find(const key_type& k) const
|
|
1661
1830
|
{
|
|
1662
|
-
|
|
1663
|
-
}
|
|
1664
|
-
#endif
|
|
1665
|
-
return m1.table_.equals(m2.table_);
|
|
1666
|
-
}
|
|
1831
|
+
return const_iterator(table_.find_node(k));
|
|
1832
|
+
}
|
|
1667
1833
|
|
|
1668
|
-
template <class T, class H, class P, class A>
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1834
|
+
template <class T, class H, class P, class A>
|
|
1835
|
+
template <class CompatibleKey, class CompatibleHash,
|
|
1836
|
+
class CompatiblePredicate>
|
|
1837
|
+
typename unordered_multiset<T, H, P, A>::const_iterator
|
|
1838
|
+
unordered_multiset<T, H, P, A>::find(CompatibleKey const& k,
|
|
1839
|
+
CompatibleHash const& hash, CompatiblePredicate const& eq) const
|
|
1674
1840
|
{
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
return !m1.table_.equals(m2.table_);
|
|
1679
|
-
}
|
|
1841
|
+
return const_iterator(
|
|
1842
|
+
table_.find_node_impl(table::policy::apply_hash(hash, k), k, eq));
|
|
1843
|
+
}
|
|
1680
1844
|
|
|
1681
|
-
template <class T, class H, class P, class A>
|
|
1682
|
-
|
|
1683
|
-
unordered_multiset<T, H, P, A
|
|
1684
|
-
{
|
|
1685
|
-
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1686
|
-
struct dummy
|
|
1845
|
+
template <class T, class H, class P, class A>
|
|
1846
|
+
typename unordered_multiset<T, H, P, A>::size_type
|
|
1847
|
+
unordered_multiset<T, H, P, A>::count(const key_type& k) const
|
|
1687
1848
|
{
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
m1.swap(m2);
|
|
1692
|
-
}
|
|
1849
|
+
node_pointer n = table_.find_node(k);
|
|
1850
|
+
return n ? table_.group_count(n) : 0;
|
|
1851
|
+
}
|
|
1693
1852
|
|
|
1694
|
-
template <
|
|
1695
|
-
|
|
1696
|
-
|
|
1853
|
+
template <class T, class H, class P, class A>
|
|
1854
|
+
std::pair<typename unordered_multiset<T, H, P, A>::const_iterator,
|
|
1855
|
+
typename unordered_multiset<T, H, P, A>::const_iterator>
|
|
1856
|
+
unordered_multiset<T, H, P, A>::equal_range(const key_type& k) const
|
|
1857
|
+
{
|
|
1858
|
+
node_pointer n = table_.find_node(k);
|
|
1859
|
+
return std::make_pair(
|
|
1860
|
+
const_iterator(n), const_iterator(n ? table_.next_group(n) : n));
|
|
1861
|
+
}
|
|
1697
1862
|
|
|
1698
|
-
template <
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1863
|
+
template <class T, class H, class P, class A>
|
|
1864
|
+
typename unordered_multiset<T, H, P, A>::size_type
|
|
1865
|
+
unordered_multiset<T, H, P, A>::bucket_size(size_type n) const
|
|
1866
|
+
{
|
|
1867
|
+
return table_.bucket_size(n);
|
|
1868
|
+
}
|
|
1702
1869
|
|
|
1703
|
-
|
|
1704
|
-
value_allocator;
|
|
1705
|
-
typedef boost::unordered::detail::allocator_traits<value_allocator>
|
|
1706
|
-
value_allocator_traits;
|
|
1707
|
-
typedef N node;
|
|
1708
|
-
typedef typename boost::unordered::detail::rebind_wrap<A, node>::type
|
|
1709
|
-
node_allocator;
|
|
1710
|
-
typedef boost::unordered::detail::allocator_traits<node_allocator>
|
|
1711
|
-
node_allocator_traits;
|
|
1712
|
-
typedef typename node_allocator_traits::pointer node_pointer;
|
|
1870
|
+
// hash policy
|
|
1713
1871
|
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1872
|
+
template <class T, class H, class P, class A>
|
|
1873
|
+
float unordered_multiset<T, H, P, A>::load_factor() const BOOST_NOEXCEPT
|
|
1874
|
+
{
|
|
1875
|
+
BOOST_ASSERT(table_.bucket_count_ != 0);
|
|
1876
|
+
return static_cast<float>(table_.size_) /
|
|
1877
|
+
static_cast<float>(table_.bucket_count_);
|
|
1878
|
+
}
|
|
1717
1879
|
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1880
|
+
template <class T, class H, class P, class A>
|
|
1881
|
+
void unordered_multiset<T, H, P, A>::max_load_factor(float m) BOOST_NOEXCEPT
|
|
1882
|
+
{
|
|
1883
|
+
table_.max_load_factor(m);
|
|
1884
|
+
}
|
|
1722
1885
|
|
|
1723
|
-
|
|
1724
|
-
|
|
1886
|
+
template <class T, class H, class P, class A>
|
|
1887
|
+
void unordered_multiset<T, H, P, A>::rehash(size_type n)
|
|
1725
1888
|
{
|
|
1889
|
+
table_.rehash(n);
|
|
1726
1890
|
}
|
|
1727
1891
|
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
: ptr_(ptr), has_alloc_(false)
|
|
1892
|
+
template <class T, class H, class P, class A>
|
|
1893
|
+
void unordered_multiset<T, H, P, A>::reserve(size_type n)
|
|
1731
1894
|
{
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
has_alloc_ = true;
|
|
1735
|
-
}
|
|
1895
|
+
table_.rehash(static_cast<std::size_t>(
|
|
1896
|
+
std::ceil(static_cast<double>(n) / table_.mlf_)));
|
|
1736
1897
|
}
|
|
1737
1898
|
|
|
1738
|
-
|
|
1899
|
+
template <class T, class H, class P, class A>
|
|
1900
|
+
inline bool operator==(unordered_multiset<T, H, P, A> const& m1,
|
|
1901
|
+
unordered_multiset<T, H, P, A> const& m2)
|
|
1739
1902
|
{
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
}
|
|
1903
|
+
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1904
|
+
struct dummy
|
|
1905
|
+
{
|
|
1906
|
+
unordered_multiset<T, H, P, A> x;
|
|
1907
|
+
};
|
|
1908
|
+
#endif
|
|
1909
|
+
return m1.table_.equals_equiv(m2.table_);
|
|
1748
1910
|
}
|
|
1749
1911
|
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
{
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1912
|
+
template <class T, class H, class P, class A>
|
|
1913
|
+
inline bool operator!=(unordered_multiset<T, H, P, A> const& m1,
|
|
1914
|
+
unordered_multiset<T, H, P, A> const& m2)
|
|
1915
|
+
{
|
|
1916
|
+
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1917
|
+
struct dummy
|
|
1918
|
+
{
|
|
1919
|
+
unordered_multiset<T, H, P, A> x;
|
|
1920
|
+
};
|
|
1921
|
+
#endif
|
|
1922
|
+
return !m1.table_.equals_equiv(m2.table_);
|
|
1761
1923
|
}
|
|
1762
1924
|
|
|
1763
|
-
|
|
1925
|
+
template <class T, class H, class P, class A>
|
|
1926
|
+
inline void swap(
|
|
1927
|
+
unordered_multiset<T, H, P, A>& m1, unordered_multiset<T, H, P, A>& m2)
|
|
1928
|
+
BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)))
|
|
1764
1929
|
{
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1930
|
+
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
|
|
1931
|
+
struct dummy
|
|
1932
|
+
{
|
|
1933
|
+
unordered_multiset<T, H, P, A> x;
|
|
1934
|
+
};
|
|
1935
|
+
#endif
|
|
1936
|
+
m1.swap(m2);
|
|
1937
|
+
}
|
|
1769
1938
|
|
|
1939
|
+
template <typename N, typename T, typename A> class node_handle_set
|
|
1940
|
+
{
|
|
1941
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(node_handle_set)
|
|
1942
|
+
|
|
1943
|
+
template <typename Types> friend struct ::boost::unordered::detail::table;
|
|
1944
|
+
template <class T2, class H2, class P2, class A2>
|
|
1945
|
+
friend class unordered_set;
|
|
1946
|
+
template <class T2, class H2, class P2, class A2>
|
|
1947
|
+
friend class unordered_multiset;
|
|
1948
|
+
|
|
1949
|
+
typedef typename boost::unordered::detail::rebind_wrap<A, T>::type
|
|
1950
|
+
value_allocator;
|
|
1951
|
+
typedef boost::unordered::detail::allocator_traits<value_allocator>
|
|
1952
|
+
value_allocator_traits;
|
|
1953
|
+
typedef N node;
|
|
1954
|
+
typedef typename boost::unordered::detail::rebind_wrap<A, node>::type
|
|
1955
|
+
node_allocator;
|
|
1956
|
+
typedef boost::unordered::detail::allocator_traits<node_allocator>
|
|
1957
|
+
node_allocator_traits;
|
|
1958
|
+
typedef typename node_allocator_traits::pointer node_pointer;
|
|
1959
|
+
|
|
1960
|
+
public:
|
|
1961
|
+
typedef T value_type;
|
|
1962
|
+
typedef A allocator_type;
|
|
1963
|
+
|
|
1964
|
+
private:
|
|
1965
|
+
node_pointer ptr_;
|
|
1966
|
+
bool has_alloc_;
|
|
1967
|
+
boost::unordered::detail::optional<value_allocator> alloc_;
|
|
1968
|
+
|
|
1969
|
+
node_handle_set(node_pointer ptr, allocator_type const& a)
|
|
1970
|
+
: ptr_(ptr), alloc_(a)
|
|
1971
|
+
{
|
|
1972
|
+
}
|
|
1973
|
+
|
|
1974
|
+
public:
|
|
1975
|
+
BOOST_CONSTEXPR node_handle_set() BOOST_NOEXCEPT : ptr_(),
|
|
1976
|
+
has_alloc_(false)
|
|
1977
|
+
{
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
~node_handle_set()
|
|
1981
|
+
{
|
|
1770
1982
|
if (ptr_) {
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
ptr_ = node_pointer();
|
|
1983
|
+
node_allocator node_alloc(*alloc_);
|
|
1984
|
+
boost::unordered::detail::node_tmp<node_allocator> tmp(
|
|
1985
|
+
ptr_, node_alloc);
|
|
1775
1986
|
}
|
|
1987
|
+
}
|
|
1776
1988
|
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1989
|
+
node_handle_set(BOOST_RV_REF(node_handle_set) n) BOOST_NOEXCEPT
|
|
1990
|
+
: ptr_(n.ptr_),
|
|
1991
|
+
alloc_(boost::move(n.alloc_))
|
|
1992
|
+
{
|
|
1993
|
+
n.ptr_ = node_pointer();
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1996
|
+
node_handle_set& operator=(BOOST_RV_REF(node_handle_set) n)
|
|
1997
|
+
{
|
|
1998
|
+
BOOST_ASSERT(!alloc_.has_value() ||
|
|
1999
|
+
value_allocator_traits::
|
|
2000
|
+
propagate_on_container_move_assignment::value ||
|
|
2001
|
+
(n.alloc_.has_value() && alloc_ == n.alloc_));
|
|
1781
2002
|
|
|
1782
|
-
if (
|
|
1783
|
-
|
|
2003
|
+
if (ptr_) {
|
|
2004
|
+
node_allocator node_alloc(*alloc_);
|
|
2005
|
+
boost::unordered::detail::node_tmp<node_allocator> tmp(
|
|
2006
|
+
ptr_, node_alloc);
|
|
2007
|
+
ptr_ = node_pointer();
|
|
1784
2008
|
}
|
|
1785
2009
|
|
|
2010
|
+
if (!alloc_.has_value() ||
|
|
2011
|
+
value_allocator_traits::propagate_on_container_move_assignment::
|
|
2012
|
+
value) {
|
|
2013
|
+
alloc_ = boost::move(n.alloc_);
|
|
2014
|
+
}
|
|
1786
2015
|
ptr_ = n.ptr_;
|
|
1787
2016
|
n.ptr_ = node_pointer();
|
|
1788
2017
|
|
|
1789
2018
|
return *this;
|
|
1790
|
-
|
|
2019
|
+
}
|
|
1791
2020
|
|
|
1792
|
-
|
|
2021
|
+
value_type& value() const { return ptr_->value(); }
|
|
1793
2022
|
|
|
1794
|
-
|
|
2023
|
+
allocator_type get_allocator() const { return *alloc_; }
|
|
1795
2024
|
|
|
1796
|
-
|
|
2025
|
+
BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()
|
|
1797
2026
|
|
|
1798
|
-
|
|
2027
|
+
bool operator!() const BOOST_NOEXCEPT { return ptr_ ? 0 : 1; }
|
|
1799
2028
|
|
|
1800
|
-
|
|
2029
|
+
bool empty() const BOOST_NOEXCEPT { return ptr_ ? 0 : 1; }
|
|
1801
2030
|
|
|
1802
|
-
|
|
1803
|
-
value_allocator_traits::propagate_on_container_swap::value
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
n.
|
|
1812
|
-
|
|
1813
|
-
swap_impl(n, boost::unordered::detail::integral_constant<bool,
|
|
1814
|
-
value_allocator_traits::
|
|
1815
|
-
propagate_on_container_swap::value>());
|
|
2031
|
+
void swap(node_handle_set& n) BOOST_NOEXCEPT_IF(
|
|
2032
|
+
value_allocator_traits::propagate_on_container_swap::value ||
|
|
2033
|
+
value_allocator_traits::is_always_equal::value)
|
|
2034
|
+
{
|
|
2035
|
+
BOOST_ASSERT(
|
|
2036
|
+
!alloc_.has_value() || !n.alloc_.has_value() ||
|
|
2037
|
+
value_allocator_traits::propagate_on_container_swap::value ||
|
|
2038
|
+
alloc_ == n.alloc_);
|
|
2039
|
+
if (value_allocator_traits::propagate_on_container_swap::value ||
|
|
2040
|
+
!alloc_.has_value() || !n.alloc_.has_value()) {
|
|
2041
|
+
boost::swap(alloc_, n.alloc_);
|
|
1816
2042
|
}
|
|
1817
2043
|
boost::swap(ptr_, n.ptr_);
|
|
1818
|
-
|
|
2044
|
+
}
|
|
2045
|
+
};
|
|
1819
2046
|
|
|
1820
|
-
|
|
1821
|
-
void
|
|
2047
|
+
template <typename N, typename T, typename A>
|
|
2048
|
+
void swap(node_handle_set<N, T, A>& x, node_handle_set<N, T, A>& y)
|
|
2049
|
+
BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(x.swap(y)))
|
|
1822
2050
|
{
|
|
1823
|
-
|
|
1824
|
-
n.alloc_.value_ptr()->~value_allocator();
|
|
1825
|
-
has_alloc_ = true;
|
|
1826
|
-
n.has_alloc_ = false;
|
|
2051
|
+
x.swap(y);
|
|
1827
2052
|
}
|
|
1828
2053
|
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
void swap_impl(node_handle_set& n, boost::unordered::detail::true_type)
|
|
2054
|
+
template <typename N, typename T, typename A> struct insert_return_type_set
|
|
1832
2055
|
{
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
};
|
|
2056
|
+
private:
|
|
2057
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(insert_return_type_set)
|
|
1836
2058
|
|
|
1837
|
-
|
|
1838
|
-
void swap(node_handle_set<N, T, A>& x, node_handle_set<N, T, A>& y)
|
|
1839
|
-
BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(x.swap(y)))
|
|
1840
|
-
{
|
|
1841
|
-
x.swap(y);
|
|
1842
|
-
}
|
|
1843
|
-
|
|
1844
|
-
template <typename N, typename T, typename A> struct insert_return_type_set
|
|
1845
|
-
{
|
|
1846
|
-
private:
|
|
1847
|
-
BOOST_MOVABLE_BUT_NOT_COPYABLE(insert_return_type_set)
|
|
1848
|
-
|
|
1849
|
-
typedef typename boost::unordered::detail::rebind_wrap<A, T>::type
|
|
2059
|
+
typedef typename boost::unordered::detail::rebind_wrap<A, T>::type
|
|
1850
2060
|
value_allocator;
|
|
1851
|
-
|
|
2061
|
+
typedef N node_;
|
|
1852
2062
|
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
2063
|
+
public:
|
|
2064
|
+
bool inserted;
|
|
2065
|
+
boost::unordered::iterator_detail::c_iterator<node_> position;
|
|
2066
|
+
boost::unordered::node_handle_set<N, T, A> node;
|
|
1857
2067
|
|
|
1858
|
-
|
|
2068
|
+
insert_return_type_set() : inserted(false), position(), node() {}
|
|
1859
2069
|
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
2070
|
+
insert_return_type_set(BOOST_RV_REF(insert_return_type_set)
|
|
2071
|
+
x) BOOST_NOEXCEPT : inserted(x.inserted),
|
|
2072
|
+
position(x.position),
|
|
2073
|
+
node(boost::move(x.node))
|
|
2074
|
+
{
|
|
2075
|
+
}
|
|
1866
2076
|
|
|
1867
|
-
|
|
1868
|
-
|
|
2077
|
+
insert_return_type_set& operator=(BOOST_RV_REF(insert_return_type_set) x)
|
|
2078
|
+
{
|
|
1869
2079
|
inserted = x.inserted;
|
|
1870
2080
|
position = x.position;
|
|
1871
2081
|
node = boost::move(x.node);
|
|
1872
2082
|
return *this;
|
|
2083
|
+
}
|
|
2084
|
+
};
|
|
2085
|
+
|
|
2086
|
+
template <typename N, typename T, typename A>
|
|
2087
|
+
void swap(
|
|
2088
|
+
insert_return_type_set<N, T, A>& x, insert_return_type_set<N, T, A>& y)
|
|
2089
|
+
{
|
|
2090
|
+
boost::swap(x.node, y.node);
|
|
2091
|
+
boost::swap(x.inserted, y.inserted);
|
|
2092
|
+
boost::swap(x.position, y.position);
|
|
1873
2093
|
}
|
|
1874
|
-
}
|
|
1875
|
-
|
|
1876
|
-
template <typename N, typename T, typename A>
|
|
1877
|
-
void swap(
|
|
1878
|
-
insert_return_type_set<N, T, A>& x, insert_return_type_set<N, T, A>& y)
|
|
1879
|
-
{
|
|
1880
|
-
boost::swap(x.node, y.node);
|
|
1881
|
-
boost::swap(x.inserted, y.inserted);
|
|
1882
|
-
boost::swap(x.position, y.position);
|
|
1883
|
-
}
|
|
1884
|
-
} // namespace unordered
|
|
2094
|
+
} // namespace unordered
|
|
1885
2095
|
} // namespace boost
|
|
1886
2096
|
|
|
1887
2097
|
#if defined(BOOST_MSVC)
|