passenger 6.0.19 → 6.0.21
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 +65 -3
- data/CONTRIBUTORS +2 -0
- data/README.md +2 -2
- data/bin/passenger-install-nginx-module +4 -4
- data/build/integration_tests.rb +2 -1
- data/build/support/cxx_dependency_map.rb +155 -54
- data/dev/copy_boost_headers +21 -7
- data/dev/nginx_version_sha256 +72 -0
- data/package.json +15 -15
- data/src/agent/AgentMain.cpp +2 -8
- data/src/agent/Core/AdminPanelConnector.h +2 -3
- data/src/agent/Core/ApiServer.h +1 -1
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +8 -1
- data/src/agent/Core/Config.h +6 -3
- data/src/agent/Core/Controller/AppResponse.h +0 -1
- data/src/agent/Core/Controller/Config.h +2 -2
- data/src/agent/Core/Controller/SendRequest.cpp +2 -2
- data/src/agent/Core/CoreMain.cpp +1 -0
- data/src/agent/Core/ResponseCache.h +3 -2
- data/src/agent/Core/SecurityUpdateChecker.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +4 -4
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +2 -2
- data/src/agent/ExecHelper/ExecHelperMain.cpp +10 -12
- data/src/agent/FileReadHelper/FileReadHelperMain.cpp +7 -10
- data/src/agent/MainFunctions.h +38 -0
- data/src/agent/Shared/ApiServerUtils.h +3 -2
- data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +2 -3
- data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -0
- data/src/agent/TempDirToucher/TempDirToucherMain.cpp +6 -4
- data/src/agent/Watchdog/ApiServer.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +5 -12
- data/src/apache2_module/Hooks.cpp +26 -1
- data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +10 -1
- data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -6
- data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +3 -3
- data/src/cxx_supportlib/JsonTools/CBindings.cpp +0 -2
- data/src/cxx_supportlib/JsonTools/JsonUtils.h +4 -4
- data/src/cxx_supportlib/LoggingKit/Context.h +16 -21
- data/src/cxx_supportlib/LoggingKit/Forward.h +0 -2
- data/src/cxx_supportlib/LoggingKit/Implementation.cpp +36 -72
- data/src/cxx_supportlib/MemoryKit/mbuf.cpp +12 -4
- data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
- data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
- data/src/cxx_supportlib/ResourceLocator.h +1 -1
- data/src/cxx_supportlib/SecurityKit/Crypto.cpp +3 -94
- data/src/cxx_supportlib/SecurityKit/Crypto.h +0 -8
- data/src/cxx_supportlib/ServerKit/Context.h +6 -0
- data/src/cxx_supportlib/ServerKit/Errors.h +3 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +99 -64
- data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +4 -1
- data/src/cxx_supportlib/ServerKit/HttpRequest.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpServer.h +3 -2
- data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
- data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
- data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
- data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
- data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
- data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
- data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
- data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
- data/src/cxx_supportlib/StaticString.h +3 -1
- data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
- data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +12 -3
- data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +5 -0
- data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +2 -2
- data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +14 -14
- data/src/cxx_supportlib/SystemTools/UserDatabase.h +6 -10
- data/src/cxx_supportlib/Utils/AnsiColorConstants.h +11 -9
- data/src/cxx_supportlib/Utils.cpp +1 -1
- data/src/cxx_supportlib/oxt/implementation.cpp +1 -2
- data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +194 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +34 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +10 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +21 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +26 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +26 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +30 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +282 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +178 -863
- data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +64 -98
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +17 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +18 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +30 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +65 -96
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +20 -29
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +36 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +31 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +73 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +34 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +108 -151
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +6 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +6 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +30 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +50 -76
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +13 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +23 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +20 -29
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +97 -299
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +97 -288
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +90 -288
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +551 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +365 -290
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +29 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -39
- 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 +33 -49
- 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 -39
- 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 +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +25 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +8 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +60 -272
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +52 -79
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +11 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +37 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +302 -262
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +12 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +2 -4
- 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 +5 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +21 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +129 -563
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +3 -3
- 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 +3 -7
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +2 -23
- 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 +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +21 -97
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +155 -963
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +3 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +2 -24
- 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 +4 -4
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +41 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +40 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +20 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +20 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +2 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +8 -60
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +6 -6
- 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 +3 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +41 -104
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +9 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +101 -123
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +13 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +17 -8
- 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 +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +69 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +15 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
- 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 +1 -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_serial_port_service.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -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 +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +26 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +57 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +63 -5
- 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 +47 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +1 -1
- 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 -12
- 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/initiate_defer.hpp +209 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +195 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +209 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +6 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +17 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +11 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +11 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +7 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
- 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 +20 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +1 -6
- 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/memory.hpp +13 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +4 -15
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
- 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 +1 -1
- 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 +3 -3
- 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 +1 -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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +1 -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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.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 +1 -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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +61 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +37 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +89 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +41 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +40 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +41 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +41 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +41 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +40 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +20 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +135 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +37 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +1 -1
- 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 +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +4 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
- 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 +1 -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 +20 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +2 -3
- 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 +3 -3
- 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 +12 -3
- 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 +1 -1
- 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 +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +12 -22
- 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 +1 -1
- 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 +2 -2
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
- 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 +104 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +3 -3
- 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 +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +20 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +7 -117
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +36 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +34 -112
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +268 -991
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +296 -536
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +232 -409
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +20 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +30 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +24 -170
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +2 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +240 -398
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +20 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +149 -296
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +56 -59
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +149 -296
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +1 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +1 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +59 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +56 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +20 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +56 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +56 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +25 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +10 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_message.hpp +27 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +193 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_payload.hpp +143 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +24 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +77 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +20 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +50 -50
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +46 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +33 -96
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +62 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +48 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +56 -60
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +18 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +27 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +15 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +10 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +37 -100
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +99 -107
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +66 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +55 -178
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +55 -178
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +123 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +84 -234
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +32 -97
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +73 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +5 -58
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +3 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +60 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +39 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +36 -98
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +206 -429
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +60 -206
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +456 -970
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +43 -411
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +207 -423
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +19 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +32 -109
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +79 -425
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +213 -427
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +58 -194
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +91 -120
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +33 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +26 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +28 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +13 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +16 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +33 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +13 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +15 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +26 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +46 -76
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +9 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- 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 +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +18 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +9 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +24 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +14 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
- 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 +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +29 -105
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +21 -29
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +24 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +36 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +176 -333
- data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +11 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +57 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +136 -168
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +35 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +256 -298
- data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +35 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +108 -246
- data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +70 -79
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +127 -161
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +3 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +3 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +16 -75
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +15 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +1 -1
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +51 -82
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +91 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +62 -62
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +35 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +91 -273
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +14 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +15 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +16 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +20 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +22 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +22 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +6 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +15 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +8 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +122 -146
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +34 -50
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -28
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +2 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +0 -49
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +107 -40
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +32 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -60
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +230 -1740
- data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +140 -290
- data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
- data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -279
- data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +16 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +16 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +27 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +144 -145
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +48 -49
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +14 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +71 -69
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +48 -48
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +165 -153
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +162 -163
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -12
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +6 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +44 -46
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +83 -84
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +77 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +81 -85
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +231 -233
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +86 -86
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +107 -110
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +9 -11
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +29 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -82
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +81 -81
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +24 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +147 -122
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +109 -110
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +32 -32
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +165 -194
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +263 -199
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +296 -61
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +38 -124
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +27 -20
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +8 -40
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +22 -8
- data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +362 -31
- data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +29 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/{smart_ptr → core}/detail/sp_thread_sleep.hpp +39 -21
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
- data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +33 -36
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +23 -16
- data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +10 -40
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +29 -5
- data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -6
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +6 -97
- data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +22 -10
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +49 -198
- data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +277 -420
- data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
- data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +24 -25
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +12 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +24 -25
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +65 -66
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +20 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +41 -41
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +14 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +6 -17
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +20 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +58 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +268 -239
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +57 -58
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +12 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +24 -25
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +24 -25
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +14 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +61 -62
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +24 -25
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +12 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +36 -37
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -34
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +612 -645
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +85 -79
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +25 -32
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +21 -16
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -12
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +10 -18
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +13 -14
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
- data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +20 -19
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +41 -56
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +32 -34
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +65 -24
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +28 -28
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +72 -23
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +81 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
- data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +97 -17
- data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +140 -4
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +108 -4
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +18 -5
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +180 -3
- data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +2 -96
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
- data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -82
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +2 -11
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -11
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +14 -50
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +16 -55
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +62 -124
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +29 -52
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -46
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +860 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +716 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +120 -85
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1764 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2271 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +204 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +651 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +356 -1118
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +96 -150
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +136 -19
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +171 -103
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +70 -46
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +406 -899
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +895 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +699 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +253 -618
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +8 -14
- data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +14 -20
- data/src/helper-scripts/wsgi-loader.py +2 -2
- data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +16 -5
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +3 -1
- data/src/ruby_supportlib/phusion_passenger/native_support.rb +10 -7
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +8 -10
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +14 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +4 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +11 -12
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger.rb +8 -8
- metadata +109 -150
- data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
- data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -406
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1254
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -498
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -111
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -296
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -101
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -287
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -296
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -318
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -259
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -259
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -492
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -256
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -459
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -300
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -275
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -300
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -495
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -462
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -581
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -563
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -179
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
- data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -1278
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +0 -133
- data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
- data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -278
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
- data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
- data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
- data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
- data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +0 -1921
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -64
- /data/dev/{webpacketpp.patch → websocketpp.patch} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
|
2
2
|
// Copyright (C) 2005-2016 Daniel James
|
|
3
|
-
// Copyright (C) 2022 Joaquin M Lopez Munoz.
|
|
4
|
-
// Copyright (C) 2022 Christian Mazakas
|
|
3
|
+
// Copyright (C) 2022-2024 Joaquin M Lopez Munoz.
|
|
4
|
+
// Copyright (C) 2022-2023 Christian Mazakas
|
|
5
|
+
// Copyright (C) 2024 Braden Ganetsky
|
|
5
6
|
//
|
|
6
7
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
7
8
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
@@ -14,142 +15,38 @@
|
|
|
14
15
|
#pragma once
|
|
15
16
|
#endif
|
|
16
17
|
|
|
18
|
+
#include <boost/unordered/detail/allocator_constructed.hpp>
|
|
19
|
+
#include <boost/unordered/detail/fca.hpp>
|
|
20
|
+
#include <boost/unordered/detail/opt_storage.hpp>
|
|
21
|
+
#include <boost/unordered/detail/serialize_tracked_address.hpp>
|
|
22
|
+
#include <boost/unordered/detail/static_assert.hpp>
|
|
23
|
+
#include <boost/unordered/detail/type_traits.hpp>
|
|
24
|
+
|
|
17
25
|
#include <boost/assert.hpp>
|
|
18
26
|
#include <boost/core/allocator_traits.hpp>
|
|
19
27
|
#include <boost/core/bit.hpp>
|
|
28
|
+
#include <boost/core/invoke_swap.hpp>
|
|
20
29
|
#include <boost/core/no_exceptions_support.hpp>
|
|
21
30
|
#include <boost/core/pointer_traits.hpp>
|
|
22
|
-
#include <boost/
|
|
23
|
-
#include <boost/
|
|
24
|
-
#include <boost/
|
|
25
|
-
#include <boost/preprocessor/cat.hpp>
|
|
26
|
-
#include <boost/preprocessor/repetition/enum.hpp>
|
|
27
|
-
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
|
28
|
-
#include <boost/preprocessor/repetition/enum_params.hpp>
|
|
29
|
-
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
|
30
|
-
#include <boost/preprocessor/seq/enum.hpp>
|
|
31
|
-
#include <boost/preprocessor/seq/size.hpp>
|
|
32
|
-
#include <boost/swap.hpp>
|
|
31
|
+
#include <boost/core/serialization.hpp>
|
|
32
|
+
#include <boost/mp11/algorithm.hpp>
|
|
33
|
+
#include <boost/mp11/list.hpp>
|
|
33
34
|
#include <boost/throw_exception.hpp>
|
|
34
|
-
|
|
35
|
-
#include <
|
|
36
|
-
#include <boost/type_traits/aligned_storage.hpp>
|
|
37
|
-
#include <boost/type_traits/alignment_of.hpp>
|
|
38
|
-
#include <boost/type_traits/integral_constant.hpp>
|
|
39
|
-
#include <boost/type_traits/is_base_of.hpp>
|
|
40
|
-
#include <boost/type_traits/is_class.hpp>
|
|
41
|
-
#include <boost/type_traits/is_convertible.hpp>
|
|
42
|
-
#include <boost/type_traits/is_empty.hpp>
|
|
43
|
-
#include <boost/type_traits/is_nothrow_move_assignable.hpp>
|
|
44
|
-
#include <boost/type_traits/is_nothrow_move_constructible.hpp>
|
|
45
|
-
#include <boost/type_traits/is_nothrow_swappable.hpp>
|
|
46
|
-
#include <boost/type_traits/is_same.hpp>
|
|
47
|
-
#include <boost/type_traits/make_void.hpp>
|
|
48
|
-
#include <boost/type_traits/remove_const.hpp>
|
|
49
|
-
#include <boost/unordered/detail/fca.hpp>
|
|
50
|
-
#include <boost/unordered/detail/type_traits.hpp>
|
|
51
|
-
#include <boost/unordered/detail/fwd.hpp>
|
|
52
|
-
#include <boost/utility/addressof.hpp>
|
|
53
|
-
#include <boost/utility/enable_if.hpp>
|
|
35
|
+
|
|
36
|
+
#include <algorithm>
|
|
54
37
|
#include <cmath>
|
|
55
38
|
#include <iterator>
|
|
39
|
+
#include <limits>
|
|
56
40
|
#include <stdexcept>
|
|
57
|
-
#include <utility>
|
|
58
|
-
|
|
59
|
-
#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
|
|
60
41
|
#include <type_traits>
|
|
61
|
-
#
|
|
62
|
-
|
|
63
|
-
////////////////////////////////////////////////////////////////////////////////
|
|
64
|
-
// Configuration
|
|
65
|
-
//
|
|
66
|
-
// Unless documented elsewhere these configuration macros should be considered
|
|
67
|
-
// an implementation detail, I'll try not to break them, but you never know.
|
|
68
|
-
|
|
69
|
-
// Use Sun C++ workarounds
|
|
70
|
-
// I'm not sure which versions of the compiler require these workarounds, so
|
|
71
|
-
// I'm just using them of everything older than the current test compilers
|
|
72
|
-
// (as of May 2017).
|
|
73
|
-
|
|
74
|
-
#if !defined(BOOST_UNORDERED_SUN_WORKAROUNDS1)
|
|
75
|
-
#if BOOST_COMP_SUNPRO && BOOST_COMP_SUNPRO < BOOST_VERSION_NUMBER(5, 20, 0)
|
|
76
|
-
#define BOOST_UNORDERED_SUN_WORKAROUNDS1 1
|
|
77
|
-
#else
|
|
78
|
-
#define BOOST_UNORDERED_SUN_WORKAROUNDS1 0
|
|
79
|
-
#endif
|
|
80
|
-
#endif
|
|
81
|
-
|
|
82
|
-
// BOOST_UNORDERED_EMPLACE_LIMIT = The maximum number of parameters in
|
|
83
|
-
// emplace (not including things like hints). Don't set it to a lower value, as
|
|
84
|
-
// that might break something.
|
|
85
|
-
|
|
86
|
-
#if !defined BOOST_UNORDERED_EMPLACE_LIMIT
|
|
87
|
-
#define BOOST_UNORDERED_EMPLACE_LIMIT 10
|
|
88
|
-
#endif
|
|
89
|
-
|
|
90
|
-
// BOOST_UNORDERED_TUPLE_ARGS
|
|
91
|
-
//
|
|
92
|
-
// Maximum number of std::tuple members to support, or 0 if std::tuple
|
|
93
|
-
// isn't avaiable. More are supported when full C++11 is used.
|
|
94
|
-
|
|
95
|
-
// Already defined, so do nothing
|
|
96
|
-
#if defined(BOOST_UNORDERED_TUPLE_ARGS)
|
|
97
|
-
|
|
98
|
-
// Assume if we have C++11 tuple it's properly variadic,
|
|
99
|
-
// and just use a max number of 10 arguments.
|
|
100
|
-
#elif !defined(BOOST_NO_CXX11_HDR_TUPLE)
|
|
101
|
-
#define BOOST_UNORDERED_TUPLE_ARGS 10
|
|
102
|
-
|
|
103
|
-
// Visual C++ has a decent enough tuple for piecewise construction,
|
|
104
|
-
// so use that if available, using _VARIADIC_MAX for the maximum
|
|
105
|
-
// number of parameters. Note that this comes after the check
|
|
106
|
-
// for a full C++11 tuple.
|
|
107
|
-
#elif defined(BOOST_MSVC)
|
|
108
|
-
#if !BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT
|
|
109
|
-
#define BOOST_UNORDERED_TUPLE_ARGS 0
|
|
110
|
-
#elif defined(_VARIADIC_MAX)
|
|
111
|
-
#define BOOST_UNORDERED_TUPLE_ARGS _VARIADIC_MAX
|
|
112
|
-
#else
|
|
113
|
-
#define BOOST_UNORDERED_TUPLE_ARGS 5
|
|
114
|
-
#endif
|
|
115
|
-
|
|
116
|
-
// Assume that we don't have std::tuple
|
|
117
|
-
#else
|
|
118
|
-
#define BOOST_UNORDERED_TUPLE_ARGS 0
|
|
119
|
-
#endif
|
|
120
|
-
|
|
121
|
-
#if BOOST_UNORDERED_TUPLE_ARGS
|
|
122
|
-
#include <tuple>
|
|
123
|
-
#endif
|
|
124
|
-
|
|
125
|
-
// BOOST_UNORDERED_CXX11_CONSTRUCTION
|
|
126
|
-
//
|
|
127
|
-
// Use C++11 construction, requires variadic arguments, good construct support
|
|
128
|
-
// in allocator_traits and piecewise construction of std::pair
|
|
129
|
-
// Otherwise allocators aren't used for construction/destruction
|
|
130
|
-
|
|
131
|
-
#if BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT && \
|
|
132
|
-
!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && BOOST_UNORDERED_TUPLE_ARGS
|
|
133
|
-
#if BOOST_COMP_SUNPRO && BOOST_LIB_STD_GNU
|
|
134
|
-
// Sun C++ std::pair piecewise construction doesn't seem to be exception safe.
|
|
135
|
-
// (At least for Sun C++ 12.5 using libstdc++).
|
|
136
|
-
#define BOOST_UNORDERED_CXX11_CONSTRUCTION 0
|
|
137
|
-
#elif BOOST_COMP_GNUC && BOOST_COMP_GNUC < BOOST_VERSION_NUMBER(4, 7, 0)
|
|
138
|
-
// Piecewise construction in GCC 4.6 doesn't work for uncopyable types.
|
|
139
|
-
#define BOOST_UNORDERED_CXX11_CONSTRUCTION 0
|
|
140
|
-
#elif !defined(BOOST_NO_CXX11_ALLOCATOR)
|
|
141
|
-
#define BOOST_UNORDERED_CXX11_CONSTRUCTION 1
|
|
142
|
-
#endif
|
|
143
|
-
#endif
|
|
144
|
-
|
|
145
|
-
#if !defined(BOOST_UNORDERED_CXX11_CONSTRUCTION)
|
|
146
|
-
#define BOOST_UNORDERED_CXX11_CONSTRUCTION 0
|
|
147
|
-
#endif
|
|
42
|
+
#include <utility>
|
|
43
|
+
#include <tuple> // std::forward_as_tuple
|
|
148
44
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
45
|
+
namespace boost {
|
|
46
|
+
namespace tuples {
|
|
47
|
+
struct null_type;
|
|
48
|
+
}
|
|
49
|
+
} // namespace boost
|
|
153
50
|
|
|
154
51
|
// BOOST_UNORDERED_SUPPRESS_DEPRECATED
|
|
155
52
|
//
|
|
@@ -184,6 +81,10 @@
|
|
|
184
81
|
|
|
185
82
|
namespace boost {
|
|
186
83
|
namespace unordered {
|
|
84
|
+
|
|
85
|
+
using std::piecewise_construct;
|
|
86
|
+
using std::piecewise_construct_t;
|
|
87
|
+
|
|
187
88
|
namespace detail {
|
|
188
89
|
|
|
189
90
|
template <typename Types> struct table;
|
|
@@ -205,37 +106,41 @@ namespace boost {
|
|
|
205
106
|
template <class T> no_key(T const&) {}
|
|
206
107
|
};
|
|
207
108
|
|
|
109
|
+
struct converting_key
|
|
110
|
+
{
|
|
111
|
+
};
|
|
112
|
+
|
|
208
113
|
namespace func {
|
|
209
114
|
template <class T> inline void ignore_unused_variable_warning(T const&)
|
|
210
115
|
{
|
|
211
116
|
}
|
|
212
|
-
}
|
|
117
|
+
} // namespace func
|
|
213
118
|
|
|
214
119
|
//////////////////////////////////////////////////////////////////////////
|
|
215
120
|
// iterator SFINAE
|
|
216
121
|
|
|
217
122
|
template <typename I>
|
|
218
|
-
struct is_forward :
|
|
123
|
+
struct is_forward : std::is_base_of<std::forward_iterator_tag,
|
|
219
124
|
typename std::iterator_traits<I>::iterator_category>
|
|
220
125
|
{
|
|
221
126
|
};
|
|
222
127
|
|
|
223
128
|
template <typename I, typename ReturnType>
|
|
224
129
|
struct enable_if_forward
|
|
225
|
-
|
|
226
|
-
|
|
130
|
+
: std::enable_if<boost::unordered::detail::is_forward<I>::value,
|
|
131
|
+
ReturnType>
|
|
227
132
|
{
|
|
228
133
|
};
|
|
229
134
|
|
|
230
135
|
template <typename I, typename ReturnType>
|
|
231
136
|
struct disable_if_forward
|
|
232
|
-
|
|
233
|
-
|
|
137
|
+
: std::enable_if<!boost::unordered::detail::is_forward<I>::value,
|
|
138
|
+
ReturnType>
|
|
234
139
|
{
|
|
235
140
|
};
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
141
|
+
} // namespace detail
|
|
142
|
+
} // namespace unordered
|
|
143
|
+
} // namespace boost
|
|
239
144
|
|
|
240
145
|
namespace boost {
|
|
241
146
|
namespace unordered {
|
|
@@ -253,7 +158,8 @@ namespace boost {
|
|
|
253
158
|
|
|
254
159
|
template <class I>
|
|
255
160
|
inline typename boost::unordered::detail::disable_if_forward<I,
|
|
256
|
-
std::size_t>::type
|
|
161
|
+
std::size_t>::type
|
|
162
|
+
insert_size(I, I)
|
|
257
163
|
{
|
|
258
164
|
return 1;
|
|
259
165
|
}
|
|
@@ -277,7 +183,7 @@ namespace boost {
|
|
|
277
183
|
{
|
|
278
184
|
}
|
|
279
185
|
compressed_base(T& x, move_tag)
|
|
280
|
-
: empty_value<T>(boost::empty_init_t(),
|
|
186
|
+
: empty_value<T>(boost::empty_init_t(), std::move(x))
|
|
281
187
|
{
|
|
282
188
|
}
|
|
283
189
|
|
|
@@ -295,8 +201,8 @@ namespace boost {
|
|
|
295
201
|
|
|
296
202
|
template <typename T1, typename T2>
|
|
297
203
|
struct compressed
|
|
298
|
-
|
|
299
|
-
|
|
204
|
+
: private boost::unordered::detail::generate_base<T1, 1>::type,
|
|
205
|
+
private boost::unordered::detail::generate_base<T2, 2>::type
|
|
300
206
|
{
|
|
301
207
|
typedef typename generate_base<T1, 1>::type base1;
|
|
302
208
|
typedef typename generate_base<T2, 2>::type base2;
|
|
@@ -338,14 +244,14 @@ namespace boost {
|
|
|
338
244
|
|
|
339
245
|
void move_assign(compressed& x)
|
|
340
246
|
{
|
|
341
|
-
first() =
|
|
342
|
-
second() =
|
|
247
|
+
first() = std::move(x.first());
|
|
248
|
+
second() = std::move(x.second());
|
|
343
249
|
}
|
|
344
250
|
|
|
345
251
|
void swap(compressed& x)
|
|
346
252
|
{
|
|
347
|
-
boost::
|
|
348
|
-
boost::
|
|
253
|
+
boost::core::invoke_swap(first(), x.first());
|
|
254
|
+
boost::core::invoke_swap(second(), x.second());
|
|
349
255
|
}
|
|
350
256
|
|
|
351
257
|
private:
|
|
@@ -382,37 +288,8 @@ namespace boost {
|
|
|
382
288
|
//////////////////////////////////////////////////////////////////////////
|
|
383
289
|
// Bits and pieces for implementing traits
|
|
384
290
|
|
|
385
|
-
template <typename T>
|
|
386
|
-
|
|
387
|
-
struct choice9
|
|
388
|
-
{
|
|
389
|
-
typedef char (&type)[9];
|
|
390
|
-
};
|
|
391
|
-
struct choice8 : choice9
|
|
392
|
-
{
|
|
393
|
-
typedef char (&type)[8];
|
|
394
|
-
};
|
|
395
|
-
struct choice7 : choice8
|
|
396
|
-
{
|
|
397
|
-
typedef char (&type)[7];
|
|
398
|
-
};
|
|
399
|
-
struct choice6 : choice7
|
|
400
|
-
{
|
|
401
|
-
typedef char (&type)[6];
|
|
402
|
-
};
|
|
403
|
-
struct choice5 : choice6
|
|
404
|
-
{
|
|
405
|
-
typedef char (&type)[5];
|
|
406
|
-
};
|
|
407
|
-
struct choice4 : choice5
|
|
408
|
-
{
|
|
409
|
-
typedef char (&type)[4];
|
|
410
|
-
};
|
|
411
|
-
struct choice3 : choice4
|
|
412
|
-
{
|
|
413
|
-
typedef char (&type)[3];
|
|
414
|
-
};
|
|
415
|
-
struct choice2 : choice3
|
|
291
|
+
template <typename T> typename std::add_lvalue_reference<T>::type make();
|
|
292
|
+
struct choice2
|
|
416
293
|
{
|
|
417
294
|
typedef char (&type)[2];
|
|
418
295
|
};
|
|
@@ -437,139 +314,9 @@ namespace boost {
|
|
|
437
314
|
{
|
|
438
315
|
template <typename T> convert_from_anything(T const&);
|
|
439
316
|
};
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
////////////////////////////////////////////////////////////////////////////
|
|
445
|
-
// emplace_args
|
|
446
|
-
//
|
|
447
|
-
// Either forwarding variadic arguments, or storing the arguments in
|
|
448
|
-
// emplace_args##n
|
|
449
|
-
|
|
450
|
-
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
451
|
-
|
|
452
|
-
#define BOOST_UNORDERED_EMPLACE_TEMPLATE typename... Args
|
|
453
|
-
#define BOOST_UNORDERED_EMPLACE_ARGS BOOST_FWD_REF(Args)... args
|
|
454
|
-
#define BOOST_UNORDERED_EMPLACE_FORWARD boost::forward<Args>(args)...
|
|
455
|
-
|
|
456
|
-
#else
|
|
457
|
-
|
|
458
|
-
#define BOOST_UNORDERED_EMPLACE_TEMPLATE typename Args
|
|
459
|
-
#define BOOST_UNORDERED_EMPLACE_ARGS Args const& args
|
|
460
|
-
#define BOOST_UNORDERED_EMPLACE_FORWARD args
|
|
461
|
-
|
|
462
|
-
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
463
|
-
|
|
464
|
-
#define BOOST_UNORDERED_EARGS_MEMBER(z, n, _) \
|
|
465
|
-
typedef BOOST_FWD_REF(BOOST_PP_CAT(A, n)) BOOST_PP_CAT(Arg, n); \
|
|
466
|
-
BOOST_PP_CAT(Arg, n) BOOST_PP_CAT(a, n);
|
|
467
|
-
|
|
468
|
-
#else
|
|
469
|
-
|
|
470
|
-
#define BOOST_UNORDERED_EARGS_MEMBER(z, n, _) \
|
|
471
|
-
typedef typename boost::add_lvalue_reference<BOOST_PP_CAT(A, n)>::type \
|
|
472
|
-
BOOST_PP_CAT(Arg, n); \
|
|
473
|
-
BOOST_PP_CAT(Arg, n) BOOST_PP_CAT(a, n);
|
|
474
|
-
|
|
475
|
-
#endif
|
|
476
|
-
|
|
477
|
-
#define BOOST_UNORDERED_FWD_PARAM(z, n, a) \
|
|
478
|
-
BOOST_FWD_REF(BOOST_PP_CAT(A, n)) BOOST_PP_CAT(a, n)
|
|
479
|
-
|
|
480
|
-
#define BOOST_UNORDERED_CALL_FORWARD(z, i, a) \
|
|
481
|
-
boost::forward<BOOST_PP_CAT(A, i)>(BOOST_PP_CAT(a, i))
|
|
482
|
-
|
|
483
|
-
#define BOOST_UNORDERED_EARGS_INIT(z, n, _) \
|
|
484
|
-
BOOST_PP_CAT(a, n)(BOOST_PP_CAT(b, n))
|
|
485
|
-
|
|
486
|
-
#define BOOST_UNORDERED_EARGS(z, n, _) \
|
|
487
|
-
template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
488
|
-
struct BOOST_PP_CAT(emplace_args, n) \
|
|
489
|
-
{ \
|
|
490
|
-
BOOST_PP_REPEAT_##z(n, BOOST_UNORDERED_EARGS_MEMBER, _) BOOST_PP_CAT( \
|
|
491
|
-
emplace_args, n)(BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, Arg, b)) \
|
|
492
|
-
: BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_EARGS_INIT, _) \
|
|
493
|
-
{ \
|
|
494
|
-
} \
|
|
495
|
-
}; \
|
|
496
|
-
\
|
|
497
|
-
template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
498
|
-
inline BOOST_PP_CAT(emplace_args, n)<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> \
|
|
499
|
-
create_emplace_args(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_FWD_PARAM, b)) \
|
|
500
|
-
{ \
|
|
501
|
-
BOOST_PP_CAT(emplace_args, n)<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> e( \
|
|
502
|
-
BOOST_PP_ENUM_PARAMS_Z(z, n, b)); \
|
|
503
|
-
return e; \
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
namespace boost {
|
|
507
|
-
namespace unordered {
|
|
508
|
-
namespace detail {
|
|
509
|
-
template <typename A0> struct emplace_args1
|
|
510
|
-
{
|
|
511
|
-
BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
|
|
512
|
-
|
|
513
|
-
explicit emplace_args1(Arg0 b0) : a0(b0) {}
|
|
514
|
-
};
|
|
515
|
-
|
|
516
|
-
template <typename A0>
|
|
517
|
-
inline emplace_args1<A0> create_emplace_args(BOOST_FWD_REF(A0) b0)
|
|
518
|
-
{
|
|
519
|
-
emplace_args1<A0> e(b0);
|
|
520
|
-
return e;
|
|
521
|
-
}
|
|
522
|
-
|
|
523
|
-
template <typename A0, typename A1> struct emplace_args2
|
|
524
|
-
{
|
|
525
|
-
BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
|
|
526
|
-
BOOST_UNORDERED_EARGS_MEMBER(1, 1, _)
|
|
527
|
-
|
|
528
|
-
emplace_args2(Arg0 b0, Arg1 b1) : a0(b0), a1(b1) {}
|
|
529
|
-
};
|
|
530
|
-
|
|
531
|
-
template <typename A0, typename A1>
|
|
532
|
-
inline emplace_args2<A0, A1> create_emplace_args(
|
|
533
|
-
BOOST_FWD_REF(A0) b0, BOOST_FWD_REF(A1) b1)
|
|
534
|
-
{
|
|
535
|
-
emplace_args2<A0, A1> e(b0, b1);
|
|
536
|
-
return e;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
template <typename A0, typename A1, typename A2> struct emplace_args3
|
|
540
|
-
{
|
|
541
|
-
BOOST_UNORDERED_EARGS_MEMBER(1, 0, _)
|
|
542
|
-
BOOST_UNORDERED_EARGS_MEMBER(1, 1, _)
|
|
543
|
-
BOOST_UNORDERED_EARGS_MEMBER(1, 2, _)
|
|
544
|
-
|
|
545
|
-
emplace_args3(Arg0 b0, Arg1 b1, Arg2 b2) : a0(b0), a1(b1), a2(b2) {}
|
|
546
|
-
};
|
|
547
|
-
|
|
548
|
-
template <typename A0, typename A1, typename A2>
|
|
549
|
-
inline emplace_args3<A0, A1, A2> create_emplace_args(
|
|
550
|
-
BOOST_FWD_REF(A0) b0, BOOST_FWD_REF(A1) b1, BOOST_FWD_REF(A2) b2)
|
|
551
|
-
{
|
|
552
|
-
emplace_args3<A0, A1, A2> e(b0, b1, b2);
|
|
553
|
-
return e;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
BOOST_UNORDERED_EARGS(1, 4, _)
|
|
557
|
-
BOOST_UNORDERED_EARGS(1, 5, _)
|
|
558
|
-
BOOST_UNORDERED_EARGS(1, 6, _)
|
|
559
|
-
BOOST_UNORDERED_EARGS(1, 7, _)
|
|
560
|
-
BOOST_UNORDERED_EARGS(1, 8, _)
|
|
561
|
-
BOOST_UNORDERED_EARGS(1, 9, _)
|
|
562
|
-
BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
|
|
563
|
-
BOOST_UNORDERED_EARGS, _)
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
#undef BOOST_UNORDERED_DEFINE_EMPLACE_ARGS
|
|
569
|
-
#undef BOOST_UNORDERED_EARGS_MEMBER
|
|
570
|
-
#undef BOOST_UNORDERED_EARGS_INIT
|
|
571
|
-
|
|
572
|
-
#endif
|
|
317
|
+
} // namespace detail
|
|
318
|
+
} // namespace unordered
|
|
319
|
+
} // namespace boost
|
|
573
320
|
|
|
574
321
|
////////////////////////////////////////////////////////////////////////////////
|
|
575
322
|
//
|
|
@@ -580,35 +327,8 @@ namespace boost {
|
|
|
580
327
|
namespace unordered {
|
|
581
328
|
namespace detail {
|
|
582
329
|
|
|
583
|
-
////////////////////////////////////////////////////////////////////////////
|
|
584
|
-
//
|
|
585
|
-
//
|
|
586
|
-
// Uses the standard versions if available.
|
|
587
|
-
|
|
588
|
-
#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
|
|
589
|
-
|
|
590
|
-
using std::integral_constant;
|
|
591
|
-
using std::true_type;
|
|
592
|
-
using std::false_type;
|
|
593
|
-
|
|
594
|
-
#else
|
|
595
|
-
|
|
596
|
-
template <typename T, T Value> struct integral_constant
|
|
597
|
-
{
|
|
598
|
-
enum
|
|
599
|
-
{
|
|
600
|
-
value = Value
|
|
601
|
-
};
|
|
602
|
-
};
|
|
603
|
-
|
|
604
|
-
typedef boost::unordered::detail::integral_constant<bool, true> true_type;
|
|
605
|
-
typedef boost::unordered::detail::integral_constant<bool, false>
|
|
606
|
-
false_type;
|
|
607
|
-
|
|
608
|
-
#endif
|
|
609
|
-
|
|
610
|
-
////////////////////////////////////////////////////////////////////////////
|
|
611
|
-
// Explicitly call a destructor
|
|
330
|
+
////////////////////////////////////////////////////////////////////////////
|
|
331
|
+
// Explicitly call a destructor
|
|
612
332
|
|
|
613
333
|
#if defined(BOOST_MSVC)
|
|
614
334
|
#pragma warning(push)
|
|
@@ -617,7 +337,7 @@ namespace boost {
|
|
|
617
337
|
|
|
618
338
|
namespace func {
|
|
619
339
|
template <class T> inline void destroy(T* x) { x->~T(); }
|
|
620
|
-
}
|
|
340
|
+
} // namespace func
|
|
621
341
|
|
|
622
342
|
#if defined(BOOST_MSVC)
|
|
623
343
|
#pragma warning(pop)
|
|
@@ -632,8 +352,7 @@ namespace boost {
|
|
|
632
352
|
{
|
|
633
353
|
typedef ValueType value_type;
|
|
634
354
|
|
|
635
|
-
|
|
636
|
-
boost::alignment_of<value_type>::value>::type data_;
|
|
355
|
+
opt_storage<value_type> data_;
|
|
637
356
|
|
|
638
357
|
value_base() : data_() {}
|
|
639
358
|
|
|
@@ -657,8 +376,6 @@ namespace boost {
|
|
|
657
376
|
|
|
658
377
|
template <typename T> class optional
|
|
659
378
|
{
|
|
660
|
-
BOOST_MOVABLE_BUT_NOT_COPYABLE(optional)
|
|
661
|
-
|
|
662
379
|
boost::unordered::detail::value_base<T> value_;
|
|
663
380
|
bool has_value_;
|
|
664
381
|
|
|
@@ -673,16 +390,19 @@ namespace boost {
|
|
|
673
390
|
void move(optional<T>& x)
|
|
674
391
|
{
|
|
675
392
|
BOOST_ASSERT(!has_value_ && x.has_value_);
|
|
676
|
-
new (value_.value_ptr()) T(
|
|
393
|
+
new (value_.value_ptr()) T(std::move(x.value_.value()));
|
|
677
394
|
boost::unordered::detail::func::destroy(x.value_.value_ptr());
|
|
678
395
|
has_value_ = true;
|
|
679
396
|
x.has_value_ = false;
|
|
680
397
|
}
|
|
681
398
|
|
|
682
399
|
public:
|
|
683
|
-
optional()
|
|
400
|
+
optional() noexcept : has_value_(false) {}
|
|
684
401
|
|
|
685
|
-
optional(
|
|
402
|
+
optional(optional const&) = delete;
|
|
403
|
+
optional& operator=(optional const&) = delete;
|
|
404
|
+
|
|
405
|
+
optional(optional<T>&& x) : has_value_(false)
|
|
686
406
|
{
|
|
687
407
|
if (x.has_value_) {
|
|
688
408
|
move(x);
|
|
@@ -694,7 +414,7 @@ namespace boost {
|
|
|
694
414
|
new (value_.value_ptr()) T(x);
|
|
695
415
|
}
|
|
696
416
|
|
|
697
|
-
optional& operator=(
|
|
417
|
+
optional& operator=(optional<T>&& x)
|
|
698
418
|
{
|
|
699
419
|
destroy();
|
|
700
420
|
if (x.has_value_) {
|
|
@@ -728,15 +448,15 @@ namespace boost {
|
|
|
728
448
|
move(x);
|
|
729
449
|
}
|
|
730
450
|
} else if (has_value_) {
|
|
731
|
-
boost::
|
|
451
|
+
boost::core::invoke_swap(value_.value(), x.value_.value());
|
|
732
452
|
}
|
|
733
453
|
}
|
|
734
454
|
|
|
735
455
|
friend void swap(optional<T>& x, optional<T>& y) { x.swap(y); }
|
|
736
456
|
};
|
|
737
|
-
}
|
|
738
|
-
}
|
|
739
|
-
}
|
|
457
|
+
} // namespace detail
|
|
458
|
+
} // namespace unordered
|
|
459
|
+
} // namespace boost
|
|
740
460
|
|
|
741
461
|
////////////////////////////////////////////////////////////////////////////////
|
|
742
462
|
//
|
|
@@ -756,209 +476,9 @@ namespace boost {
|
|
|
756
476
|
struct rebind_wrap : boost::allocator_rebind<Alloc, T>
|
|
757
477
|
{
|
|
758
478
|
};
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
////////////////////////////////////////////////////////////////////////////
|
|
764
|
-
// Functions used to construct nodes. Emulates variadic construction,
|
|
765
|
-
// piecewise construction etc.
|
|
766
|
-
|
|
767
|
-
////////////////////////////////////////////////////////////////////////////
|
|
768
|
-
// construct_value
|
|
769
|
-
//
|
|
770
|
-
// Only use allocator_traits::construct, allocator_traits::destroy when full
|
|
771
|
-
// C++11 support is available.
|
|
772
|
-
|
|
773
|
-
#if BOOST_UNORDERED_CXX11_CONSTRUCTION
|
|
774
|
-
|
|
775
|
-
#elif !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
776
|
-
|
|
777
|
-
namespace boost {
|
|
778
|
-
namespace unordered {
|
|
779
|
-
namespace detail {
|
|
780
|
-
namespace func {
|
|
781
|
-
template <typename T, typename... Args>
|
|
782
|
-
inline void construct_value(T* address, BOOST_FWD_REF(Args)... args)
|
|
783
|
-
{
|
|
784
|
-
new ((void*)address) T(boost::forward<Args>(args)...);
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
|
|
791
|
-
#else
|
|
792
|
-
|
|
793
|
-
namespace boost {
|
|
794
|
-
namespace unordered {
|
|
795
|
-
namespace detail {
|
|
796
|
-
namespace func {
|
|
797
|
-
template <typename T> inline void construct_value(T* address)
|
|
798
|
-
{
|
|
799
|
-
new ((void*)address) T();
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
template <typename T, typename A0>
|
|
803
|
-
inline void construct_value(T* address, BOOST_FWD_REF(A0) a0)
|
|
804
|
-
{
|
|
805
|
-
new ((void*)address) T(boost::forward<A0>(a0));
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
#endif
|
|
813
|
-
|
|
814
|
-
////////////////////////////////////////////////////////////////////////////
|
|
815
|
-
// Construct from tuple
|
|
816
|
-
//
|
|
817
|
-
// Used to emulate piecewise construction.
|
|
818
|
-
|
|
819
|
-
#define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(z, n, namespace_) \
|
|
820
|
-
template <typename Alloc, typename T, \
|
|
821
|
-
BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
822
|
-
void construct_from_tuple(Alloc&, T* ptr, \
|
|
823
|
-
namespace_::tuple<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> const& x) \
|
|
824
|
-
{ \
|
|
825
|
-
new ((void*)ptr) \
|
|
826
|
-
T(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_GET_TUPLE_ARG, namespace_)); \
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
#define BOOST_UNORDERED_GET_TUPLE_ARG(z, n, namespace_) namespace_::get<n>(x)
|
|
830
|
-
|
|
831
|
-
// construct_from_tuple for boost::tuple
|
|
832
|
-
// The workaround for old Sun compilers comes later in the file.
|
|
833
|
-
|
|
834
|
-
#if !BOOST_UNORDERED_SUN_WORKAROUNDS1
|
|
835
|
-
|
|
836
|
-
namespace boost {
|
|
837
|
-
namespace unordered {
|
|
838
|
-
namespace detail {
|
|
839
|
-
namespace func {
|
|
840
|
-
template <typename Alloc, typename T>
|
|
841
|
-
void construct_from_tuple(Alloc&, T* ptr, boost::tuple<>)
|
|
842
|
-
{
|
|
843
|
-
new ((void*)ptr) T();
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost)
|
|
847
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, boost)
|
|
848
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, boost)
|
|
849
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, boost)
|
|
850
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, boost)
|
|
851
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 6, boost)
|
|
852
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 7, boost)
|
|
853
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 8, boost)
|
|
854
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 9, boost)
|
|
855
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 10, boost)
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
}
|
|
860
|
-
|
|
861
|
-
#endif
|
|
862
|
-
|
|
863
|
-
// construct_from_tuple for std::tuple
|
|
864
|
-
|
|
865
|
-
#if !BOOST_UNORDERED_CXX11_CONSTRUCTION && BOOST_UNORDERED_TUPLE_ARGS
|
|
866
|
-
|
|
867
|
-
namespace boost {
|
|
868
|
-
namespace unordered {
|
|
869
|
-
namespace detail {
|
|
870
|
-
namespace func {
|
|
871
|
-
template <typename Alloc, typename T>
|
|
872
|
-
void construct_from_tuple(Alloc&, T* ptr, std::tuple<>)
|
|
873
|
-
{
|
|
874
|
-
new ((void*)ptr) T();
|
|
875
|
-
}
|
|
876
|
-
|
|
877
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, std)
|
|
878
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, std)
|
|
879
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, std)
|
|
880
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, std)
|
|
881
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, std)
|
|
882
|
-
|
|
883
|
-
#if BOOST_UNORDERED_TUPLE_ARGS >= 6
|
|
884
|
-
BOOST_PP_REPEAT_FROM_TO(6, BOOST_PP_INC(BOOST_UNORDERED_TUPLE_ARGS),
|
|
885
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE, std)
|
|
886
|
-
#endif
|
|
887
|
-
}
|
|
888
|
-
}
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
|
|
892
|
-
#endif
|
|
893
|
-
|
|
894
|
-
#undef BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE
|
|
895
|
-
#undef BOOST_UNORDERED_GET_TUPLE_ARG
|
|
896
|
-
|
|
897
|
-
// construct_from_tuple for boost::tuple on old versions of sunpro.
|
|
898
|
-
//
|
|
899
|
-
// Old versions of Sun C++ had problems with template overloads of
|
|
900
|
-
// boost::tuple, so to fix it I added a distinct type for each length to
|
|
901
|
-
// the overloads. That means there's no possible ambiguity between the
|
|
902
|
-
// different overloads, so that the compiler doesn't get confused
|
|
903
|
-
|
|
904
|
-
#if BOOST_UNORDERED_SUN_WORKAROUNDS1
|
|
905
|
-
|
|
906
|
-
#define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(z, n, namespace_) \
|
|
907
|
-
template <typename Alloc, typename T, \
|
|
908
|
-
BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)> \
|
|
909
|
-
void construct_from_tuple_impl(boost::unordered::detail::func::length<n>, \
|
|
910
|
-
Alloc&, T* ptr, \
|
|
911
|
-
namespace_::tuple<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> const& x) \
|
|
912
|
-
{ \
|
|
913
|
-
new ((void*)ptr) \
|
|
914
|
-
T(BOOST_PP_ENUM_##z(n, BOOST_UNORDERED_GET_TUPLE_ARG, namespace_)); \
|
|
915
|
-
}
|
|
916
|
-
|
|
917
|
-
#define BOOST_UNORDERED_GET_TUPLE_ARG(z, n, namespace_) namespace_::get<n>(x)
|
|
918
|
-
|
|
919
|
-
namespace boost {
|
|
920
|
-
namespace unordered {
|
|
921
|
-
namespace detail {
|
|
922
|
-
namespace func {
|
|
923
|
-
template <int N> struct length
|
|
924
|
-
{
|
|
925
|
-
};
|
|
926
|
-
|
|
927
|
-
template <typename Alloc, typename T>
|
|
928
|
-
void construct_from_tuple_impl(
|
|
929
|
-
boost::unordered::detail::func::length<0>, Alloc&, T* ptr,
|
|
930
|
-
boost::tuple<>)
|
|
931
|
-
{
|
|
932
|
-
new ((void*)ptr) T();
|
|
933
|
-
}
|
|
934
|
-
|
|
935
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost)
|
|
936
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 2, boost)
|
|
937
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 3, boost)
|
|
938
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 4, boost)
|
|
939
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 5, boost)
|
|
940
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 6, boost)
|
|
941
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 7, boost)
|
|
942
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 8, boost)
|
|
943
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 9, boost)
|
|
944
|
-
BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 10, boost)
|
|
945
|
-
|
|
946
|
-
template <typename Alloc, typename T, typename Tuple>
|
|
947
|
-
void construct_from_tuple(Alloc& alloc, T* ptr, Tuple const& x)
|
|
948
|
-
{
|
|
949
|
-
construct_from_tuple_impl(boost::unordered::detail::func::length<
|
|
950
|
-
boost::tuples::length<Tuple>::value>(),
|
|
951
|
-
alloc, ptr, x);
|
|
952
|
-
}
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
|
|
958
|
-
#undef BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE
|
|
959
|
-
#undef BOOST_UNORDERED_GET_TUPLE_ARG
|
|
960
|
-
|
|
961
|
-
#endif
|
|
479
|
+
} // namespace detail
|
|
480
|
+
} // namespace unordered
|
|
481
|
+
} // namespace boost
|
|
962
482
|
|
|
963
483
|
namespace boost {
|
|
964
484
|
namespace unordered {
|
|
@@ -969,8 +489,7 @@ namespace boost {
|
|
|
969
489
|
|
|
970
490
|
template <typename A0> struct use_piecewise
|
|
971
491
|
{
|
|
972
|
-
static choice1::type test(
|
|
973
|
-
choice1, boost::unordered::piecewise_construct_t);
|
|
492
|
+
static choice1::type test(choice1, std::piecewise_construct_t);
|
|
974
493
|
|
|
975
494
|
static choice2::type test(choice2, ...);
|
|
976
495
|
|
|
@@ -981,29 +500,24 @@ namespace boost {
|
|
|
981
500
|
};
|
|
982
501
|
};
|
|
983
502
|
|
|
984
|
-
#if BOOST_UNORDERED_CXX11_CONSTRUCTION
|
|
985
|
-
|
|
986
503
|
////////////////////////////////////////////////////////////////////////
|
|
987
504
|
// Construct from variadic parameters
|
|
988
505
|
|
|
989
506
|
template <typename Alloc, typename T, typename... Args>
|
|
990
507
|
inline void construct_from_args(
|
|
991
|
-
Alloc& alloc, T* address,
|
|
508
|
+
Alloc& alloc, T* address, Args&&... args)
|
|
992
509
|
{
|
|
993
510
|
boost::allocator_construct(
|
|
994
|
-
alloc, address,
|
|
511
|
+
alloc, address, std::forward<Args>(args)...);
|
|
995
512
|
}
|
|
996
513
|
|
|
997
514
|
// For backwards compatibility, implement a special case for
|
|
998
515
|
// piecewise_construct with boost::tuple
|
|
999
516
|
|
|
1000
|
-
template <typename A0> struct
|
|
517
|
+
template <typename A0> struct detect_std_tuple
|
|
1001
518
|
{
|
|
1002
|
-
template <
|
|
1003
|
-
|
|
1004
|
-
typename T9>
|
|
1005
|
-
static choice1::type test(choice1,
|
|
1006
|
-
boost::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> const&);
|
|
519
|
+
template <class... Args>
|
|
520
|
+
static choice1::type test(choice1, std::tuple<Args...> const&);
|
|
1007
521
|
|
|
1008
522
|
static choice2::type test(choice2, ...);
|
|
1009
523
|
|
|
@@ -1016,25 +530,27 @@ namespace boost {
|
|
|
1016
530
|
|
|
1017
531
|
// Special case for piecewise_construct
|
|
1018
532
|
|
|
1019
|
-
template <class
|
|
533
|
+
template <template <class...> class Tuple, class... Args,
|
|
534
|
+
std::size_t... Is, class... TupleArgs>
|
|
1020
535
|
std::tuple<typename std::add_lvalue_reference<Args>::type...>
|
|
1021
536
|
to_std_tuple_impl(boost::mp11::mp_list<Args...>,
|
|
1022
|
-
|
|
537
|
+
Tuple<TupleArgs...>& tuple, boost::mp11::index_sequence<Is...>)
|
|
1023
538
|
{
|
|
1024
|
-
(void)
|
|
539
|
+
(void)tuple;
|
|
540
|
+
using std::get;
|
|
1025
541
|
return std::tuple<typename std::add_lvalue_reference<Args>::type...>(
|
|
1026
|
-
|
|
542
|
+
get<Is>(tuple)...);
|
|
1027
543
|
}
|
|
1028
544
|
|
|
1029
545
|
template <class T>
|
|
1030
546
|
using add_lvalue_reference_t =
|
|
1031
547
|
typename std::add_lvalue_reference<T>::type;
|
|
1032
548
|
|
|
1033
|
-
template <class... Args>
|
|
549
|
+
template <template <class...> class Tuple, class... Args>
|
|
1034
550
|
boost::mp11::mp_transform<add_lvalue_reference_t,
|
|
1035
551
|
boost::mp11::mp_remove<std::tuple<Args...>,
|
|
1036
552
|
boost::tuples::null_type> >
|
|
1037
|
-
to_std_tuple(
|
|
553
|
+
to_std_tuple(Tuple<Args...>& tuple)
|
|
1038
554
|
{
|
|
1039
555
|
using list = boost::mp11::mp_remove<boost::mp11::mp_list<Args...>,
|
|
1040
556
|
boost::tuples::null_type>;
|
|
@@ -1046,138 +562,20 @@ namespace boost {
|
|
|
1046
562
|
|
|
1047
563
|
template <typename Alloc, typename A, typename B, typename A0,
|
|
1048
564
|
typename A1, typename A2>
|
|
1049
|
-
inline typename
|
|
1050
|
-
|
|
1051
|
-
|
|
565
|
+
inline typename std::enable_if<use_piecewise<A0>::value &&
|
|
566
|
+
!detect_std_tuple<A1>::value &&
|
|
567
|
+
!detect_std_tuple<A2>::value,
|
|
1052
568
|
void>::type
|
|
1053
|
-
construct_from_args(
|
|
1054
|
-
|
|
569
|
+
construct_from_args(
|
|
570
|
+
Alloc& alloc, std::pair<A, B>* address, A0&&, A1&& a1, A2&& a2)
|
|
1055
571
|
{
|
|
1056
572
|
boost::allocator_construct(alloc, address, std::piecewise_construct,
|
|
1057
573
|
to_std_tuple(a1), to_std_tuple(a2));
|
|
1058
574
|
}
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
// Construct from variadic parameters
|
|
1064
|
-
|
|
1065
|
-
template <typename Alloc, typename T, typename... Args>
|
|
1066
|
-
inline void construct_from_args(
|
|
1067
|
-
Alloc&, T* address, BOOST_FWD_REF(Args)... args)
|
|
1068
|
-
{
|
|
1069
|
-
new ((void*)address) T(boost::forward<Args>(args)...);
|
|
1070
|
-
}
|
|
1071
|
-
|
|
1072
|
-
// Special case for piecewise_construct
|
|
1073
|
-
|
|
1074
|
-
template <typename Alloc, typename A, typename B, typename A0,
|
|
1075
|
-
typename A1, typename A2>
|
|
1076
|
-
inline typename enable_if<use_piecewise<A0>, void>::type
|
|
1077
|
-
construct_from_args(Alloc& alloc, std::pair<A, B>* address,
|
|
1078
|
-
BOOST_FWD_REF(A0), BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
|
|
1079
|
-
{
|
|
1080
|
-
boost::unordered::detail::func::construct_from_tuple(
|
|
1081
|
-
alloc, boost::addressof(address->first), boost::forward<A1>(a1));
|
|
1082
|
-
BOOST_TRY
|
|
1083
|
-
{
|
|
1084
|
-
boost::unordered::detail::func::construct_from_tuple(
|
|
1085
|
-
alloc, boost::addressof(address->second), boost::forward<A2>(a2));
|
|
1086
|
-
}
|
|
1087
|
-
BOOST_CATCH(...)
|
|
1088
|
-
{
|
|
1089
|
-
boost::unordered::detail::func::destroy(
|
|
1090
|
-
boost::addressof(address->first));
|
|
1091
|
-
BOOST_RETHROW
|
|
1092
|
-
}
|
|
1093
|
-
BOOST_CATCH_END
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
|
-
#else // BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
|
1097
|
-
|
|
1098
|
-
////////////////////////////////////////////////////////////////////////
|
|
1099
|
-
// Construct from emplace_args
|
|
1100
|
-
|
|
1101
|
-
// Explicitly write out first three overloads for the sake of sane
|
|
1102
|
-
// error messages.
|
|
1103
|
-
|
|
1104
|
-
template <typename Alloc, typename T, typename A0>
|
|
1105
|
-
inline void construct_from_args(
|
|
1106
|
-
Alloc&, T* address, emplace_args1<A0> const& args)
|
|
1107
|
-
{
|
|
1108
|
-
new ((void*)address) T(boost::forward<A0>(args.a0));
|
|
1109
|
-
}
|
|
1110
|
-
|
|
1111
|
-
template <typename Alloc, typename T, typename A0, typename A1>
|
|
1112
|
-
inline void construct_from_args(
|
|
1113
|
-
Alloc&, T* address, emplace_args2<A0, A1> const& args)
|
|
1114
|
-
{
|
|
1115
|
-
new ((void*)address)
|
|
1116
|
-
T(boost::forward<A0>(args.a0), boost::forward<A1>(args.a1));
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
template <typename Alloc, typename T, typename A0, typename A1,
|
|
1120
|
-
typename A2>
|
|
1121
|
-
inline void construct_from_args(
|
|
1122
|
-
Alloc&, T* address, emplace_args3<A0, A1, A2> const& args)
|
|
1123
|
-
{
|
|
1124
|
-
new ((void*)address) T(boost::forward<A0>(args.a0),
|
|
1125
|
-
boost::forward<A1>(args.a1), boost::forward<A2>(args.a2));
|
|
1126
|
-
}
|
|
1127
|
-
|
|
1128
|
-
// Use a macro for the rest.
|
|
1129
|
-
|
|
1130
|
-
#define BOOST_UNORDERED_CONSTRUCT_IMPL(z, num_params, _) \
|
|
1131
|
-
template <typename Alloc, typename T, \
|
|
1132
|
-
BOOST_PP_ENUM_PARAMS_Z(z, num_params, typename A)> \
|
|
1133
|
-
inline void construct_from_args(Alloc&, T* address, \
|
|
1134
|
-
boost::unordered::detail::BOOST_PP_CAT(emplace_args, num_params) < \
|
|
1135
|
-
BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) > const& args) \
|
|
1136
|
-
{ \
|
|
1137
|
-
new ((void*)address) \
|
|
1138
|
-
T(BOOST_PP_ENUM_##z(num_params, BOOST_UNORDERED_CALL_FORWARD, args.a)); \
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
BOOST_UNORDERED_CONSTRUCT_IMPL(1, 4, _)
|
|
1142
|
-
BOOST_UNORDERED_CONSTRUCT_IMPL(1, 5, _)
|
|
1143
|
-
BOOST_UNORDERED_CONSTRUCT_IMPL(1, 6, _)
|
|
1144
|
-
BOOST_UNORDERED_CONSTRUCT_IMPL(1, 7, _)
|
|
1145
|
-
BOOST_UNORDERED_CONSTRUCT_IMPL(1, 8, _)
|
|
1146
|
-
BOOST_UNORDERED_CONSTRUCT_IMPL(1, 9, _)
|
|
1147
|
-
BOOST_PP_REPEAT_FROM_TO(10, BOOST_PP_INC(BOOST_UNORDERED_EMPLACE_LIMIT),
|
|
1148
|
-
BOOST_UNORDERED_CONSTRUCT_IMPL, _)
|
|
1149
|
-
|
|
1150
|
-
#undef BOOST_UNORDERED_CONSTRUCT_IMPL
|
|
1151
|
-
|
|
1152
|
-
// Construct with piecewise_construct
|
|
1153
|
-
|
|
1154
|
-
template <typename Alloc, typename A, typename B, typename A0,
|
|
1155
|
-
typename A1, typename A2>
|
|
1156
|
-
inline typename enable_if<use_piecewise<A0>, void>::type
|
|
1157
|
-
construct_from_args(Alloc& alloc, std::pair<A, B>* address,
|
|
1158
|
-
boost::unordered::detail::emplace_args3<A0, A1, A2> const& args)
|
|
1159
|
-
{
|
|
1160
|
-
boost::unordered::detail::func::construct_from_tuple(
|
|
1161
|
-
alloc, boost::addressof(address->first), args.a1);
|
|
1162
|
-
BOOST_TRY
|
|
1163
|
-
{
|
|
1164
|
-
boost::unordered::detail::func::construct_from_tuple(
|
|
1165
|
-
alloc, boost::addressof(address->second), args.a2);
|
|
1166
|
-
}
|
|
1167
|
-
BOOST_CATCH(...)
|
|
1168
|
-
{
|
|
1169
|
-
boost::unordered::detail::func::destroy(
|
|
1170
|
-
boost::addressof(address->first));
|
|
1171
|
-
BOOST_RETHROW
|
|
1172
|
-
}
|
|
1173
|
-
BOOST_CATCH_END
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
|
-
#endif // BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
}
|
|
1180
|
-
}
|
|
575
|
+
} // namespace func
|
|
576
|
+
} // namespace detail
|
|
577
|
+
} // namespace unordered
|
|
578
|
+
} // namespace boost
|
|
1181
579
|
|
|
1182
580
|
namespace boost {
|
|
1183
581
|
namespace unordered {
|
|
@@ -1266,9 +664,9 @@ namespace boost {
|
|
|
1266
664
|
boost::allocator_deallocate(alloc_, node_, 1);
|
|
1267
665
|
}
|
|
1268
666
|
}
|
|
1269
|
-
}
|
|
1270
|
-
}
|
|
1271
|
-
}
|
|
667
|
+
} // namespace detail
|
|
668
|
+
} // namespace unordered
|
|
669
|
+
} // namespace boost
|
|
1272
670
|
|
|
1273
671
|
namespace boost {
|
|
1274
672
|
namespace unordered {
|
|
@@ -1278,9 +676,9 @@ namespace boost {
|
|
|
1278
676
|
// Some nicer construct_node functions, might try to
|
|
1279
677
|
// improve implementation later.
|
|
1280
678
|
|
|
1281
|
-
template <typename Alloc,
|
|
679
|
+
template <typename Alloc, typename... Args>
|
|
1282
680
|
inline typename boost::allocator_pointer<Alloc>::type
|
|
1283
|
-
construct_node_from_args(Alloc& alloc,
|
|
681
|
+
construct_node_from_args(Alloc& alloc, Args&&... args)
|
|
1284
682
|
{
|
|
1285
683
|
typedef typename boost::allocator_value_type<Alloc>::type node;
|
|
1286
684
|
typedef typename node::value_type value_type;
|
|
@@ -1292,13 +690,13 @@ namespace boost {
|
|
|
1292
690
|
node_constructor<Alloc> a(alloc);
|
|
1293
691
|
a.create_node();
|
|
1294
692
|
construct_from_args(
|
|
1295
|
-
val_alloc, a.node_->value_ptr(),
|
|
693
|
+
val_alloc, a.node_->value_ptr(), std::forward<Args>(args)...);
|
|
1296
694
|
return a.release();
|
|
1297
695
|
}
|
|
1298
696
|
|
|
1299
697
|
template <typename Alloc, typename U>
|
|
1300
698
|
inline typename boost::allocator_pointer<Alloc>::type construct_node(
|
|
1301
|
-
Alloc& alloc,
|
|
699
|
+
Alloc& alloc, U&& x)
|
|
1302
700
|
{
|
|
1303
701
|
node_constructor<Alloc> a(alloc);
|
|
1304
702
|
a.create_node();
|
|
@@ -1311,15 +709,13 @@ namespace boost {
|
|
|
1311
709
|
value_allocator val_alloc(alloc);
|
|
1312
710
|
|
|
1313
711
|
boost::allocator_construct(
|
|
1314
|
-
val_alloc, a.node_->value_ptr(),
|
|
712
|
+
val_alloc, a.node_->value_ptr(), std::forward<U>(x));
|
|
1315
713
|
return a.release();
|
|
1316
714
|
}
|
|
1317
715
|
|
|
1318
|
-
#if BOOST_UNORDERED_CXX11_CONSTRUCTION
|
|
1319
|
-
|
|
1320
716
|
template <typename Alloc, typename Key>
|
|
1321
717
|
inline typename boost::allocator_pointer<Alloc>::type
|
|
1322
|
-
construct_node_pair(Alloc& alloc,
|
|
718
|
+
construct_node_pair(Alloc& alloc, Key&& k)
|
|
1323
719
|
{
|
|
1324
720
|
node_constructor<Alloc> a(alloc);
|
|
1325
721
|
a.create_node();
|
|
@@ -1331,17 +727,16 @@ namespace boost {
|
|
|
1331
727
|
|
|
1332
728
|
value_allocator val_alloc(alloc);
|
|
1333
729
|
|
|
1334
|
-
boost::allocator_construct(
|
|
1335
|
-
|
|
1336
|
-
std::forward_as_tuple(
|
|
730
|
+
boost::allocator_construct(val_alloc, a.node_->value_ptr(),
|
|
731
|
+
std::piecewise_construct,
|
|
732
|
+
std::forward_as_tuple(std::forward<Key>(k)),
|
|
1337
733
|
std::forward_as_tuple());
|
|
1338
734
|
return a.release();
|
|
1339
735
|
}
|
|
1340
736
|
|
|
1341
737
|
template <typename Alloc, typename Key, typename Mapped>
|
|
1342
738
|
inline typename boost::allocator_pointer<Alloc>::type
|
|
1343
|
-
construct_node_pair(
|
|
1344
|
-
Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Mapped) m)
|
|
739
|
+
construct_node_pair(Alloc& alloc, Key&& k, Mapped&& m)
|
|
1345
740
|
{
|
|
1346
741
|
node_constructor<Alloc> a(alloc);
|
|
1347
742
|
a.create_node();
|
|
@@ -1355,15 +750,14 @@ namespace boost {
|
|
|
1355
750
|
|
|
1356
751
|
boost::allocator_construct(val_alloc, a.node_->value_ptr(),
|
|
1357
752
|
std::piecewise_construct,
|
|
1358
|
-
std::forward_as_tuple(
|
|
1359
|
-
std::forward_as_tuple(
|
|
753
|
+
std::forward_as_tuple(std::forward<Key>(k)),
|
|
754
|
+
std::forward_as_tuple(std::forward<Mapped>(m)));
|
|
1360
755
|
return a.release();
|
|
1361
756
|
}
|
|
1362
757
|
|
|
1363
758
|
template <typename Alloc, typename Key, typename... Args>
|
|
1364
759
|
inline typename boost::allocator_pointer<Alloc>::type
|
|
1365
|
-
construct_node_pair_from_args(
|
|
1366
|
-
Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Args)... args)
|
|
760
|
+
construct_node_pair_from_args(Alloc& alloc, Key&& k, Args&&... args)
|
|
1367
761
|
{
|
|
1368
762
|
node_constructor<Alloc> a(alloc);
|
|
1369
763
|
a.create_node();
|
|
@@ -1375,112 +769,31 @@ namespace boost {
|
|
|
1375
769
|
|
|
1376
770
|
value_allocator val_alloc(alloc);
|
|
1377
771
|
|
|
1378
|
-
#if !(BOOST_COMP_CLANG && BOOST_COMP_CLANG < BOOST_VERSION_NUMBER(3, 8, 0) && \
|
|
1379
|
-
defined(BOOST_LIBSTDCXX11))
|
|
1380
|
-
boost::allocator_construct(val_alloc, a.node_->value_ptr(),
|
|
1381
|
-
std::piecewise_construct,
|
|
1382
|
-
std::forward_as_tuple(boost::forward<Key>(k)),
|
|
1383
|
-
std::forward_as_tuple(boost::forward<Args>(args)...));
|
|
1384
|
-
#else
|
|
1385
|
-
// It doesn't seem to be possible to construct a tuple with 3 variadic
|
|
1386
|
-
// rvalue reference members when using older versions of clang with
|
|
1387
|
-
// libstdc++, so just use std::make_tuple instead of
|
|
1388
|
-
// std::forward_as_tuple.
|
|
1389
772
|
boost::allocator_construct(val_alloc, a.node_->value_ptr(),
|
|
1390
773
|
std::piecewise_construct,
|
|
1391
|
-
std::forward_as_tuple(
|
|
1392
|
-
std::
|
|
1393
|
-
#endif
|
|
1394
|
-
return a.release();
|
|
1395
|
-
}
|
|
774
|
+
std::forward_as_tuple(std::forward<Key>(k)),
|
|
775
|
+
std::forward_as_tuple(std::forward<Args>(args)...));
|
|
1396
776
|
|
|
1397
|
-
#else
|
|
1398
|
-
|
|
1399
|
-
template <typename Alloc, typename Key>
|
|
1400
|
-
inline
|
|
1401
|
-
typename boost::unordered::detail::allocator_traits<Alloc>::pointer
|
|
1402
|
-
construct_node_pair(Alloc& alloc, BOOST_FWD_REF(Key) k)
|
|
1403
|
-
{
|
|
1404
|
-
node_constructor<Alloc> a(alloc);
|
|
1405
|
-
a.create_node();
|
|
1406
|
-
boost::unordered::detail::func::construct_value(
|
|
1407
|
-
boost::addressof(a.node_->value_ptr()->first),
|
|
1408
|
-
boost::forward<Key>(k));
|
|
1409
|
-
BOOST_TRY
|
|
1410
|
-
{
|
|
1411
|
-
boost::unordered::detail::func::construct_value(
|
|
1412
|
-
boost::addressof(a.node_->value_ptr()->second));
|
|
1413
|
-
}
|
|
1414
|
-
BOOST_CATCH(...)
|
|
1415
|
-
{
|
|
1416
|
-
boost::unordered::detail::func::destroy(
|
|
1417
|
-
boost::addressof(a.node_->value_ptr()->first));
|
|
1418
|
-
BOOST_RETHROW
|
|
1419
|
-
}
|
|
1420
|
-
BOOST_CATCH_END
|
|
1421
777
|
return a.release();
|
|
1422
778
|
}
|
|
1423
779
|
|
|
1424
|
-
template <typename
|
|
1425
|
-
inline
|
|
1426
|
-
|
|
1427
|
-
construct_node_pair(
|
|
1428
|
-
Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(Mapped) m)
|
|
780
|
+
template <typename T, typename Alloc, typename Key>
|
|
781
|
+
inline typename boost::allocator_pointer<Alloc>::type
|
|
782
|
+
construct_node_from_key(T*, Alloc& alloc, Key&& k)
|
|
1429
783
|
{
|
|
1430
|
-
|
|
1431
|
-
a.create_node();
|
|
1432
|
-
boost::unordered::detail::func::construct_value(
|
|
1433
|
-
boost::addressof(a.node_->value_ptr()->first),
|
|
1434
|
-
boost::forward<Key>(k));
|
|
1435
|
-
BOOST_TRY
|
|
1436
|
-
{
|
|
1437
|
-
boost::unordered::detail::func::construct_value(
|
|
1438
|
-
boost::addressof(a.node_->value_ptr()->second),
|
|
1439
|
-
boost::forward<Mapped>(m));
|
|
1440
|
-
}
|
|
1441
|
-
BOOST_CATCH(...)
|
|
1442
|
-
{
|
|
1443
|
-
boost::unordered::detail::func::destroy(
|
|
1444
|
-
boost::addressof(a.node_->value_ptr()->first));
|
|
1445
|
-
BOOST_RETHROW
|
|
1446
|
-
}
|
|
1447
|
-
BOOST_CATCH_END
|
|
1448
|
-
return a.release();
|
|
784
|
+
return construct_node(alloc, std::forward<Key>(k));
|
|
1449
785
|
}
|
|
1450
786
|
|
|
1451
|
-
template <typename Alloc, typename Key
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
typename boost::unordered::detail::allocator_traits<Alloc>::pointer
|
|
1455
|
-
construct_node_pair_from_args(
|
|
1456
|
-
Alloc& alloc, BOOST_FWD_REF(Key) k, BOOST_UNORDERED_EMPLACE_ARGS)
|
|
787
|
+
template <typename T, typename V, typename Alloc, typename Key>
|
|
788
|
+
inline typename boost::allocator_pointer<Alloc>::type
|
|
789
|
+
construct_node_from_key(std::pair<T const, V>*, Alloc& alloc, Key&& k)
|
|
1457
790
|
{
|
|
1458
|
-
|
|
1459
|
-
a.create_node();
|
|
1460
|
-
boost::unordered::detail::func::construct_value(
|
|
1461
|
-
boost::addressof(a.node_->value_ptr()->first),
|
|
1462
|
-
boost::forward<Key>(k));
|
|
1463
|
-
BOOST_TRY
|
|
1464
|
-
{
|
|
1465
|
-
boost::unordered::detail::func::construct_from_args(alloc,
|
|
1466
|
-
boost::addressof(a.node_->value_ptr()->second),
|
|
1467
|
-
BOOST_UNORDERED_EMPLACE_FORWARD);
|
|
1468
|
-
}
|
|
1469
|
-
BOOST_CATCH(...)
|
|
1470
|
-
{
|
|
1471
|
-
boost::unordered::detail::func::destroy(
|
|
1472
|
-
boost::addressof(a.node_->value_ptr()->first));
|
|
1473
|
-
BOOST_RETHROW
|
|
1474
|
-
}
|
|
1475
|
-
BOOST_CATCH_END
|
|
1476
|
-
return a.release();
|
|
791
|
+
return construct_node_pair(alloc, std::forward<Key>(k));
|
|
1477
792
|
}
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
793
|
+
} // namespace func
|
|
794
|
+
} // namespace detail
|
|
795
|
+
} // namespace unordered
|
|
796
|
+
} // namespace boost
|
|
1484
797
|
|
|
1485
798
|
#if defined(BOOST_MSVC)
|
|
1486
799
|
#pragma warning(pop)
|
|
@@ -1506,38 +819,35 @@ namespace boost {
|
|
|
1506
819
|
// in that region of storage. This warning is also generated in C++03
|
|
1507
820
|
// which does not have `std::launder`. The compiler builtin is always
|
|
1508
821
|
// available, regardless of the C++ standard used when compiling.
|
|
1509
|
-
template <class T> T* launder(T* p)
|
|
822
|
+
template <class T> T* launder(T* p) noexcept
|
|
1510
823
|
{
|
|
1511
824
|
return __builtin_launder(p);
|
|
1512
825
|
}
|
|
1513
826
|
#else
|
|
1514
|
-
template <class T> T* launder(T* p)
|
|
827
|
+
template <class T> T* launder(T* p) noexcept { return p; }
|
|
1515
828
|
#endif
|
|
1516
829
|
|
|
1517
830
|
template <class H, class P> class functions
|
|
1518
831
|
{
|
|
1519
832
|
public:
|
|
1520
833
|
static const bool nothrow_move_assignable =
|
|
1521
|
-
|
|
1522
|
-
|
|
834
|
+
std::is_nothrow_move_assignable<H>::value &&
|
|
835
|
+
std::is_nothrow_move_assignable<P>::value;
|
|
1523
836
|
static const bool nothrow_move_constructible =
|
|
1524
|
-
|
|
1525
|
-
|
|
837
|
+
std::is_nothrow_move_constructible<H>::value &&
|
|
838
|
+
std::is_nothrow_move_constructible<P>::value;
|
|
1526
839
|
static const bool nothrow_swappable =
|
|
1527
|
-
boost::is_nothrow_swappable<H>::value &&
|
|
1528
|
-
boost::is_nothrow_swappable<P>::value;
|
|
840
|
+
boost::unordered::detail::is_nothrow_swappable<H>::value &&
|
|
841
|
+
boost::unordered::detail::is_nothrow_swappable<P>::value;
|
|
1529
842
|
|
|
1530
843
|
private:
|
|
1531
844
|
functions& operator=(functions const&);
|
|
1532
845
|
|
|
1533
846
|
typedef compressed<H, P> function_pair;
|
|
1534
847
|
|
|
1535
|
-
typedef typename boost::aligned_storage<sizeof(function_pair),
|
|
1536
|
-
boost::alignment_of<function_pair>::value>::type aligned_function;
|
|
1537
|
-
|
|
1538
848
|
unsigned char current_; // 0/1 - Currently active functions
|
|
1539
849
|
// +2 - Both constructed
|
|
1540
|
-
|
|
850
|
+
opt_storage<function_pair> funcs_[2];
|
|
1541
851
|
|
|
1542
852
|
public:
|
|
1543
853
|
functions(H const& hf, P const& eq) : current_(0)
|
|
@@ -1554,8 +864,7 @@ namespace boost {
|
|
|
1554
864
|
: current_(0)
|
|
1555
865
|
{
|
|
1556
866
|
construct_functions(current_, bf.current_functions(),
|
|
1557
|
-
|
|
1558
|
-
nothrow_move_constructible>());
|
|
867
|
+
std::integral_constant<bool, nothrow_move_constructible>());
|
|
1559
868
|
}
|
|
1560
869
|
|
|
1561
870
|
~functions()
|
|
@@ -1611,16 +920,15 @@ namespace boost {
|
|
|
1611
920
|
new ((void*)&funcs_[which]) function_pair(hf, eq);
|
|
1612
921
|
}
|
|
1613
922
|
|
|
1614
|
-
void construct_functions(
|
|
1615
|
-
|
|
1616
|
-
boost::unordered::detail::false_type())
|
|
923
|
+
void construct_functions(
|
|
924
|
+
unsigned char which, function_pair const& f, std::false_type = {})
|
|
1617
925
|
{
|
|
1618
926
|
BOOST_ASSERT(!(which & 2));
|
|
1619
927
|
new ((void*)&funcs_[which]) function_pair(f);
|
|
1620
928
|
}
|
|
1621
929
|
|
|
1622
|
-
void construct_functions(
|
|
1623
|
-
|
|
930
|
+
void construct_functions(
|
|
931
|
+
unsigned char which, function_pair& f, std::true_type)
|
|
1624
932
|
{
|
|
1625
933
|
BOOST_ASSERT(!(which & 2));
|
|
1626
934
|
new ((void*)&funcs_[which])
|
|
@@ -1635,34 +943,6 @@ namespace boost {
|
|
|
1635
943
|
}
|
|
1636
944
|
};
|
|
1637
945
|
|
|
1638
|
-
////////////////////////////////////////////////////////////////////////////
|
|
1639
|
-
// rvalue parameters when type can't be a BOOST_RV_REF(T) parameter
|
|
1640
|
-
// e.g. for int
|
|
1641
|
-
|
|
1642
|
-
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
1643
|
-
#define BOOST_UNORDERED_RV_REF(T) BOOST_RV_REF(T)
|
|
1644
|
-
#else
|
|
1645
|
-
struct please_ignore_this_overload
|
|
1646
|
-
{
|
|
1647
|
-
typedef please_ignore_this_overload type;
|
|
1648
|
-
};
|
|
1649
|
-
|
|
1650
|
-
template <typename T> struct rv_ref_impl
|
|
1651
|
-
{
|
|
1652
|
-
typedef BOOST_RV_REF(T) type;
|
|
1653
|
-
};
|
|
1654
|
-
|
|
1655
|
-
template <typename T>
|
|
1656
|
-
struct rv_ref : boost::conditional<boost::is_class<T>::value,
|
|
1657
|
-
boost::unordered::detail::rv_ref_impl<T>,
|
|
1658
|
-
please_ignore_this_overload>::type
|
|
1659
|
-
{
|
|
1660
|
-
};
|
|
1661
|
-
|
|
1662
|
-
#define BOOST_UNORDERED_RV_REF(T) \
|
|
1663
|
-
typename boost::unordered::detail::rv_ref<T>::type
|
|
1664
|
-
#endif
|
|
1665
|
-
|
|
1666
946
|
#if defined(BOOST_MSVC)
|
|
1667
947
|
#pragma warning(push)
|
|
1668
948
|
#pragma warning(disable : 4127) // conditional expression is constant
|
|
@@ -1695,48 +975,48 @@ namespace boost {
|
|
|
1695
975
|
typedef std::ptrdiff_t difference_type;
|
|
1696
976
|
typedef std::forward_iterator_tag iterator_category;
|
|
1697
977
|
|
|
1698
|
-
iterator() : p(), itb(){}
|
|
978
|
+
iterator() : p(), itb() {}
|
|
1699
979
|
|
|
1700
|
-
reference operator*() const
|
|
1701
|
-
pointer operator->() const
|
|
980
|
+
reference operator*() const noexcept { return dereference(); }
|
|
981
|
+
pointer operator->() const noexcept
|
|
1702
982
|
{
|
|
1703
|
-
pointer x =
|
|
983
|
+
pointer x = std::addressof(p->value());
|
|
1704
984
|
return x;
|
|
1705
985
|
}
|
|
1706
986
|
|
|
1707
|
-
iterator& operator++()
|
|
987
|
+
iterator& operator++() noexcept
|
|
1708
988
|
{
|
|
1709
989
|
increment();
|
|
1710
990
|
return *this;
|
|
1711
991
|
}
|
|
1712
992
|
|
|
1713
|
-
iterator operator++(int)
|
|
993
|
+
iterator operator++(int) noexcept
|
|
1714
994
|
{
|
|
1715
995
|
iterator old = *this;
|
|
1716
996
|
increment();
|
|
1717
997
|
return old;
|
|
1718
998
|
}
|
|
1719
999
|
|
|
1720
|
-
bool operator==(iterator const& other) const
|
|
1000
|
+
bool operator==(iterator const& other) const noexcept
|
|
1721
1001
|
{
|
|
1722
1002
|
return equal(other);
|
|
1723
1003
|
}
|
|
1724
1004
|
|
|
1725
|
-
bool operator!=(iterator const& other) const
|
|
1005
|
+
bool operator!=(iterator const& other) const noexcept
|
|
1726
1006
|
{
|
|
1727
1007
|
return !equal(other);
|
|
1728
1008
|
}
|
|
1729
1009
|
|
|
1730
1010
|
bool operator==(
|
|
1731
1011
|
boost::unordered::detail::iterator_detail::c_iterator<Node,
|
|
1732
|
-
Bucket> const& other) const
|
|
1012
|
+
Bucket> const& other) const noexcept
|
|
1733
1013
|
{
|
|
1734
1014
|
return equal(other);
|
|
1735
1015
|
}
|
|
1736
1016
|
|
|
1737
1017
|
bool operator!=(
|
|
1738
1018
|
boost::unordered::detail::iterator_detail::c_iterator<Node,
|
|
1739
|
-
Bucket> const& other) const
|
|
1019
|
+
Bucket> const& other) const noexcept
|
|
1740
1020
|
{
|
|
1741
1021
|
return !equal(other);
|
|
1742
1022
|
}
|
|
@@ -1753,27 +1033,43 @@ namespace boost {
|
|
|
1753
1033
|
|
|
1754
1034
|
iterator(node_pointer p_, bucket_iterator itb_) : p(p_), itb(itb_) {}
|
|
1755
1035
|
|
|
1756
|
-
value_type& dereference() const
|
|
1036
|
+
value_type& dereference() const noexcept { return p->value(); }
|
|
1757
1037
|
|
|
1758
|
-
bool equal(const iterator& x) const
|
|
1759
|
-
{
|
|
1760
|
-
return (p == x.p);
|
|
1761
|
-
}
|
|
1038
|
+
bool equal(const iterator& x) const noexcept { return (p == x.p); }
|
|
1762
1039
|
|
|
1763
1040
|
bool equal(
|
|
1764
1041
|
const boost::unordered::detail::iterator_detail::c_iterator<Node,
|
|
1765
|
-
Bucket>& x) const
|
|
1042
|
+
Bucket>& x) const noexcept
|
|
1766
1043
|
{
|
|
1767
1044
|
return (p == x.p);
|
|
1768
1045
|
}
|
|
1769
1046
|
|
|
1770
|
-
void increment()
|
|
1047
|
+
void increment() noexcept
|
|
1771
1048
|
{
|
|
1772
1049
|
p = p->next;
|
|
1773
1050
|
if (!p) {
|
|
1774
1051
|
p = (++itb)->next;
|
|
1775
1052
|
}
|
|
1776
1053
|
}
|
|
1054
|
+
|
|
1055
|
+
template <typename Archive>
|
|
1056
|
+
friend void serialization_track(Archive& ar, const iterator& x)
|
|
1057
|
+
{
|
|
1058
|
+
if (x.p) {
|
|
1059
|
+
track_address(ar, x.p);
|
|
1060
|
+
serialization_track(ar, x.itb);
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
friend class boost::serialization::access;
|
|
1065
|
+
|
|
1066
|
+
template <typename Archive> void serialize(Archive& ar, unsigned int)
|
|
1067
|
+
{
|
|
1068
|
+
if (!p)
|
|
1069
|
+
itb = bucket_iterator();
|
|
1070
|
+
serialize_tracked_address(ar, p);
|
|
1071
|
+
ar& core::make_nvp("bucket_iterator", itb);
|
|
1072
|
+
}
|
|
1777
1073
|
};
|
|
1778
1074
|
|
|
1779
1075
|
template <class Node, class Bucket> class c_iterator
|
|
@@ -1786,49 +1082,49 @@ namespace boost {
|
|
|
1786
1082
|
typedef std::ptrdiff_t difference_type;
|
|
1787
1083
|
typedef std::forward_iterator_tag iterator_category;
|
|
1788
1084
|
|
|
1789
|
-
c_iterator() : p(), itb(){}
|
|
1085
|
+
c_iterator() : p(), itb() {}
|
|
1790
1086
|
c_iterator(iterator<Node, Bucket> it) : p(it.p), itb(it.itb) {}
|
|
1791
1087
|
|
|
1792
|
-
reference operator*() const
|
|
1793
|
-
pointer operator->() const
|
|
1088
|
+
reference operator*() const noexcept { return dereference(); }
|
|
1089
|
+
pointer operator->() const noexcept
|
|
1794
1090
|
{
|
|
1795
|
-
pointer x =
|
|
1091
|
+
pointer x = std::addressof(p->value());
|
|
1796
1092
|
return x;
|
|
1797
1093
|
}
|
|
1798
1094
|
|
|
1799
|
-
c_iterator& operator++()
|
|
1095
|
+
c_iterator& operator++() noexcept
|
|
1800
1096
|
{
|
|
1801
1097
|
increment();
|
|
1802
1098
|
return *this;
|
|
1803
1099
|
}
|
|
1804
1100
|
|
|
1805
|
-
c_iterator operator++(int)
|
|
1101
|
+
c_iterator operator++(int) noexcept
|
|
1806
1102
|
{
|
|
1807
1103
|
c_iterator old = *this;
|
|
1808
1104
|
increment();
|
|
1809
1105
|
return old;
|
|
1810
1106
|
}
|
|
1811
1107
|
|
|
1812
|
-
bool operator==(c_iterator const& other) const
|
|
1108
|
+
bool operator==(c_iterator const& other) const noexcept
|
|
1813
1109
|
{
|
|
1814
1110
|
return equal(other);
|
|
1815
1111
|
}
|
|
1816
1112
|
|
|
1817
|
-
bool operator!=(c_iterator const& other) const
|
|
1113
|
+
bool operator!=(c_iterator const& other) const noexcept
|
|
1818
1114
|
{
|
|
1819
1115
|
return !equal(other);
|
|
1820
1116
|
}
|
|
1821
1117
|
|
|
1822
1118
|
bool operator==(
|
|
1823
1119
|
boost::unordered::detail::iterator_detail::iterator<Node,
|
|
1824
|
-
Bucket> const& other) const
|
|
1120
|
+
Bucket> const& other) const noexcept
|
|
1825
1121
|
{
|
|
1826
1122
|
return equal(other);
|
|
1827
1123
|
}
|
|
1828
1124
|
|
|
1829
1125
|
bool operator!=(
|
|
1830
1126
|
boost::unordered::detail::iterator_detail::iterator<Node,
|
|
1831
|
-
Bucket> const& other) const
|
|
1127
|
+
Bucket> const& other) const noexcept
|
|
1832
1128
|
{
|
|
1833
1129
|
return !equal(other);
|
|
1834
1130
|
}
|
|
@@ -1847,23 +1143,36 @@ namespace boost {
|
|
|
1847
1143
|
{
|
|
1848
1144
|
}
|
|
1849
1145
|
|
|
1850
|
-
value_type const& dereference() const
|
|
1851
|
-
{
|
|
1852
|
-
return p->value();
|
|
1853
|
-
}
|
|
1146
|
+
value_type const& dereference() const noexcept { return p->value(); }
|
|
1854
1147
|
|
|
1855
|
-
bool equal(const c_iterator& x) const
|
|
1856
|
-
{
|
|
1857
|
-
return (p == x.p);
|
|
1858
|
-
}
|
|
1148
|
+
bool equal(const c_iterator& x) const noexcept { return (p == x.p); }
|
|
1859
1149
|
|
|
1860
|
-
void increment()
|
|
1150
|
+
void increment() noexcept
|
|
1861
1151
|
{
|
|
1862
1152
|
p = p->next;
|
|
1863
1153
|
if (!p) {
|
|
1864
1154
|
p = (++itb)->next;
|
|
1865
1155
|
}
|
|
1866
1156
|
}
|
|
1157
|
+
|
|
1158
|
+
template <typename Archive>
|
|
1159
|
+
friend void serialization_track(Archive& ar, const c_iterator& x)
|
|
1160
|
+
{
|
|
1161
|
+
if (x.p) {
|
|
1162
|
+
track_address(ar, x.p);
|
|
1163
|
+
serialization_track(ar, x.itb);
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
friend class boost::serialization::access;
|
|
1168
|
+
|
|
1169
|
+
template <typename Archive> void serialize(Archive& ar, unsigned int)
|
|
1170
|
+
{
|
|
1171
|
+
if (!p)
|
|
1172
|
+
itb = bucket_iterator();
|
|
1173
|
+
serialize_tracked_address(ar, p);
|
|
1174
|
+
ar& core::make_nvp("bucket_iterator", itb);
|
|
1175
|
+
}
|
|
1867
1176
|
};
|
|
1868
1177
|
} // namespace iterator_detail
|
|
1869
1178
|
|
|
@@ -1890,20 +1199,23 @@ namespace boost {
|
|
|
1890
1199
|
functions;
|
|
1891
1200
|
|
|
1892
1201
|
typedef typename Types::value_allocator value_allocator;
|
|
1893
|
-
typedef typename boost::allocator_void_pointer<value_allocator>::type
|
|
1202
|
+
typedef typename boost::allocator_void_pointer<value_allocator>::type
|
|
1203
|
+
void_pointer;
|
|
1894
1204
|
typedef node<value_type, void_pointer> node_type;
|
|
1895
1205
|
|
|
1896
1206
|
typedef boost::unordered::detail::grouped_bucket_array<
|
|
1897
1207
|
bucket<node_type, void_pointer>, value_allocator, prime_fmod_size<> >
|
|
1898
1208
|
bucket_array_type;
|
|
1899
1209
|
|
|
1900
|
-
typedef
|
|
1901
|
-
node_allocator_type;
|
|
1902
|
-
typedef typename boost::allocator_pointer<node_allocator_type>::type
|
|
1210
|
+
typedef
|
|
1211
|
+
typename bucket_array_type::node_allocator_type node_allocator_type;
|
|
1212
|
+
typedef typename boost::allocator_pointer<node_allocator_type>::type
|
|
1213
|
+
node_pointer;
|
|
1903
1214
|
|
|
1904
1215
|
typedef boost::unordered::detail::node_constructor<node_allocator_type>
|
|
1905
1216
|
node_constructor;
|
|
1906
|
-
typedef boost::unordered::detail::node_tmp<node_allocator_type>
|
|
1217
|
+
typedef boost::unordered::detail::node_tmp<node_allocator_type>
|
|
1218
|
+
node_tmp;
|
|
1907
1219
|
|
|
1908
1220
|
typedef typename bucket_array_type::bucket_type bucket_type;
|
|
1909
1221
|
|
|
@@ -1950,8 +1262,7 @@ namespace boost {
|
|
|
1950
1262
|
}
|
|
1951
1263
|
std::size_t c = 0;
|
|
1952
1264
|
std::size_t const key_hash = this->hash(k);
|
|
1953
|
-
bucket_iterator itb =
|
|
1954
|
-
buckets_.at(buckets_.position(key_hash));
|
|
1265
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
1955
1266
|
|
|
1956
1267
|
bool found = false;
|
|
1957
1268
|
|
|
@@ -1993,10 +1304,7 @@ namespace boost {
|
|
|
1993
1304
|
return iterator(itb->next, itb);
|
|
1994
1305
|
}
|
|
1995
1306
|
|
|
1996
|
-
iterator end() const
|
|
1997
|
-
{
|
|
1998
|
-
return iterator();
|
|
1999
|
-
}
|
|
1307
|
+
iterator end() const { return iterator(); }
|
|
2000
1308
|
|
|
2001
1309
|
l_iterator begin(std::size_t bucket_index) const
|
|
2002
1310
|
{
|
|
@@ -2058,14 +1366,14 @@ namespace boost {
|
|
|
2058
1366
|
}
|
|
2059
1367
|
|
|
2060
1368
|
table(std::size_t num_buckets, hasher const& hf, key_equal const& eq,
|
|
2061
|
-
|
|
1369
|
+
value_allocator const& a)
|
|
2062
1370
|
: functions(hf, eq), size_(0), mlf_(1.0f), max_load_(0),
|
|
2063
1371
|
buckets_(num_buckets, a)
|
|
2064
1372
|
{
|
|
2065
1373
|
recalculate_max_load();
|
|
2066
1374
|
}
|
|
2067
1375
|
|
|
2068
|
-
table(table const& x,
|
|
1376
|
+
table(table const& x, value_allocator const& a)
|
|
2069
1377
|
: functions(x), size_(0), mlf_(x.mlf_), max_load_(0),
|
|
2070
1378
|
buckets_(x.size_, a)
|
|
2071
1379
|
{
|
|
@@ -2074,13 +1382,13 @@ namespace boost {
|
|
|
2074
1382
|
|
|
2075
1383
|
table(table& x, boost::unordered::detail::move_tag m)
|
|
2076
1384
|
: functions(x, m), size_(x.size_), mlf_(x.mlf_),
|
|
2077
|
-
max_load_(x.max_load_), buckets_(
|
|
1385
|
+
max_load_(x.max_load_), buckets_(std::move(x.buckets_))
|
|
2078
1386
|
{
|
|
2079
1387
|
x.size_ = 0;
|
|
2080
1388
|
x.max_load_ = 0;
|
|
2081
1389
|
}
|
|
2082
1390
|
|
|
2083
|
-
table(table& x,
|
|
1391
|
+
table(table& x, value_allocator const& a,
|
|
2084
1392
|
boost::unordered::detail::move_tag m)
|
|
2085
1393
|
: functions(x, m), size_(0), mlf_(x.mlf_), max_load_(0),
|
|
2086
1394
|
buckets_(x.bucket_count(), a)
|
|
@@ -2091,7 +1399,7 @@ namespace boost {
|
|
|
2091
1399
|
////////////////////////////////////////////////////////////////////////
|
|
2092
1400
|
// Swap and Move
|
|
2093
1401
|
|
|
2094
|
-
void swap_allocators(table& other, false_type)
|
|
1402
|
+
void swap_allocators(table& other, std::false_type)
|
|
2095
1403
|
{
|
|
2096
1404
|
boost::unordered::detail::func::ignore_unused_variable_warning(other);
|
|
2097
1405
|
|
|
@@ -2102,7 +1410,7 @@ namespace boost {
|
|
|
2102
1410
|
}
|
|
2103
1411
|
|
|
2104
1412
|
// Not nothrow swappable
|
|
2105
|
-
void swap(table& x, false_type)
|
|
1413
|
+
void swap(table& x, std::false_type)
|
|
2106
1414
|
{
|
|
2107
1415
|
if (this == &x) {
|
|
2108
1416
|
return;
|
|
@@ -2120,16 +1428,16 @@ namespace boost {
|
|
|
2120
1428
|
x.switch_functions();
|
|
2121
1429
|
|
|
2122
1430
|
buckets_.swap(x.buckets_);
|
|
2123
|
-
boost::
|
|
1431
|
+
boost::core::invoke_swap(size_, x.size_);
|
|
2124
1432
|
std::swap(mlf_, x.mlf_);
|
|
2125
1433
|
std::swap(max_load_, x.max_load_);
|
|
2126
1434
|
}
|
|
2127
1435
|
|
|
2128
1436
|
// Nothrow swappable
|
|
2129
|
-
void swap(table& x, true_type)
|
|
1437
|
+
void swap(table& x, std::true_type)
|
|
2130
1438
|
{
|
|
2131
1439
|
buckets_.swap(x.buckets_);
|
|
2132
|
-
boost::
|
|
1440
|
+
boost::core::invoke_swap(size_, x.size_);
|
|
2133
1441
|
std::swap(mlf_, x.mlf_);
|
|
2134
1442
|
std::swap(max_load_, x.max_load_);
|
|
2135
1443
|
this->current_functions().swap(x.current_functions());
|
|
@@ -2143,8 +1451,7 @@ namespace boost {
|
|
|
2143
1451
|
BOOST_ASSERT(boost::allocator_propagate_on_container_swap<
|
|
2144
1452
|
node_allocator_type>::type::value ||
|
|
2145
1453
|
node_alloc() == x.node_alloc());
|
|
2146
|
-
swap(x,
|
|
2147
|
-
functions::nothrow_swappable>());
|
|
1454
|
+
swap(x, std::integral_constant<bool, functions::nothrow_swappable>());
|
|
2148
1455
|
}
|
|
2149
1456
|
|
|
2150
1457
|
// Only call with nodes allocated with the currect allocator, or
|
|
@@ -2152,7 +1459,7 @@ namespace boost {
|
|
|
2152
1459
|
// allocators might have already been moved).
|
|
2153
1460
|
void move_buckets_from(table& other)
|
|
2154
1461
|
{
|
|
2155
|
-
buckets_ =
|
|
1462
|
+
buckets_ = std::move(other.buckets_);
|
|
2156
1463
|
|
|
2157
1464
|
size_ = other.size_;
|
|
2158
1465
|
max_load_ = other.max_load_;
|
|
@@ -2173,20 +1480,18 @@ namespace boost {
|
|
|
2173
1480
|
return;
|
|
2174
1481
|
}
|
|
2175
1482
|
|
|
2176
|
-
BOOST_ASSERT(
|
|
2177
|
-
buckets_.bucket_count() == src.buckets_.bucket_count());
|
|
1483
|
+
BOOST_ASSERT(buckets_.bucket_count() == src.buckets_.bucket_count());
|
|
2178
1484
|
|
|
2179
1485
|
this->reserve(src.size_);
|
|
2180
1486
|
for (iterator pos = src.begin(); pos != src.end(); ++pos) {
|
|
2181
1487
|
node_tmp b(detail::func::construct_node(
|
|
2182
|
-
this->node_alloc(),
|
|
1488
|
+
this->node_alloc(), std::move(pos.p->value())),
|
|
2183
1489
|
this->node_alloc());
|
|
2184
1490
|
|
|
2185
1491
|
const_key_type& k = this->get_key(b.node_);
|
|
2186
1492
|
std::size_t key_hash = this->hash(k);
|
|
2187
1493
|
|
|
2188
|
-
bucket_iterator itb =
|
|
2189
|
-
buckets_.at(buckets_.position(key_hash));
|
|
1494
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2190
1495
|
buckets_.insert_node(itb, b.release());
|
|
2191
1496
|
++size_;
|
|
2192
1497
|
}
|
|
@@ -2203,6 +1508,7 @@ namespace boost {
|
|
|
2203
1508
|
|
|
2204
1509
|
value_allocator val_alloc(alloc);
|
|
2205
1510
|
boost::allocator_destroy(val_alloc, p->value_ptr());
|
|
1511
|
+
boost::unordered::detail::func::destroy(boost::to_address(p));
|
|
2206
1512
|
boost::allocator_deallocate(alloc, p, 1);
|
|
2207
1513
|
}
|
|
2208
1514
|
|
|
@@ -2232,17 +1538,17 @@ namespace boost {
|
|
|
2232
1538
|
template <typename UniqueType>
|
|
2233
1539
|
void assign(table const& x, UniqueType is_unique)
|
|
2234
1540
|
{
|
|
2235
|
-
typedef
|
|
1541
|
+
typedef
|
|
1542
|
+
typename boost::allocator_propagate_on_container_copy_assignment<
|
|
1543
|
+
node_allocator_type>::type pocca;
|
|
2236
1544
|
|
|
2237
1545
|
if (this != &x) {
|
|
2238
|
-
assign(x, is_unique,
|
|
2239
|
-
boost::unordered::detail::integral_constant<bool,
|
|
2240
|
-
pocca::value>());
|
|
1546
|
+
assign(x, is_unique, std::integral_constant<bool, pocca::value>());
|
|
2241
1547
|
}
|
|
2242
1548
|
}
|
|
2243
1549
|
|
|
2244
1550
|
template <typename UniqueType>
|
|
2245
|
-
void assign(table const
|
|
1551
|
+
void assign(table const& x, UniqueType is_unique, std::false_type)
|
|
2246
1552
|
{
|
|
2247
1553
|
// Strong exception safety.
|
|
2248
1554
|
this->construct_spare_functions(x.current_functions());
|
|
@@ -2265,15 +1571,12 @@ namespace boost {
|
|
|
2265
1571
|
}
|
|
2266
1572
|
|
|
2267
1573
|
template <typename UniqueType>
|
|
2268
|
-
void assign(table const
|
|
1574
|
+
void assign(table const& x, UniqueType is_unique, std::true_type)
|
|
2269
1575
|
{
|
|
2270
|
-
if (node_alloc() == x.node_alloc())
|
|
2271
|
-
{
|
|
1576
|
+
if (node_alloc() == x.node_alloc()) {
|
|
2272
1577
|
buckets_.reset_allocator(x.node_alloc());
|
|
2273
|
-
assign(x, is_unique, false_type());
|
|
2274
|
-
}
|
|
2275
|
-
else
|
|
2276
|
-
{
|
|
1578
|
+
assign(x, is_unique, std::false_type());
|
|
1579
|
+
} else {
|
|
2277
1580
|
bucket_array_type new_buckets(x.size_, x.node_alloc());
|
|
2278
1581
|
this->construct_spare_functions(x.current_functions());
|
|
2279
1582
|
this->switch_functions();
|
|
@@ -2282,15 +1585,14 @@ namespace boost {
|
|
|
2282
1585
|
// the new ones.
|
|
2283
1586
|
delete_buckets();
|
|
2284
1587
|
buckets_.reset_allocator(x.node_alloc());
|
|
2285
|
-
buckets_ =
|
|
1588
|
+
buckets_ = std::move(new_buckets);
|
|
2286
1589
|
|
|
2287
1590
|
// Copy over other data, all no throw.
|
|
2288
1591
|
mlf_ = x.mlf_;
|
|
2289
1592
|
reserve(x.size_);
|
|
2290
1593
|
|
|
2291
1594
|
// Finally copy the elements.
|
|
2292
|
-
if (x.size_)
|
|
2293
|
-
{
|
|
1595
|
+
if (x.size_) {
|
|
2294
1596
|
copy_buckets(x, is_unique);
|
|
2295
1597
|
}
|
|
2296
1598
|
}
|
|
@@ -2301,7 +1603,7 @@ namespace boost {
|
|
|
2301
1603
|
{
|
|
2302
1604
|
if (this != &x) {
|
|
2303
1605
|
move_assign(x, is_unique,
|
|
2304
|
-
|
|
1606
|
+
std::integral_constant<bool,
|
|
2305
1607
|
boost::allocator_propagate_on_container_move_assignment<
|
|
2306
1608
|
node_allocator_type>::type::value>());
|
|
2307
1609
|
}
|
|
@@ -2309,7 +1611,7 @@ namespace boost {
|
|
|
2309
1611
|
|
|
2310
1612
|
// Propagate allocator
|
|
2311
1613
|
template <typename UniqueType>
|
|
2312
|
-
void move_assign(table& x, UniqueType, true_type)
|
|
1614
|
+
void move_assign(table& x, UniqueType, std::true_type)
|
|
2313
1615
|
{
|
|
2314
1616
|
if (!functions::nothrow_move_assignable) {
|
|
2315
1617
|
this->construct_spare_functions(x.current_functions());
|
|
@@ -2326,7 +1628,7 @@ namespace boost {
|
|
|
2326
1628
|
|
|
2327
1629
|
// Don't propagate allocator
|
|
2328
1630
|
template <typename UniqueType>
|
|
2329
|
-
void move_assign(table& x, UniqueType is_unique, false_type)
|
|
1631
|
+
void move_assign(table& x, UniqueType is_unique, std::false_type)
|
|
2330
1632
|
{
|
|
2331
1633
|
if (node_alloc() == x.node_alloc()) {
|
|
2332
1634
|
move_assign_equal_alloc(x);
|
|
@@ -2378,8 +1680,7 @@ namespace boost {
|
|
|
2378
1680
|
return extractor::extract(n->value());
|
|
2379
1681
|
}
|
|
2380
1682
|
|
|
2381
|
-
template <class Key>
|
|
2382
|
-
std::size_t hash(Key const& k) const
|
|
1683
|
+
template <class Key> std::size_t hash(Key const& k) const
|
|
2383
1684
|
{
|
|
2384
1685
|
return this->hash_function()(k);
|
|
2385
1686
|
}
|
|
@@ -2387,8 +1688,7 @@ namespace boost {
|
|
|
2387
1688
|
// Find Node
|
|
2388
1689
|
|
|
2389
1690
|
template <class Key>
|
|
2390
|
-
node_pointer find_node_impl(
|
|
2391
|
-
Key const& x, bucket_iterator itb) const
|
|
1691
|
+
node_pointer find_node_impl(Key const& x, bucket_iterator itb) const
|
|
2392
1692
|
{
|
|
2393
1693
|
node_pointer p = node_pointer();
|
|
2394
1694
|
if (itb != buckets_.end()) {
|
|
@@ -2406,12 +1706,10 @@ namespace boost {
|
|
|
2406
1706
|
template <class Key> node_pointer find_node(Key const& k) const
|
|
2407
1707
|
{
|
|
2408
1708
|
std::size_t const key_hash = this->hash(k);
|
|
2409
|
-
return find_node_impl(
|
|
2410
|
-
k, buckets_.at(buckets_.position(key_hash)));
|
|
1709
|
+
return find_node_impl(k, buckets_.at(buckets_.position(key_hash)));
|
|
2411
1710
|
}
|
|
2412
1711
|
|
|
2413
|
-
node_pointer find_node(
|
|
2414
|
-
const_key_type& k, bucket_iterator itb) const
|
|
1712
|
+
node_pointer find_node(const_key_type& k, bucket_iterator itb) const
|
|
2415
1713
|
{
|
|
2416
1714
|
return find_node_impl(k, itb);
|
|
2417
1715
|
}
|
|
@@ -2444,8 +1742,8 @@ namespace boost {
|
|
|
2444
1742
|
{
|
|
2445
1743
|
if (size_ > 0) {
|
|
2446
1744
|
key_equal pred = this->key_eq();
|
|
2447
|
-
for (node_pointer* pp =
|
|
2448
|
-
|
|
1745
|
+
for (node_pointer* pp = std::addressof(itb->next); *pp;
|
|
1746
|
+
pp = std::addressof((*pp)->next)) {
|
|
2449
1747
|
if (pred(key, extractor::extract((*pp)->value()))) {
|
|
2450
1748
|
return pp;
|
|
2451
1749
|
}
|
|
@@ -2523,31 +1821,29 @@ namespace boost {
|
|
|
2523
1821
|
|
|
2524
1822
|
// Emplace/Insert
|
|
2525
1823
|
|
|
2526
|
-
template <
|
|
1824
|
+
template <typename... Args>
|
|
2527
1825
|
iterator emplace_hint_unique(
|
|
2528
|
-
c_iterator hint, const_key_type& k,
|
|
1826
|
+
c_iterator hint, const_key_type& k, Args&&... args)
|
|
2529
1827
|
{
|
|
2530
1828
|
if (hint.p && this->key_eq()(k, this->get_key(hint.p))) {
|
|
2531
1829
|
return iterator(hint.p, hint.itb);
|
|
2532
1830
|
} else {
|
|
2533
|
-
return emplace_unique(k,
|
|
1831
|
+
return emplace_unique(k, std::forward<Args>(args)...).first;
|
|
2534
1832
|
}
|
|
2535
1833
|
}
|
|
2536
1834
|
|
|
2537
|
-
template <
|
|
2538
|
-
emplace_return emplace_unique(
|
|
2539
|
-
const_key_type& k, BOOST_UNORDERED_EMPLACE_ARGS)
|
|
1835
|
+
template <typename... Args>
|
|
1836
|
+
emplace_return emplace_unique(const_key_type& k, Args&&... args)
|
|
2540
1837
|
{
|
|
2541
1838
|
std::size_t key_hash = this->hash(k);
|
|
2542
|
-
bucket_iterator itb =
|
|
2543
|
-
buckets_.at(buckets_.position(key_hash));
|
|
1839
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2544
1840
|
node_pointer pos = this->find_node_impl(k, itb);
|
|
2545
1841
|
|
|
2546
1842
|
if (pos) {
|
|
2547
1843
|
return emplace_return(iterator(pos, itb), false);
|
|
2548
1844
|
} else {
|
|
2549
1845
|
node_tmp b(boost::unordered::detail::func::construct_node_from_args(
|
|
2550
|
-
this->node_alloc(),
|
|
1846
|
+
this->node_alloc(), std::forward<Args>(args)...),
|
|
2551
1847
|
this->node_alloc());
|
|
2552
1848
|
|
|
2553
1849
|
if (size_ + 1 > max_load_) {
|
|
@@ -2563,12 +1859,11 @@ namespace boost {
|
|
|
2563
1859
|
}
|
|
2564
1860
|
}
|
|
2565
1861
|
|
|
2566
|
-
template <
|
|
2567
|
-
iterator emplace_hint_unique(
|
|
2568
|
-
c_iterator hint, no_key, BOOST_UNORDERED_EMPLACE_ARGS)
|
|
1862
|
+
template <typename... Args>
|
|
1863
|
+
iterator emplace_hint_unique(c_iterator hint, no_key, Args&&... args)
|
|
2569
1864
|
{
|
|
2570
1865
|
node_tmp b(boost::unordered::detail::func::construct_node_from_args(
|
|
2571
|
-
this->node_alloc(),
|
|
1866
|
+
this->node_alloc(), std::forward<Args>(args)...),
|
|
2572
1867
|
this->node_alloc());
|
|
2573
1868
|
|
|
2574
1869
|
const_key_type& k = this->get_key(b.node_);
|
|
@@ -2577,8 +1872,7 @@ namespace boost {
|
|
|
2577
1872
|
}
|
|
2578
1873
|
|
|
2579
1874
|
std::size_t const key_hash = this->hash(k);
|
|
2580
|
-
bucket_iterator itb =
|
|
2581
|
-
buckets_.at(buckets_.position(key_hash));
|
|
1875
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2582
1876
|
|
|
2583
1877
|
node_pointer p = this->find_node_impl(k, itb);
|
|
2584
1878
|
if (p) {
|
|
@@ -2596,18 +1890,17 @@ namespace boost {
|
|
|
2596
1890
|
return iterator(p, itb);
|
|
2597
1891
|
}
|
|
2598
1892
|
|
|
2599
|
-
template <
|
|
2600
|
-
emplace_return emplace_unique(no_key,
|
|
1893
|
+
template <typename... Args>
|
|
1894
|
+
emplace_return emplace_unique(no_key, Args&&... args)
|
|
2601
1895
|
{
|
|
2602
1896
|
node_tmp b(boost::unordered::detail::func::construct_node_from_args(
|
|
2603
|
-
this->node_alloc(),
|
|
1897
|
+
this->node_alloc(), std::forward<Args>(args)...),
|
|
2604
1898
|
this->node_alloc());
|
|
2605
1899
|
|
|
2606
1900
|
const_key_type& k = this->get_key(b.node_);
|
|
2607
1901
|
std::size_t key_hash = this->hash(k);
|
|
2608
1902
|
|
|
2609
|
-
bucket_iterator itb =
|
|
2610
|
-
buckets_.at(buckets_.position(key_hash));
|
|
1903
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2611
1904
|
node_pointer pos = this->find_node_impl(k, itb);
|
|
2612
1905
|
|
|
2613
1906
|
if (pos) {
|
|
@@ -2626,12 +1919,20 @@ namespace boost {
|
|
|
2626
1919
|
}
|
|
2627
1920
|
}
|
|
2628
1921
|
|
|
2629
|
-
template <typename
|
|
2630
|
-
emplace_return
|
|
1922
|
+
template <typename K, typename V>
|
|
1923
|
+
emplace_return emplace_unique(converting_key, K&& k, V&& v)
|
|
1924
|
+
{
|
|
1925
|
+
using alloc_cted = allocator_constructed<node_allocator_type,
|
|
1926
|
+
typename Types::key_type>;
|
|
1927
|
+
alloc_cted key(this->node_alloc(), std::forward<K>(k));
|
|
1928
|
+
return emplace_unique(
|
|
1929
|
+
key.value(), std::move(key.value()), std::forward<V>(v));
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
template <typename Key> emplace_return try_emplace_unique(Key&& k)
|
|
2631
1933
|
{
|
|
2632
1934
|
std::size_t key_hash = this->hash(k);
|
|
2633
|
-
bucket_iterator itb =
|
|
2634
|
-
buckets_.at(buckets_.position(key_hash));
|
|
1935
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2635
1936
|
|
|
2636
1937
|
node_pointer pos = this->find_node_impl(k, itb);
|
|
2637
1938
|
|
|
@@ -2640,8 +1941,10 @@ namespace boost {
|
|
|
2640
1941
|
} else {
|
|
2641
1942
|
node_allocator_type alloc = node_alloc();
|
|
2642
1943
|
|
|
2643
|
-
|
|
2644
|
-
|
|
1944
|
+
value_type* dispatch = BOOST_NULLPTR;
|
|
1945
|
+
|
|
1946
|
+
node_tmp tmp(detail::func::construct_node_from_key(
|
|
1947
|
+
dispatch, alloc, std::forward<Key>(k)),
|
|
2645
1948
|
alloc);
|
|
2646
1949
|
|
|
2647
1950
|
if (size_ + 1 > max_load_) {
|
|
@@ -2658,22 +1961,20 @@ namespace boost {
|
|
|
2658
1961
|
}
|
|
2659
1962
|
|
|
2660
1963
|
template <typename Key>
|
|
2661
|
-
iterator try_emplace_hint_unique(c_iterator hint,
|
|
1964
|
+
iterator try_emplace_hint_unique(c_iterator hint, Key&& k)
|
|
2662
1965
|
{
|
|
2663
|
-
if (hint.p && this->key_eq()(hint
|
|
1966
|
+
if (hint.p && this->key_eq()(extractor::extract(*hint), k)) {
|
|
2664
1967
|
return iterator(hint.p, hint.itb);
|
|
2665
1968
|
} else {
|
|
2666
1969
|
return try_emplace_unique(k).first;
|
|
2667
1970
|
}
|
|
2668
1971
|
}
|
|
2669
1972
|
|
|
2670
|
-
template <typename Key,
|
|
2671
|
-
emplace_return try_emplace_unique(
|
|
2672
|
-
BOOST_FWD_REF(Key) k, BOOST_UNORDERED_EMPLACE_ARGS)
|
|
1973
|
+
template <typename Key, typename... Args>
|
|
1974
|
+
emplace_return try_emplace_unique(Key&& k, Args&&... args)
|
|
2673
1975
|
{
|
|
2674
1976
|
std::size_t key_hash = this->hash(k);
|
|
2675
|
-
bucket_iterator itb =
|
|
2676
|
-
buckets_.at(buckets_.position(key_hash));
|
|
1977
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2677
1978
|
|
|
2678
1979
|
node_pointer pos = this->find_node_impl(k, itb);
|
|
2679
1980
|
|
|
@@ -2683,7 +1984,7 @@ namespace boost {
|
|
|
2683
1984
|
|
|
2684
1985
|
node_tmp b(
|
|
2685
1986
|
boost::unordered::detail::func::construct_node_pair_from_args(
|
|
2686
|
-
this->node_alloc(), k,
|
|
1987
|
+
this->node_alloc(), k, std::forward<Args>(args)...),
|
|
2687
1988
|
this->node_alloc());
|
|
2688
1989
|
|
|
2689
1990
|
if (size_ + 1 > max_load_) {
|
|
@@ -2698,34 +1999,32 @@ namespace boost {
|
|
|
2698
1999
|
return emplace_return(iterator(pos, itb), true);
|
|
2699
2000
|
}
|
|
2700
2001
|
|
|
2701
|
-
template <typename Key,
|
|
2002
|
+
template <typename Key, typename... Args>
|
|
2702
2003
|
iterator try_emplace_hint_unique(
|
|
2703
|
-
c_iterator hint,
|
|
2004
|
+
c_iterator hint, Key&& k, Args&&... args)
|
|
2704
2005
|
{
|
|
2705
2006
|
if (hint.p && this->key_eq()(hint->first, k)) {
|
|
2706
2007
|
return iterator(hint.p, hint.itb);
|
|
2707
2008
|
} else {
|
|
2708
|
-
return try_emplace_unique(k,
|
|
2009
|
+
return try_emplace_unique(k, std::forward<Args>(args)...).first;
|
|
2709
2010
|
}
|
|
2710
2011
|
}
|
|
2711
2012
|
|
|
2712
2013
|
template <typename Key, typename M>
|
|
2713
|
-
emplace_return insert_or_assign_unique(
|
|
2714
|
-
BOOST_FWD_REF(Key) k, BOOST_FWD_REF(M) obj)
|
|
2014
|
+
emplace_return insert_or_assign_unique(Key&& k, M&& obj)
|
|
2715
2015
|
{
|
|
2716
2016
|
std::size_t key_hash = this->hash(k);
|
|
2717
|
-
bucket_iterator itb =
|
|
2718
|
-
buckets_.at(buckets_.position(key_hash));
|
|
2017
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2719
2018
|
|
|
2720
2019
|
node_pointer p = this->find_node_impl(k, itb);
|
|
2721
2020
|
if (p) {
|
|
2722
|
-
p->value().second =
|
|
2021
|
+
p->value().second = std::forward<M>(obj);
|
|
2723
2022
|
return emplace_return(iterator(p, itb), false);
|
|
2724
2023
|
}
|
|
2725
2024
|
|
|
2726
|
-
node_tmp b(
|
|
2727
|
-
|
|
2728
|
-
|
|
2025
|
+
node_tmp b(
|
|
2026
|
+
boost::unordered::detail::func::construct_node_pair(
|
|
2027
|
+
this->node_alloc(), std::forward<Key>(k), std::forward<M>(obj)),
|
|
2729
2028
|
node_alloc());
|
|
2730
2029
|
|
|
2731
2030
|
if (size_ + 1 > max_load_) {
|
|
@@ -2752,13 +2051,12 @@ namespace boost {
|
|
|
2752
2051
|
|
|
2753
2052
|
const_key_type& k = this->get_key(np.ptr_);
|
|
2754
2053
|
std::size_t const key_hash = this->hash(k);
|
|
2755
|
-
bucket_iterator itb =
|
|
2756
|
-
buckets_.at(buckets_.position(key_hash));
|
|
2054
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2757
2055
|
node_pointer p = this->find_node_impl(k, itb);
|
|
2758
2056
|
|
|
2759
2057
|
if (p) {
|
|
2760
2058
|
iterator pos(p, itb);
|
|
2761
|
-
result.node =
|
|
2059
|
+
result.node = std::move(np);
|
|
2762
2060
|
result.position = pos;
|
|
2763
2061
|
result.inserted = false;
|
|
2764
2062
|
return;
|
|
@@ -2791,8 +2089,7 @@ namespace boost {
|
|
|
2791
2089
|
}
|
|
2792
2090
|
|
|
2793
2091
|
std::size_t const key_hash = this->hash(k);
|
|
2794
|
-
bucket_iterator itb =
|
|
2795
|
-
buckets_.at(buckets_.position(key_hash));
|
|
2092
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2796
2093
|
node_pointer p = this->find_node_impl(k, itb);
|
|
2797
2094
|
if (p) {
|
|
2798
2095
|
return iterator(p, itb);
|
|
@@ -2815,8 +2112,8 @@ namespace boost {
|
|
|
2815
2112
|
void merge_unique(boost::unordered::detail::table<Types2>& other)
|
|
2816
2113
|
{
|
|
2817
2114
|
typedef boost::unordered::detail::table<Types2> other_table;
|
|
2818
|
-
|
|
2819
|
-
typename other_table::node_type>::value));
|
|
2115
|
+
BOOST_UNORDERED_STATIC_ASSERT(
|
|
2116
|
+
(std::is_same<node_type, typename other_table::node_type>::value));
|
|
2820
2117
|
BOOST_ASSERT(this->node_alloc() == other.node_alloc());
|
|
2821
2118
|
|
|
2822
2119
|
if (other.size_ == 0) {
|
|
@@ -2830,8 +2127,7 @@ namespace boost {
|
|
|
2830
2127
|
const_key_type& key = other.get_key(pos.p);
|
|
2831
2128
|
std::size_t const key_hash = this->hash(key);
|
|
2832
2129
|
|
|
2833
|
-
bucket_iterator itb =
|
|
2834
|
-
buckets_.at(buckets_.position(key_hash));
|
|
2130
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
2835
2131
|
|
|
2836
2132
|
if (this->find_node_impl(key, itb)) {
|
|
2837
2133
|
++pos;
|
|
@@ -2916,14 +2212,15 @@ namespace boost {
|
|
|
2916
2212
|
return 1;
|
|
2917
2213
|
}
|
|
2918
2214
|
|
|
2919
|
-
iterator erase_node(c_iterator pos)
|
|
2215
|
+
iterator erase_node(c_iterator pos)
|
|
2216
|
+
{
|
|
2920
2217
|
c_iterator next = pos;
|
|
2921
2218
|
++next;
|
|
2922
|
-
|
|
2219
|
+
|
|
2923
2220
|
bucket_iterator itb = pos.itb;
|
|
2924
|
-
node_pointer* pp =
|
|
2221
|
+
node_pointer* pp = std::addressof(itb->next);
|
|
2925
2222
|
while (*pp != pos.p) {
|
|
2926
|
-
pp =
|
|
2223
|
+
pp = std::addressof((*pp)->next);
|
|
2927
2224
|
}
|
|
2928
2225
|
|
|
2929
2226
|
buckets_.extract_node_after(itb, pp);
|
|
@@ -2944,9 +2241,9 @@ namespace boost {
|
|
|
2944
2241
|
// each bucket group so we have to retrieve it manually by iterating
|
|
2945
2242
|
//
|
|
2946
2243
|
bucket_iterator itb = first.itb;
|
|
2947
|
-
node_pointer* pp =
|
|
2244
|
+
node_pointer* pp = std::addressof(itb->next);
|
|
2948
2245
|
while (*pp != first.p) {
|
|
2949
|
-
pp =
|
|
2246
|
+
pp = std::addressof((*pp)->next);
|
|
2950
2247
|
}
|
|
2951
2248
|
|
|
2952
2249
|
while (*pp != last.p) {
|
|
@@ -2956,7 +2253,6 @@ namespace boost {
|
|
|
2956
2253
|
this->delete_node(p);
|
|
2957
2254
|
--size_;
|
|
2958
2255
|
|
|
2959
|
-
|
|
2960
2256
|
bool const at_end = !(*pp);
|
|
2961
2257
|
bool const is_empty_bucket = !itb->next;
|
|
2962
2258
|
|
|
@@ -2966,7 +2262,7 @@ namespace boost {
|
|
|
2966
2262
|
} else {
|
|
2967
2263
|
++itb;
|
|
2968
2264
|
}
|
|
2969
|
-
pp =
|
|
2265
|
+
pp = std::addressof(itb->next);
|
|
2970
2266
|
}
|
|
2971
2267
|
}
|
|
2972
2268
|
|
|
@@ -2976,7 +2272,7 @@ namespace boost {
|
|
|
2976
2272
|
////////////////////////////////////////////////////////////////////////
|
|
2977
2273
|
// fill_buckets_unique
|
|
2978
2274
|
|
|
2979
|
-
void copy_buckets(table const& src, true_type)
|
|
2275
|
+
void copy_buckets(table const& src, std::true_type)
|
|
2980
2276
|
{
|
|
2981
2277
|
BOOST_ASSERT(size_ == 0);
|
|
2982
2278
|
|
|
@@ -2997,7 +2293,7 @@ namespace boost {
|
|
|
2997
2293
|
}
|
|
2998
2294
|
}
|
|
2999
2295
|
|
|
3000
|
-
void move_assign_buckets(table& src, true_type)
|
|
2296
|
+
void move_assign_buckets(table& src, std::true_type)
|
|
3001
2297
|
{
|
|
3002
2298
|
BOOST_ASSERT(size_ == 0);
|
|
3003
2299
|
BOOST_ASSERT(max_load_ >= src.size_);
|
|
@@ -3006,14 +2302,14 @@ namespace boost {
|
|
|
3006
2302
|
node_allocator_type alloc = this->node_alloc();
|
|
3007
2303
|
|
|
3008
2304
|
for (iterator pos = src.begin(); pos != last; ++pos) {
|
|
3009
|
-
value_type value =
|
|
2305
|
+
value_type value = std::move(*pos);
|
|
3010
2306
|
const_key_type& key = extractor::extract(value);
|
|
3011
2307
|
std::size_t const key_hash = this->hash(key);
|
|
3012
2308
|
|
|
3013
2309
|
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
3014
2310
|
|
|
3015
2311
|
node_tmp tmp(
|
|
3016
|
-
detail::func::construct_node(alloc,
|
|
2312
|
+
detail::func::construct_node(alloc, std::move(value)), alloc);
|
|
3017
2313
|
|
|
3018
2314
|
buckets_.insert_node(itb, tmp.release());
|
|
3019
2315
|
++size_;
|
|
@@ -3051,8 +2347,8 @@ namespace boost {
|
|
|
3051
2347
|
return true;
|
|
3052
2348
|
}
|
|
3053
2349
|
|
|
3054
|
-
static bool group_equals_equiv(
|
|
3055
|
-
iterator n2, iterator end2)
|
|
2350
|
+
static bool group_equals_equiv(
|
|
2351
|
+
iterator n1, iterator end1, iterator n2, iterator end2)
|
|
3056
2352
|
{
|
|
3057
2353
|
for (;;) {
|
|
3058
2354
|
if (*n1 != *n2)
|
|
@@ -3100,8 +2396,7 @@ namespace boost {
|
|
|
3100
2396
|
return true;
|
|
3101
2397
|
}
|
|
3102
2398
|
|
|
3103
|
-
static bool find_equiv(
|
|
3104
|
-
iterator n, iterator last, value_type const& v)
|
|
2399
|
+
static bool find_equiv(iterator n, iterator last, value_type const& v)
|
|
3105
2400
|
{
|
|
3106
2401
|
for (; n != last; ++n)
|
|
3107
2402
|
if (*n == v)
|
|
@@ -3126,8 +2421,7 @@ namespace boost {
|
|
|
3126
2421
|
node_tmp a(n, this->node_alloc());
|
|
3127
2422
|
const_key_type& k = this->get_key(a.node_);
|
|
3128
2423
|
std::size_t key_hash = this->hash(k);
|
|
3129
|
-
bucket_iterator itb =
|
|
3130
|
-
buckets_.at(buckets_.position(key_hash));
|
|
2424
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
3131
2425
|
node_pointer hint = this->find_node_impl(k, itb);
|
|
3132
2426
|
|
|
3133
2427
|
if (size_ + 1 > max_load_) {
|
|
@@ -3195,8 +2489,7 @@ namespace boost {
|
|
|
3195
2489
|
const_key_type& k = this->get_key(np.ptr_);
|
|
3196
2490
|
std::size_t key_hash = this->hash(k);
|
|
3197
2491
|
|
|
3198
|
-
bucket_iterator itb =
|
|
3199
|
-
buckets_.at(buckets_.position(key_hash));
|
|
2492
|
+
bucket_iterator itb = buckets_.at(buckets_.position(key_hash));
|
|
3200
2493
|
|
|
3201
2494
|
node_pointer hint = this->find_node_impl(k, itb);
|
|
3202
2495
|
buckets_.insert_node_hint(itb, np.ptr_, hint);
|
|
@@ -3325,7 +2618,7 @@ namespace boost {
|
|
|
3325
2618
|
////////////////////////////////////////////////////////////////////////
|
|
3326
2619
|
// fill_buckets
|
|
3327
2620
|
|
|
3328
|
-
void copy_buckets(table const& src, false_type)
|
|
2621
|
+
void copy_buckets(table const& src, std::false_type)
|
|
3329
2622
|
{
|
|
3330
2623
|
BOOST_ASSERT(size_ == 0);
|
|
3331
2624
|
|
|
@@ -3346,7 +2639,7 @@ namespace boost {
|
|
|
3346
2639
|
}
|
|
3347
2640
|
}
|
|
3348
2641
|
|
|
3349
|
-
void move_assign_buckets(table& src, false_type)
|
|
2642
|
+
void move_assign_buckets(table& src, std::false_type)
|
|
3350
2643
|
{
|
|
3351
2644
|
BOOST_ASSERT(size_ == 0);
|
|
3352
2645
|
BOOST_ASSERT(max_load_ >= src.size_);
|
|
@@ -3355,7 +2648,7 @@ namespace boost {
|
|
|
3355
2648
|
node_allocator_type alloc = this->node_alloc();
|
|
3356
2649
|
|
|
3357
2650
|
for (iterator pos = src.begin(); pos != last; ++pos) {
|
|
3358
|
-
value_type value =
|
|
2651
|
+
value_type value = std::move(*pos);
|
|
3359
2652
|
const_key_type& key = extractor::extract(value);
|
|
3360
2653
|
std::size_t const key_hash = this->hash(key);
|
|
3361
2654
|
|
|
@@ -3363,7 +2656,7 @@ namespace boost {
|
|
|
3363
2656
|
|
|
3364
2657
|
node_pointer hint = this->find_node_impl(key, itb);
|
|
3365
2658
|
node_tmp tmp(
|
|
3366
|
-
detail::func::construct_node(alloc,
|
|
2659
|
+
detail::func::construct_node(alloc, std::move(value)), alloc);
|
|
3367
2660
|
|
|
3368
2661
|
buckets_.insert_node_hint(itb, tmp.release(), hint);
|
|
3369
2662
|
++size_;
|
|
@@ -3380,7 +2673,7 @@ namespace boost {
|
|
|
3380
2673
|
for (; itb != last;) {
|
|
3381
2674
|
bucket_iterator next_itb = itb;
|
|
3382
2675
|
++next_itb;
|
|
3383
|
-
node_pointer* pp =
|
|
2676
|
+
node_pointer* pp = std::addressof(itb->next);
|
|
3384
2677
|
while (*pp) {
|
|
3385
2678
|
node_pointer p = *pp;
|
|
3386
2679
|
buckets_.extract_node_after(itb, pp);
|
|
@@ -3429,7 +2722,7 @@ namespace boost {
|
|
|
3429
2722
|
inline void table<Types>::rehash_impl(std::size_t num_buckets)
|
|
3430
2723
|
{
|
|
3431
2724
|
bucket_array_type new_buckets(
|
|
3432
|
-
num_buckets, buckets_.
|
|
2725
|
+
num_buckets, buckets_.get_allocator());
|
|
3433
2726
|
|
|
3434
2727
|
BOOST_TRY
|
|
3435
2728
|
{
|
|
@@ -3462,11 +2755,11 @@ namespace boost {
|
|
|
3462
2755
|
}
|
|
3463
2756
|
}
|
|
3464
2757
|
buckets_.unlink_empty_buckets();
|
|
3465
|
-
BOOST_RETHROW
|
|
2758
|
+
BOOST_RETHROW
|
|
3466
2759
|
}
|
|
3467
2760
|
BOOST_CATCH_END
|
|
3468
2761
|
|
|
3469
|
-
buckets_ =
|
|
2762
|
+
buckets_ = std::move(new_buckets);
|
|
3470
2763
|
recalculate_max_load();
|
|
3471
2764
|
}
|
|
3472
2765
|
|
|
@@ -3497,8 +2790,7 @@ namespace boost {
|
|
|
3497
2790
|
sizeof(choice2::type)
|
|
3498
2791
|
};
|
|
3499
2792
|
|
|
3500
|
-
typedef
|
|
3501
|
-
typename boost::conditional<value, Key const&, no_key>::type type;
|
|
2793
|
+
typedef typename std::conditional<value, Key const&, no_key>::type type;
|
|
3502
2794
|
};
|
|
3503
2795
|
|
|
3504
2796
|
template <class ValueType> struct set_extractor
|
|
@@ -3508,10 +2800,7 @@ namespace boost {
|
|
|
3508
2800
|
|
|
3509
2801
|
static key_type const& extract(value_type const& v) { return v; }
|
|
3510
2802
|
|
|
3511
|
-
static key_type const& extract(
|
|
3512
|
-
{
|
|
3513
|
-
return v;
|
|
3514
|
-
}
|
|
2803
|
+
static key_type const& extract(value_type&& v) { return v; }
|
|
3515
2804
|
|
|
3516
2805
|
static no_key extract() { return no_key(); }
|
|
3517
2806
|
|
|
@@ -3520,25 +2809,17 @@ namespace boost {
|
|
|
3520
2809
|
return no_key();
|
|
3521
2810
|
}
|
|
3522
2811
|
|
|
3523
|
-
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
3524
2812
|
template <class Arg1, class Arg2, class... Args>
|
|
3525
2813
|
static no_key extract(Arg1 const&, Arg2 const&, Args const&...)
|
|
3526
2814
|
{
|
|
3527
2815
|
return no_key();
|
|
3528
2816
|
}
|
|
3529
|
-
#else
|
|
3530
|
-
template <class Arg1, class Arg2>
|
|
3531
|
-
static no_key extract(Arg1 const&, Arg2 const&)
|
|
3532
|
-
{
|
|
3533
|
-
return no_key();
|
|
3534
|
-
}
|
|
3535
|
-
#endif
|
|
3536
2817
|
};
|
|
3537
2818
|
|
|
3538
2819
|
template <class ValueType> struct map_extractor
|
|
3539
2820
|
{
|
|
3540
2821
|
typedef ValueType value_type;
|
|
3541
|
-
typedef typename
|
|
2822
|
+
typedef typename std::remove_const<typename boost::unordered::detail::
|
|
3542
2823
|
pair_traits<ValueType>::first_type>::type key_type;
|
|
3543
2824
|
|
|
3544
2825
|
static key_type const& extract(value_type const& v) { return v.first; }
|
|
@@ -3556,22 +2837,6 @@ namespace boost {
|
|
|
3556
2837
|
return v.first;
|
|
3557
2838
|
}
|
|
3558
2839
|
|
|
3559
|
-
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
3560
|
-
template <class Second>
|
|
3561
|
-
static key_type const& extract(
|
|
3562
|
-
boost::rv<std::pair<key_type, Second> > const& v)
|
|
3563
|
-
{
|
|
3564
|
-
return v.first;
|
|
3565
|
-
}
|
|
3566
|
-
|
|
3567
|
-
template <class Second>
|
|
3568
|
-
static key_type const& extract(
|
|
3569
|
-
boost::rv<std::pair<key_type const, Second> > const& v)
|
|
3570
|
-
{
|
|
3571
|
-
return v.first;
|
|
3572
|
-
}
|
|
3573
|
-
#endif
|
|
3574
|
-
|
|
3575
2840
|
template <class Arg1>
|
|
3576
2841
|
static key_type const& extract(key_type const& k, Arg1 const&)
|
|
3577
2842
|
{
|
|
@@ -3586,63 +2851,40 @@ namespace boost {
|
|
|
3586
2851
|
}
|
|
3587
2852
|
|
|
3588
2853
|
template <class Arg1, class Arg2>
|
|
3589
|
-
static
|
|
2854
|
+
static typename std::conditional<
|
|
2855
|
+
(is_similar<Arg1, key_type>::value ||
|
|
2856
|
+
is_complete_and_move_constructible<key_type>::value),
|
|
2857
|
+
converting_key, no_key>::type
|
|
2858
|
+
extract(Arg1 const&, Arg2 const&)
|
|
3590
2859
|
{
|
|
3591
|
-
return
|
|
2860
|
+
return {};
|
|
3592
2861
|
}
|
|
3593
2862
|
|
|
3594
|
-
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
3595
2863
|
template <class Arg1, class Arg2, class Arg3, class... Args>
|
|
3596
2864
|
static no_key extract(
|
|
3597
2865
|
Arg1 const&, Arg2 const&, Arg3 const&, Args const&...)
|
|
3598
2866
|
{
|
|
3599
2867
|
return no_key();
|
|
3600
2868
|
}
|
|
3601
|
-
#endif
|
|
3602
|
-
|
|
3603
|
-
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
|
3604
|
-
|
|
3605
|
-
#define BOOST_UNORDERED_KEY_FROM_TUPLE(namespace_) \
|
|
3606
|
-
template <typename T2> \
|
|
3607
|
-
static no_key extract(boost::unordered::piecewise_construct_t, \
|
|
3608
|
-
namespace_ tuple<> const&, T2 const&) \
|
|
3609
|
-
{ \
|
|
3610
|
-
return no_key(); \
|
|
3611
|
-
} \
|
|
3612
|
-
\
|
|
3613
|
-
template <typename T, typename T2> \
|
|
3614
|
-
static typename is_key<key_type, T>::type extract( \
|
|
3615
|
-
boost::unordered::piecewise_construct_t, namespace_ tuple<T> const& k, \
|
|
3616
|
-
T2 const&) \
|
|
3617
|
-
{ \
|
|
3618
|
-
return typename is_key<key_type, T>::type(namespace_ get<0>(k)); \
|
|
3619
|
-
}
|
|
3620
|
-
|
|
3621
|
-
#else
|
|
3622
2869
|
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
\
|
|
3630
|
-
template <typename T> \
|
|
3631
|
-
static typename is_key<key_type, T>::type extract( \
|
|
3632
|
-
boost::unordered::piecewise_construct_t, namespace_ tuple<T> const& k) \
|
|
3633
|
-
{ \
|
|
3634
|
-
return typename is_key<key_type, T>::type(namespace_ get<0>(k)); \
|
|
3635
|
-
}
|
|
3636
|
-
|
|
3637
|
-
#endif
|
|
3638
|
-
|
|
3639
|
-
BOOST_UNORDERED_KEY_FROM_TUPLE(boost::)
|
|
3640
|
-
|
|
3641
|
-
#if BOOST_UNORDERED_TUPLE_ARGS
|
|
3642
|
-
BOOST_UNORDERED_KEY_FROM_TUPLE(std::)
|
|
3643
|
-
#endif
|
|
2870
|
+
template <template <class...> class Tuple, typename T2>
|
|
2871
|
+
static no_key extract(
|
|
2872
|
+
std::piecewise_construct_t, Tuple<> const&, T2 const&)
|
|
2873
|
+
{
|
|
2874
|
+
return no_key();
|
|
2875
|
+
}
|
|
3644
2876
|
|
|
3645
|
-
|
|
2877
|
+
template <template <typename...> class Tuple, typename T, typename T2,
|
|
2878
|
+
typename... Args>
|
|
2879
|
+
static auto extract(
|
|
2880
|
+
std::piecewise_construct_t, Tuple<T, Args...> const& k, T2 const&) ->
|
|
2881
|
+
typename std::enable_if<
|
|
2882
|
+
!std::is_same<T, boost::tuples::null_type>::value,
|
|
2883
|
+
typename is_key<key_type, T>::type>::type
|
|
2884
|
+
{
|
|
2885
|
+
using std::get;
|
|
2886
|
+
return typename is_key<key_type, T>::type(get<0>(k));
|
|
2887
|
+
}
|
|
3646
2888
|
};
|
|
3647
2889
|
|
|
3648
2890
|
template <class Container, class Predicate>
|
|
@@ -3663,12 +2905,8 @@ namespace boost {
|
|
|
3663
2905
|
|
|
3664
2906
|
return (size - c.size());
|
|
3665
2907
|
}
|
|
3666
|
-
}
|
|
3667
|
-
}
|
|
3668
|
-
}
|
|
3669
|
-
|
|
3670
|
-
#undef BOOST_UNORDERED_EMPLACE_TEMPLATE
|
|
3671
|
-
#undef BOOST_UNORDERED_EMPLACE_ARGS
|
|
3672
|
-
#undef BOOST_UNORDERED_EMPLACE_FORWARD
|
|
2908
|
+
} // namespace detail
|
|
2909
|
+
} // namespace unordered
|
|
2910
|
+
} // namespace boost
|
|
3673
2911
|
|
|
3674
2912
|
#endif
|